OCRmyPDF
OCRmyPDF 是一款开源的 PDF 处理工具,通过添加 OCR 文本层,OCRmyPDF 能够将无法直接编辑的扫描 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 的个人用户、图书馆/档案数字化、法律文件归档等。✨ 核心功能亮点
• 生成可搜索 PDF/A 文件 :扫描版 PDF 自动补全 OCR 文本层,使文档可被搜索和复制,同时输出符合 PDF/A-2b 标准的长期归档格式。 • 精确放置 OCR 文本 :将 OCR 文本准确地放置在图像下方,不改变页面布局,保留嵌入图像的原始分辨率,粘贴复制基本无偏差。 • 无损 / 静默优化:若原图支持,OCR 过程不会重新编码图片;支持 pngquant、Jbig2 编码压缩,生成的文件通常比输入文件更小。 • 倾斜矫正 / 自动旋转:支持类似 --deskew(纠正页面倾斜)和 --rotate-pages(自动识别并旋转横/竖页)。 • 多语言 OCR 支持:借助 Tesseract,可识别超过 100 种语言(包括繁简中日韩等),支持混合语言识别(如 -l eng+chi_sim)。 • 自动修复:使用 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 安装)
1. 安装依赖(Unix/macOS):
brew install ghostscript tesseract qpdf pngquant
或在 Debian/Ubuntu:
sudo apt update
sudo apt install ghostscript tesseract-ocr tesseract-ocr-eng qpdf pngquant2. 安装 OCRmyPDF:
pip install / upgrade ocrmypdf
3. 安装语言包(如中文):
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 可查看所有命令选项及说明。
