当前位置: 首页 > news >正文

能让PDF看起来像是扫描件的Look Scanned

在这里插入图片描述

什么是 Look Scanned ?

Look Scanned 是一个能够让 PDF 看起来就像是扫描件一样的纯前端网站。你再也不需要麻烦地打印之后扫描了,你所需要的就是鼠标点几下。

这是个挺有意思的软件,但是老苏不确定什么场景下会用到这个软件,如果不想自己搭建的话,可以去试试官方的在线演示:https://zh.lookscanned.io/

构建镜像

如果你不想自己构建,可以跳过,直接阅读下一章节

这是一个前端项目,所以老苏用了一贯使用的标准 Dockerfile 模板

【注意】:这个镜像实际上是有问题的,正常使用当然没问题,但是刷新页面会显示 404 Not Found,应该需要用自己的 nginx.conf 而不是默认的,不过老苏也不会,所以这个镜像只适用于功能体验

FROM node:16.14 as build-deps
MAINTAINER laosu<wbsu2003@gmail.com>    WORKDIR /app
COPY . ./
RUN npm install
RUN npm run buildFROM nginx:1.12-alpine
COPY --from=build-deps /app/dist /usr/share/nginx/htmlEXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

构建镜像和容器运行的基本命令如下👇

# 下载代码
git clone https://github.com/rwv/lookscanned.io.git# 或者加个代理
git clone https://ghproxy.com/github.com/rwv/lookscanned.io.git# 进入目录  
cd lookscanned.io# 构建镜像
docker build -t wbsu2003/lookscanned:v1 .# 运行容器
docker run -d \--name lookscanned \-p 3366:80 \wbsu2003/lookscanned:v1

【注意】:如果编译镜像的主机内存比较小,比如只有 2G 时,在执行 npm run build 时可能会遇到下面的错误

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 lookscanned ,选择第四个 wbsu2003/lookscanned,版本选择 latest

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
336680

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行容器
docker run -d \--name lookscanned \-p 3366:80 \wbsu2003/lookscanned

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:lookscanned:image: wbsu2003/lookscannedcontainer_name: lookscannedrestart: unless-stoppedports:- 3366:80

然后执行下面的命令

# 新建文件夹 lookscanned 和 子目录
mkdir -p /volume1/docker/lookscanned# 进入 lookscanned 目录
cd /volume1/docker/lookscanned# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3366 就能看到主界面

在这里插入图片描述

开始扫描,显示的是内置的文档演示效果

在这里插入图片描述

可以点 选择 PDF 文件 来更换你自己的 pdf 文件

在这里插入图片描述

扫描参数包括了:

  • 颜色:这是开关参数,默认为 黑白,可切换为 彩色
  • 边框:这是开关参数,默认为不启用;
  • 旋转角度:默认为
  • 旋转角度的随机度:默认为 ±0.5°
  • 模糊:默认为 0.5
  • 噪点::默认为 0.25
  • 分辨率::默认为 2x,这个参数没搞明白,或者说和老苏理解的不一样;

每次参数做了修改,需要点 预览 让参数生效,最后可以 保存 到本地

在这里插入图片描述

参考文档

rwv/lookscanned.io: 📚 LookScanned.io - Make your PDFs look scanned
地址:https://github.com/rwv/lookscanned.io

Look Scanned
地址:https://zh.lookscanned.io/

相关文章:

能让PDF看起来像是扫描件的Look Scanned

什么是 Look Scanned ? Look Scanned 是一个能够让 PDF 看起来就像是扫描件一样的纯前端网站。你再也不需要麻烦地打印之后扫描了&#xff0c;你所需要的就是鼠标点几下。 这是个挺有意思的软件&#xff0c;但是老苏不确定什么场景下会用到这个软件&#xff0c;如果不想自己搭…...

RT-DETR 更换损失函数之 SIoU / EIoU / WIoU / Focal_xIoU

文章目录 更换方式CIoUDIoUEIoUGIoUSIoUWIoUFocal_CIoUFocal_DIoUFocal_EIoUFocal_GIoUFocal_SIoU提示更换方式 第一步:将ultralytics/ultralytics/utils/metrics.py文件中的bbox_iou替换为如下的代码:class...

代码随想录算法训练营第四十六天 | 139.单词拆分,多重背包,背包问题总结

目录 139.单词拆分 多重背包 背包问题总结 01背包 完全背包 多重背包 139.单词拆分 题目链接&#xff1a;139. 单词拆分 不要求字典中的单词全部使用&#xff0c;但是要求拆分的单词拆分成的每一个子串都是字典中的单词。 &#xff08;1&#xff09;dp[ i ] 表示前 i 个字符组成…...

opencv-Canny 边缘检测

Canny边缘检测是一种经典的图像边缘检测算法&#xff0c;它在图像中找到强度梯度的变化&#xff0c;从而识别出图像中的边缘。Canny边缘检测的优点包括高灵敏度和低误检率。 在OpenCV中&#xff0c;cv2.Canny() 函数用于执行Canny边缘检测。 基本语法如下&#xff1a; edges…...

