先抛出一个结论:如果你手头有大量扫描版 PDF,还在为无法搜索、复制文本而烦恼,那么 OCRmyPDF 这个开源项目几乎是你绕不开的选择。目前它在 GitHub 上已收获超过 30.6k 星标,且仍在持续活跃更新,足以证明其价值与实用性。
本质上,它做的事情非常纯粹:为扫描 PDF “叠加”一层 OCR 文本层,让原本只记录图片信息的文档变得可搜索、可复制,同时完整保留原有的页面布局和图像质量。整个过程是自动化的,无需你手动干预太多。
以下几个关键点值得重点关注:
OCRmyPDF:开源扫描 PDF 智能 OCR 工具
OCRmyPDF 是一款开源的 PDF 处理工具,通过添加 OCR 文本层,将无法直接编辑的扫描 PDF 文件转换为可搜索和编辑的格式,同时保留原始布局与图像质量。支持 Windows、macOS、Linux 与 FreeBSD 平台,也可通过 Docker 镜像运行,适合个人用户、档案数字化、法律文件归档等多种场景。
•项目地址:https://github.com/ocrmypdf/OCRmyPDF
•开发者:James R. Barlow(核心)及社区贡献者
•Stars / Forks:约 30.6k ⭐ / 2.1k ?
•License:Mozilla Public License 2.0(MPL‑2.0,核心)/文档为 CC‑BY‑SA 4.0
•技术栈:Python 3, Shell, Ghostscript, Tesseract, qpdf, pngquant, jbig2enc
•目标用户:对扫描文档进行 OCR 的个人用户、图书馆/档案数字化、法律文件归档等。
✨ 核心功能亮点
提到功能,很多 OCR 工具都能实现,但 OCRmyPDF 的独特之处在于它的“精确性”与“完整性”。
- **生成可搜索 PDF/A 文件**:扫描版 PDF 自动补全 OCR 文本层,使文档可被搜索和复制,同时输出符合 PDF/A-2b 标准的长期归档格式。这意味着你不仅能用它处理日常文档,还能用于需要长期保存的档案场景,确保数据可检索。
- **精确放置 OCR 文本**:OCR 文本会被准确放置在图像下方,不改变页面布局,保留嵌入图像的原始分辨率。粘贴复制时基本无偏差,这一点在实际使用中非常关键——很多工具在复杂排版下会错位,而 OCRmyPDF 在这方面做得相当扎实,保证了文本与图像的对齐。
- **无损 / 静默优化**:如果原图支持,OCR 过程不会重新编码图片;支持 pngquant、Jbig2 编码压缩,生成的文件通常比输入文件更小。这算是意外之喜,毕竟很多 OCR 工具处理完文件体积反而会膨胀,而 OCRmyPDF 还能实现文件瘦身。
- **倾斜矫正 / 自动旋转**:支持 --deskew(纠正页面倾斜)和 --rotate-pages(自动识别并旋转横/竖页)。想想看,你手头有一堆纸质扫描件,角度歪歪扭扭,人工调整费时费力,这个功能可以直接省掉那一大堆麻烦,提升处理效率。
- **多语言 OCR 支持**:借助 Tesseract,可识别超过 100 种语言(包括繁简中日韩等),支持混合语言识别(如 -l eng+chi_sim)。不管是英文合同还是中文古籍,都能处理,满足多语言文档的 OCR 需求。
- **自动修复与跳过重复**:使用 qpdf 进行自动修复,发现 PDF 携带文本图层即可跳过 OCR(默认报错退出),或可加参数强制重新 OCR(--force-ocr)。这种设计很聪明,避免了重复劳动,节省时间。
- **大规模文件处理**:能够处理包含数千页的文件,适用于各种规模的文档处理任务。这一点对于图书馆数字化或法律文件归档来说尤其重要——你不可能指望一个只能处理几十页的小工具来搞定几千页的卷宗。
- **经过实战测试**:在数百万个 PDF 文件上进行了测试,具有高度的稳定性和可靠性。这个数据本身就说明了很多问题,让人放心使用。
? 安装与使用指南
安装过程其实不复杂,但有几个前置依赖需要先准备好。
- 环境要求:Python 3.6+、Ghostscript 9.15+、Tesseract 4.x、qpdf(推荐)
- 如果平台不支持上述依赖,建议使用 Docker 镜像,省去手动配置的麻烦。
安装步骤
方法 A:推荐(包管理器/Docker 快速安装)
- 平台:Windows/macOS/Linux -安装方式使用包管理器,如在 macOS:brew install ocrmypdf,在 Ubuntu/Debian:sudo apt install ocrmypdf(版本可能滞后)
- Docker(无需手动安装依赖): docker pull jbarlow83/ocrmypdf 或 jbarlow83/ocrmypdf‑polyglot(内含全部语言包)。执行时使用当前目录为挂载点示例:docker run --rm -v "$(pwd):/home/docker" ocrmypdf input.pdf output.pdf
方法 B:进阶用户(Python + pip 安装)
- 安装依赖(Unix/macOS):
brew install ghostscript tesseract qpdf pngquant
或在 Debian/Ubuntu:
sudo apt update
sudo apt install ghostscript tesseract-ocr tesseract-ocr-eng qpdf pngquant
- 安装 OCRmyPDF:
pip install / upgrade ocrmypdf
- 安装语言包(如中文):
sudo apt install tesseract-ocr-chi-sim
然后执行如下命令:
ocrmypdf -l eng+chi_sim input.pdf output.pdf
使用流程示例
# 单页测试
ocrmypdf input.pdf output.pdf
# 在原文件基础上进行 OCR(成功覆盖原文件)
ocrmypdf input.pdf input.pdf
# 添加识别语言(英文 + 简体中文)
ocrmypdf -l eng+chi_sim scanned.pdf searchable.pdf
# 自动纠偏并输出 PDF/A
ocrmypdf --rotate-pages --deskew --output-type pdfa input.pdf output.pdf
# 批量处理(示例替换当前目录中所有 PDF,需自行验证)
for f in *.pdf; do
ocrmypdf "$f" "ocr/$f"
done
安装完成后,用 ocrmypdf --help 可查看所有命令选项及详细说明。
