跳转到主要内容

扫描和将文档处理为无纸化工具

项目描述

扫描并准备您的文档以供 Paperless 使用

本项目的目标是实现从文档扫描到 Paperless 的某些生产过程。为此,我们需要准备一些需要许多资源的工具来处理文档,然后我们想到在后台进行,理想情况下是在另一个主机(如NAS)上。结果是,这并不是很容易实施,但一旦实施,您将非常高效。用户与过程之间的接口是用于进行初始扫描的 scan 命令,以及文件系统来验证结果是否正确(并进行一些以下所述的先进操作)并验证它。

特性

  • 可选地使用自动文档进纸器扫描图像
  • 使用自动文档进纸器轻松扫描双面图像
  • 从TIFF图像中提取DPI
  • 更改图像级别
  • 删除图像外的区域
  • 校正图像
  • 裁剪图像
  • 锐化图像(默认禁用)
  • 抖动图像(默认禁用)
  • 使用tesseract自动旋转图像(以使文本在右侧)
  • 使用pngquantoptipngps2pdfjpeg(使用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

你可以设置环境变量PROGRESSTRUE以获取所有中间图像。

要停止运行

docker stop scan-to-paperless
docker rm scan-to-paperless

存储链接

你应该找到一种方法来同步或使用共享来链接你的桌面和NAS上的扫描文件夹。

你还应该将消费文件夹链接到paperless-ngx,可能只是使用同一个文件夹。

使用

  1. 使用scan命令导入您的文档,扫描您的文档。

  2. 文档将传输到您的NAS(我使用Syncthing)。

  3. 文档将在NAS上处理。

  4. 使用scan-process-status来了解您的文档状态。

  5. 验证您的文档。

  6. 如果您满意,请删除REMOVE_TO_CONTINUE文件。(要重新启动过程,请删除生成的图像之一,要取消作业,请删除文件夹。)

  7. 过程将继续其工作并将文档导入到paperless-ngx

作业配置文件

在文档文件夹中存在的config.yaml文件中,您可以找到处理过程中生成的一些信息和一些可以修改的信息。

例如,您可以将图像角度修改为修复倾斜,然后删除生成的图像以强制重新生成图像。

完整的作业配置文档

高级功能

添加遮罩

如果您的扫描仪在扫描图像周围添加了一些边距,它可能会在倾斜和内容检测上出现一些问题。

要解决这个问题,您可以在根文件夹中添加一个名为mask.png的黑白图像,并用黑色绘制不应该考虑的部分。

Scan to Paperless还能够自动创建遮罩,要启用它,只需使用默认配置,只需添加一个名为args的空字典({})。

另请参阅:文档

配置说明

默认情况下,选项lower_hsv_colorupper_hsv_color选择页面(白色)。您还可以选择扫描仪背景,为此您还应该设置选项inverse_masktrue以及选项de_noise_morphologyfalse

掩码图像

如果您的扫描仪在扫描图像周围添加了一些边距,您完全可以掩码它们。

为了解决这个问题,您可以在根目录中添加一个名为cut.png的黑白图像,并用黑色绘制不应考虑的部分。

Scan to Paperless还可以自动创建掩码,要启用它,使用默认配置,只需添加args名为auto_cut的空字典({})。

另请参阅:文档

双面扫描

  1. 将您的纸张放入自动文档进纸器。

  2. 使用scan选项--mode=double运行。

  3. 按回车键开始扫描所有纸张的第一面。

  4. 再次将所有纸张放入自动文档进纸器,不要翻转它们。

扫描工具将旋转并重新排列所有纸张以获得良好的文档。

信用卡扫描

选项--append-credit-card将所有纸张垂直添加,使信用卡的正面和背面在同一页上。

辅助分割

  1. 像往常一样扫描,额外选项为--assisted-split

  2. 在第一次扫描过程中,您将获得带有线和数字的图像。线条表示检测到的潜在分割,长度表示检测的强度。在您的配置中,您将看到类似以下内容:

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将是第二部分。

  1. 删除文件REMOVE_TO_CONTINUE

  2. 在第一次扫描过程中,您将获得最终生成的图像。

  3. 如果没问题,删除文件REMOVE_TO_CONTINUE

扫描模式配置

首先,可以通过配置文件中的scanimagescanimage_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:保存一些中间文件,不要在最后清理文件夹。

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

scan_to_paperless-1.25.0.tar.gz (48.3 kB 查看哈希值)

上传

构建分发

scan_to_paperless-1.25.0-py3-none-any.whl (48.7 kB 查看哈希值)

上传 Python 3

由以下支持