案例023:基于微信小程序的童装商城的设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…...

Ansible的循环:loop,with_<lookup>和until

环境 管理节点&#xff1a;Ubuntu 22.04控制节点&#xff1a;CentOS 8Ansible&#xff1a;2.15.6 循环的方法 loopwith_<lookup>until 用这几种方式都可以实现循环。其中&#xff0c; loop 是推荐的用法&#xff0c;在很多时候能够替换 with_<lookup> 。 loop…...

点云 surface 方法总结

点云的表面方法是指通过点云数据来估计和重建物体或场景的表面几何形状。下面总结了几种常见的点云表面方法&#xff1a; 三角化&#xff1a;三角化是最常用的点云表面重建方法之一。它将点云中的点连接成三角形网格&#xff0c;从而重建出物体或场景的表面。常见的三角化算法…...

深入探索Linux文件系统:属性、路径与隐藏之谜

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; Linux系统理论 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️文件的组成☁️文件属性☁️文件内容☁️注意事项 &#x1f324;️路…...

梯度详解与优化实战

什么是梯度 对所有自变量求偏微分构成的向量&#xff0c;它是一个向量&#xff08;有大小和函数值增长方向&#xff09; 导数是一个标量 找最小值点坐标的案例 import torchimport numpy as np import matplotlib.pyplot as plt def himmelblau(x):return (x[0]**2x[1]-11)…...

OSG编程指南<十二>:OSG二三维文字创建及文字特效

1、字体基础知识 适当的文字信息对于显示场景信息是非常重要的。在 OSG 中&#xff0c;osgText提供了向场景中添加文字的强大功能&#xff0c;由于有第三方插件 FreeType 的支持&#xff0c;它完全支持TrueType 字体。很多人可能对 FreeType 和 TrueType 还不太了解&#xff0c…...

visionOS空间计算实战开发教程Day 6 拖拽和点击

在之前的学习中我们在空间中添加了3D模型&#xff0c;但在初始摆放后就无法再对其进行移动或做出修改。本节我们在​​Day 5​​显示和隐藏的基础上让我们模型可以实现拖拽效果&#xff0c;同时对纯色的立方体实现点击随机换色的功能。 首先是入口文件&#xff0c;无需做出改变…...

C# APS.NET CORE 6.0 WEB API IIS部署

1.创建 APS.NET CORE6.0 WEB API项目 默认选项即可 源代码&#xff1a; 项目文件展开&#xff1a; launchSettings.json {"$schema": "https://json.schemastore.org/launchsettings.json","iisSettings": {"windowsAuthentication"…...

C/C++ 常用加密与解密算法

计算机安全和数据隐私是现代应用程序设计中至关重要的方面。为了确保数据的机密性和完整性&#xff0c;常常需要使用加密和解密算法。C是一种广泛使用的编程语言&#xff0c;提供了许多加密和解密算法的实现。本文将介绍一些在C中常用的加密与解密算法&#xff0c;这其中包括Xo…...

从Qt源码的角度分析Qt对象树与内存管理模式

作者:令狐掌门 技术交流QQ群:675120140 csdn博客:https://mingshiqiang.blog.csdn.net/ 文章目录 一、Qt对象树(Object Tree)和父子关系二、源码角度:QObject的内存管理构造函数析构函数addChild() 和 removeChild()三、C++模拟实现Qt的对象树内存管理模式Qt框架提供了一…...

MySQL与Redis如何保证数据的一致性

文章目录 MySQL与Redis如何保证数据的一致性&#xff1f;不好的方案1. 先写 MySQL&#xff0c;再写 Redis2. 先写 Redis&#xff0c;再写 MySQL3. 先删除 Redis&#xff0c;再写 MySQL 好的方案4. 先删除 Redis&#xff0c;再写 MySQL&#xff0c;再删除 Redis5. 先写 MySQL&am…...

micropython - espnow

espnow这个东西可以很简单的进行多设备近距离互联&#xff0c;连握手都不用注册一下就能发信息 目前8266那个8角的刷20231105的1M的固件可以运行 8266目前没有信号强度功能所以我自己写的类强度返回为0 我写的类实例化后最后注册谁发消息就是给谁而接收端则是什么都接&#xff…...

京东数据采集(京东数据运营):怎样快速获取京东市场大数据?

相信京东平台的很多品牌方们都有做数据分析的需求&#xff0c;但面对多而杂的市场数据&#xff0c;很多运营者都没有思路。单依靠肉眼来看&#xff0c;很多商品的类目、销售成绩、价格分布等运营者也未必清楚。 其实对于京东平台上市场数据的获取&#xff0c;品牌可以直接借助一…...

​重生奇迹mu迷宫攻略​

重生奇迹mu迷宫是一种比较有挑战性的游戏玩法&#xff0c;需要一定的技巧和策略才能完成。以下是一些基本的攻略和技巧&#xff1a; 了解每个迷宫的特点&#xff1a;不同的迷宫有不同的规则和特点&#xff0c;需要根据迷宫的特点来制定合理的策略。在进入迷宫前可以先了解一下…...

