扫描和将文档处理为无纸化工具
项目描述
扫描并准备您的文档以供 Paperless 使用
本项目的目标是实现从文档扫描到 Paperless 的某些生产过程。为此,我们需要准备一些需要许多资源的工具来处理文档,然后我们想到在后台进行,理想情况下是在另一个主机(如NAS)上。结果是,这并不是很容易实施,但一旦实施,您将非常高效。用户与过程之间的接口是用于进行初始扫描的 scan
命令,以及文件系统来验证结果是否正确(并进行一些以下所述的先进操作)并验证它。
特性
- 可选地使用自动文档进纸器扫描图像
- 使用自动文档进纸器轻松扫描双面图像
- 从TIFF图像中提取DPI
- 更改图像级别
- 删除图像外的区域
- 校正图像
- 裁剪图像
- 锐化图像(默认禁用)
- 抖动图像(默认禁用)
- 使用tesseract自动旋转图像(以使文本在右侧)
- 使用
pngquant
、optipng
、ps2pdf
或jpeg
(使用GraphicsMagick转换的质量)优化图像 - 辅助拆分,用于将招股说明书页面拆分为更多页面(需要修改YAML...)
- 附加信用卡信息,用于在同一页面上显示信用卡的正反两面
- 能够从PDF中复制OCR结果
- 扫描二维码和条形码,并添加一个新页面以包含这些值(单独处理)
- 管理二维码中的空白行(在PDF中用竖线(
|
)替换,并运行scan --convert-clipboard
以扫描您的剪贴板进行逆变换)
需求
在桌面
- Python >= 3.6
- scanimage命令,在Windows上应该能够使用另一个命令,但从未测试过。此命令将是一个适配器,它解释以下参数:
--batch
、--batch-start
、--batch-increment
、--batch-count
、--batch
用于目标文件名模板(%d
被页面号替换),其余用于auto_bash
。
在NAS上
安装
Scan-to-paperless需要桌面和服务器部分,这两部分通过扫描文件夹进行通信。
服务器部分是处理文档的地方,桌面部分是我们扫描文档的地方,扫描仪连接在哪里。
扫描文件夹应在桌面和服务器之间同步,我使用Syncthing来实现。
在桌面
$ python3 -m pip install scan-to-paperless
$ echo PATH=$PATH:~/venv/bin >> ~/.bashrc
$ echo source <(register-python-argcomplete scan) >> ~/.bashrc
$ echo source <(register-python-argcomplete scan-progress-status) >> ~/.bashrc
在<home_config>/scan-to-paperless.yaml
(在Linux上是~/.config/scan-to-paperless.yaml
)上创建配置文件,其中包含
# yaml-language-server: $schema=https://raw.githubusercontent.com/sbrunner/scan-to-paperless/master/scan_to_paperless/config_schema.json
scan_folder: /home/sbrunner/Paperless/scan/
scanimage_arguments: # Additional argument passed to the scanimage command
- --device=... # Use `scanimage --list` to get the possible values
- --format=png
- --mode=color
- --resolution=300
default_args:
auto_mask: {}
auto_cut: {}
run_pngquant: true
cut_white: 200 # cut the near white color to have a uniform background
dpi: 300 # Not necessary if the scanner generate a tiff file
tesseract_lang: fra+eng # The used languages for the OCR
在NAS上
需要Docker支持,我个人使用Synology DiskStation DS918+,并且你可以获取*.syno.json文件来配置你的Docker服务。
否则,使用
SCAN_FOLDER=<scan_folder>
CONSUME_FOLDER=<consume_folder>
docker run --name=scan-to-paperless --restart=unless-stopped --detach \
--volume=${SCAN_FOLDER}:/source \
--volume=${CONSUME_FOLDER}:/destination \
sbrunner/scan-to-paperless
你可以设置环境变量PROGRESS
为TRUE
以获取所有中间图像。
要停止运行
docker stop scan-to-paperless
docker rm scan-to-paperless
存储链接
你应该找到一种方法来同步或使用共享来链接你的桌面和NAS上的扫描文件夹。
你还应该将消费文件夹链接到paperless-ngx
,可能只是使用同一个文件夹。
使用
-
使用
scan
命令导入您的文档,扫描您的文档。 -
文档将传输到您的NAS(我使用Syncthing)。
-
文档将在NAS上处理。
-
使用
scan-process-status
来了解您的文档状态。 -
验证您的文档。
-
如果您满意,请删除
REMOVE_TO_CONTINUE
文件。(要重新启动过程,请删除生成的图像之一,要取消作业,请删除文件夹。) -
过程将继续其工作并将文档导入到
paperless-ngx
。
作业配置文件
在文档文件夹中存在的config.yaml
文件中,您可以找到处理过程中生成的一些信息和一些可以修改的信息。
例如,您可以将图像角度修改为修复倾斜,然后删除生成的图像以强制重新生成图像。
高级功能
添加遮罩
如果您的扫描仪在扫描图像周围添加了一些边距,它可能会在倾斜和内容检测上出现一些问题。
要解决这个问题,您可以在根文件夹中添加一个名为mask.png
的黑白图像,并用黑色绘制不应该考虑的部分。
Scan to Paperless还能够自动创建遮罩,要启用它,只需使用默认配置,只需添加一个名为args
的空字典({}
)。
另请参阅:文档
配置说明
默认情况下,选项lower_hsv_color
和upper_hsv_color
选择页面(白色)。您还可以选择扫描仪背景,为此您还应该设置选项inverse_mask
为true
以及选项de_noise_morphology
为false
。
掩码图像
如果您的扫描仪在扫描图像周围添加了一些边距,您完全可以掩码它们。
为了解决这个问题,您可以在根目录中添加一个名为cut.png
的黑白图像,并用黑色绘制不应考虑的部分。
Scan to Paperless还可以自动创建掩码,要启用它,使用默认配置,只需添加args
名为auto_cut
的空字典({}
)。
另请参阅:文档
双面扫描
-
将您的纸张放入自动文档进纸器。
-
使用
scan
选项--mode=double
运行。 -
按回车键开始扫描所有纸张的第一面。
-
再次将所有纸张放入自动文档进纸器,不要翻转它们。
扫描工具将旋转并重新排列所有纸张以获得良好的文档。
信用卡扫描
选项--append-credit-card
将所有纸张垂直添加,使信用卡的正面和背面在同一页上。
辅助分割
-
像往常一样扫描,额外选项为
--assisted-split
。 -
在第一次扫描过程中,您将获得带有线和数字的图像。线条表示检测到的潜在分割,长度表示检测的强度。在您的配置中,您将看到类似以下内容:
assisted_split:
- destinations:
- 4 # Page number of the left part of the image
- 1 # Same for the right page of the image
image: image-1.png # name of the image
limits:
- margin: 0 # Margin around the split
name: 0 # Number visible on the generated image
value: 375 # The position of the split (can be manually edited)
vertical: true # Will split the image vertically
- ...
source: /source/975468/7-assisted-split/image-1.png
- ...
编辑您的配置文件,您应该有比限制更多的目标。如果您将目标设置为如下:2.1,这意味着它将是第2页的第一部分,而2.2将是第二部分。
-
删除文件
REMOVE_TO_CONTINUE
。 -
在第一次扫描过程中,您将获得最终生成的图像。
-
如果没问题,删除文件
REMOVE_TO_CONTINUE
。
扫描模式配置
首先,可以通过配置文件中的scanimage
和scanimage_argumentss
选项来配置scanimage
命令和参数(~/.config/scan-to-paperless.yaml
)。
在此文件中还有一个modes
部分,可以配置每个模式。
参见: 文档
扩展现有配置
为了创建preset
配置文件,扩展现有配置可能很有用。为此,您可以在配置文件中使用extends
(以及merge_strategies
)选项。
参见: 文档
服务器配置
环境变量
SCAN_SOURCE_FOLDER
:扫描过程的主要输入文件夹。SCAN_CODES_FOLDER
:代码(二维码和条形码)检测和添加新页面的输入文件夹。SCAN_FINAL_FOLDER
:扫描过程最终文件夹。SCAN_CODES_DPI
:解码代码所用的DPI。SCAN_CODES_PDF_DPI
:创建代码文档所用的PDF DPI。SCAN_CODES_FONT_NAME
:代码数字所用的字体。SCAN_CODES_FONT_SIZE
:代码数字所用的字体大小。SCAN_CODES_MARGIN_TOP
:代码数字的上边距。SCAN_CODES_MARGIN_LEFT
:代码数字的左边距。TIME
:打印已过时间。PROGRESS
:保存一些中间文件,不要在最后清理文件夹。
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
scan_to_paperless-1.25.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3f2ebf3491c37d5676e7f0f3b878d99820ce699b9e9ad32891135496d550b503 |
|
MD5 | 01c7ff0cf59daf60c286ca4d7463c214 |
|
BLAKE2b-256 | 06a5601a8f88321f629255957db1b45e818a295cd37be5234fc17171844bf1db |