OCRmyPDF让你能搜索扫描版PDF文档

在这里插入图片描述

什么是 OCRmyPDF ?

PDF 是存储和交换扫描文档的最佳格式。不幸的是,PDF 可能很难修改。OCRmyPDF 是一个 Python 应用程序和库,可以轻松地将图像处理和 OCR(可识别、可搜索的文本)应用于现有 PDF,通过向扫描的 PDF 文件添加 OCR 文本层,使你可以搜索或复制粘贴它们。

镜像下载

在群晖上以 Docker 方式安装。

在注册表中搜索 ocrmypdf ,选择第一个 jbarlow83/ocrmypdf,版本选择 latest

本文写作时, latest 版本对应为 v15.4.2

在这里插入图片描述

你也可以使用命令行,用 SSH 客户端登录到群晖后,依次执行下面的命令

# 拉取镜像
docker pull jbarlow83/ocrmypdf:latest

如果拉不动,可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull dockerproxy.com/jbarlow83/ocrmypdf:latest

# 重命名镜像(如果是通过代理下载的)
docker tag dockerproxy.com/jbarlow83/ocrmypdf:latest jbarlow83/ocrmypdf:latest

# 删除代理镜像(如果是通过代理下载的)
docker rmi dockerproxy.com/jbarlow83/ocrmypdf:latest

下载完成后,可以在 映像 中找到

在这里插入图片描述

准备工作

【说明】:

  1. 与典型的 Docker 容器不同,OCRmyPDF Docker 容器是短暂的,它为一个 OCR 作业运行并终止,就像命令行程序一样。因此,我们通常使用 --rm 参数在容器退出时将其删除。
  2. 默认情况下,Docker 镜像包括英语、德语、简体中文、法语、葡萄牙语和西班牙语,所以中文用户不需要添加语言包。

docker 文件夹中,创建一个新文件夹 ocrmypdf

# 新建文件夹 ocrmypdf 
mkdir -p /volume1/docker/ocrmypdf

# 进入 ocrmypdf 目录
cd /volume1/docker/ocrmypdf

准备一个文档用于测试,这是网页上打印生成的 pdf 文件,直接搜索 sam 是没有 没有匹配项

在这里插入图片描述

将这个文档放入 ocrmypdf,命名为 input.pdf

在这里插入图片描述

测试验证

为了方便起见,创建一个 shell 别名来隐藏 Docker 命令。通过使用 alias 命令,为长或复杂的命令创建简短且易记的别名,以便更快地执行常用操作或减少输入的工作量

# 创建别名
alias docker_ocrmypdf='docker run --rm  -i --user "$(id -u):$(id -g)" --workdir /data -v "$PWD:/data" jbarlow83/ocrmypdf:latest'

# 运行 OCR
docker_ocrmypdf /data/input.pdf /data/output.pdf

其中:

  • -- rm:表示在容器退出时,会将其删除;
  • --user "$(id -u):$(id -g)":用于指定在容器内运行的用户和组,确保容器内的进程以与宿主机相同的用户权限运行,以防止权限问题;
  • --workdir /data:指定容器内的工作目录;
  • -v "$PWD:/data":将 /volume1/docker/ocrmypdf 映射到了容器内的 /data

在这里插入图片描述

运行完成后,会在 ocrmypdf 中看到多出了一个文件 output.pdf

在这里插入图片描述

下载到本地后,用 pdf 阅读器打开后,继续搜索 sam 显示有 2 处匹配

在这里插入图片描述

第二处

在这里插入图片描述

OCRmyPDF 不仅提供了基本的 OCR 功能,还包括一些高级功能,如自动旋转、自动裁剪、去除文本阴影、增强图像质量等。它使用了一些优秀的开源工具和库,如 Tesseract OCR 引擎、GhostscriptImageMagick,以提供强大的 OCRPDF处理功能,当然,OCRmyPDF 无法打开使用数字证书加密的文档。

参考文档

ocrmypdf/OCRmyPDF: OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched
地址:https://github.com/ocrmypdf/OCRmyPDF

OCRmyPDF documentation
地址:https://ocrmypdf.readthedocs.io

jbarlow83/ocrmypdf - Docker Image | Docker Hub
地址:https://hub.docker.com/r/jbarlow83/ocrmypdf

### OCRmyPDF 使用指南 #### 安装依赖项 为了确保 `ocrmypdf` 能够正常工作,需要先安装一些必要的软件包。通常情况下,在基于 Debian 或 Ubuntu 的 Linux 发行上可以通过以下命令来完成: ```bash sudo apt-get update && sudo apt-get install -y tesseract-ocr python3-pip libimage-exiftool-perl ghostscript poppler-utils qpdf jpegoptim optipng pngquant gifsicle librsvg2-bin imgpkg pkg-config ``` 对于其他操作系统,请参阅官方文档获取详细的安装说明[^2]。 #### 安装 OCRmyPDF 接下来就是安装 `ocrmypdf` 自身。推荐的方式是通过 Python 的 pip 工具来进行全局或虚拟环境中安装: ```bash pip install --upgrade ocrmypdf ``` 如果遇到权限问题,则可能需要用 `--user` 参数或者管理员权限执行上述命令。 #### 基础用法 一旦安装完毕之后就可以开始处理 PDF 文件了。最简单的调用方式如下所示: ```bash ocrmypdf input.pdf output.pdf ``` 这条指令会读取名为 `input.pdf` 的原始文件并创建一个新的带有可选字符识别层的本保存到 `output.pdf` 中去。默认设置下程序会选择合适的参数自动调整图像质量以及应用光学字符识别技术。 #### 高级选项 除了基本功能外还提供了许多有用的参数让用户能够更精细地控制整个过程。例如指定语言模型、压缩级别或是强制覆盖已存在的同名目标文件等操作均能通过附加相应标志位实现: ```bash ocrmypdf --language zh+en --force-ocr --compress-level 0 input.pdf output.pdf ``` 这里指定了中文加英文作为识别的语言范围(`zh+en`);即使输入已经含有文字图层也重新做一次 OCR (`--force-ocr`);关闭所有形式上的压缩行为以便于后续编辑(`--compress-level 0`)。 #### 批量处理流程 当面对大量待处理材料时可以编写简单脚本来批量转换多个文件。下面给出一段 shell script 片段示范如何遍历当前目录下的每一个 `.pdf` 并依次传递给 `ocrmypdf` 进行增强: ```bash #!/bin/bash for file in *.pdf; do echo "Processing $file..." ocrmypdf "$file" "${file%.pdf}_ocr.pdf" done ``` 此脚本将会把原文件保留不动而生成新的带 `_ocr` 后缀的结果副本放在同一位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值