[网络] 4. HTTP/1.1 相比 HTTP/1.0 提高了什么性能?

HTTP/1.1 相比 HTTP/1.0 性能上的改进 ● 使用长连接的方式改善了 HTTP/1.0 短连接造成的性能开销。 ● 支持管道&#xff08;pipeline&#xff09;网络传输&#xff0c;只要第一个请求发出去了&#xff0c;不必等其回来&#xff0c;就可以发第二个请求出去&#xff0c;可以减…...

3.1.2 Linux时间子系统 hrtimer示例使用

文章目录 结构体定义接口初始化启动修改取消示例示例1示例2示例3结构体定义 struct hrtimer {struct timerqueue_node node;ktime_t _softexpires;enum hrtimer_restart...

【架构深度】RPA自动化+多线程高并发助力实现拼多多电商店群自动化运营

背景引入&#xff1a;自动化最怕的不是“跑不快”&#xff0c;而是“跑一半” 在主导过多个大型电商矩阵&#xff08;拼多多、妙手 ERP 等&#xff09;的自动化重构后&#xff0c;我发现 90% 的业务团队都会面临一个堪称噩梦的场景&#xff1a; 晚上 10 点&#xff0c;运营人…...

前端敏感数据国密SM2加密传输实战:从安全测试到代码落地

1. 当安全测试报告敲响警钟 那天下午&#xff0c;团队收到了甲方发来的安全测试报告。当我翻到"敏感信息明文传输"这一项时&#xff0c;后背突然一凉——我们的系统在传输用户手机号、银行卡号时&#xff0c;竟然像明信片一样毫无保护。这种中危漏洞就像把保险箱密码…...

海思Hi3516DV500/HI3519DV500开发实战:从SDK编译到多媒体例程验证

1. 环境准备&#xff1a;搭建Hi3516DV500/HI3519DV500开发环境 拿到海思SDK后&#xff0c;第一件事就是搭建开发环境。我建议使用Ubuntu 18.04或20.04系统&#xff0c;这是官方推荐的环境。安装完系统后&#xff0c;需要配置一些基础工具链&#xff1a; sudo apt-get update su…...

如何定制ayu主题UI:分隔符、滚动条和原生标题栏配置全指南

如何定制ayu主题UI&#xff1a;分隔符、滚动条和原生标题栏配置全指南 【免费下载链接】ayu &#x1f3a8;&#x1f58c; Modern, bright color theme for Sublime Text 项目地址: https://gitcode.com/gh_mirrors/ay/ayu ayu是一款现代明亮的Sublime Text颜色主题&…...

基于Simulink的基于扰动观测器(DOB)的负载扰动补偿​

目录 手把手教你学Simulink——基于Simulink的基于扰动观测器(DOB)的负载扰动补偿​ 摘要​ 一、背景与挑战​ 1.1 负载扰动补偿的痛点与传统控制局限​ 1.1.1 应用场景与核心指标​ 1.1.2 传统PI控制的缺陷​ 1.2 DOB负载扰动补偿的核心优势​ 1.3 设计目标​ 二、系…...

终极暗黑破坏神2现代化改造指南:d2dx宽屏补丁深度解析与实战配置

终极暗黑破坏神2现代化改造指南&#xff1a;d2dx宽屏补丁深度解析与实战配置 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx …...

智能楼宇电能管理系统:全链路监测,用电安全全程守护

一、应用背景 随着“双碳”战略推进与数字化转型加速&#xff0c;写字楼、商业综合体、酒店、产业园区等各类楼宇的电能管理已从传统的“安全供电”向“节能高效、智能管控、绿色低碳”升级。 当前多数楼宇存在电能消耗不透明、设备运维粗放、节能潜力未挖掘、故障响应滞后等痛…...

使用DevEco Studio创建你的第一个鸿蒙应用

首先我们打开安装好的DevEco Studio开发工具&#xff0c;点击“新建项目”&#xff1a;在新建项目界面&#xff0c;我们直接使用默认的“Empty Ability”模板&#xff0c;该模板可以直接生成一个带有Hello World页面的项目结构&#xff0c;直接点击“下一步”即可&#xff1a;配…...

全网最细!OpenClaw 工具系统深度解析:从原子能力到企业级安全,AI 智能体的“万能手脚“完全指南

一、前言&#xff1a;OpenClaw 工具——AI 智能体从"聊天"到"干活"的核心分水岭 当 AI 大模型&#xff08;GPT/Claude/Gemini&#xff09;解决了"思考与理解"的问题后&#xff0c;真正决定智能体价值的&#xff0c;是它能否落地执行、操作现实与…...

龙芯k - 走马观碑组MPU驱动移植扒

先回顾&#xff1a;三次握手&#xff08;建立连接&#xff09;核心流程&#xff08;实际版&#xff09; 为了让挥手流程衔接更顺畅&#xff0c;咱们先快速回顾三次握手的实际核心&#xff0c;避免上下文脱节&#xff1a; 第一步&#xff08;客户端→服务器&#xff09;&#xf…...