ocrmypdf/OCRmyPDF · 上手攻略

  • 仓库:ocrmypdf/OCRmyPDF
  • 链接:https://github.com/ocrmypdf/OCRmyPDF
  • 分类:pdf · ocr · document-processing
  • 作者:Tom
  • 更新:2026-08-17

这是什么

OCRmyPDF 是一个为 PDF 添加 OCR 文字层的命令行工具,它调用 Tesseract OCR 引擎,将扫描件、影印件等图片型 PDF 转化为可搜索、可复制文字的 PDF/A(适合长期归档的可移植 PDF 子集)。

它的核心价值在于「精准」——OCR 文字会精确地嵌入到原始图片下方,保证复制粘贴时位置准确,不出现文字错位;输出文件通常比输入更小(经过图像优化),且默认生成 PDF/A 格式。已通过数百万份真实文档的测试。

解决什么问题

  • 扫描件无法搜索:PDF 是图片,打印出来反而能用,但 Ctrl+F 失灵
  • 复制文字是乱码/图片:因为没有文字层,复制出来的是图片而非文字
  • 需要将扫描文件转为可归档格式:PDF/A 是 ISO 标准的长效归档格式
  • 多语言 OCR:支持 100+ 语言,包括中文简繁体
  • 自动修正歪斜/旋转的页面:扫描仪歪着放的文档可以自动扶正

快速安装

系统包管理器(一行命令)

# Debian / Ubuntu
sudo apt install ocrmypdf

# Fedora
sudo dnf install ocrmypdf tesseract-osd

# macOS
brew install ocrmypdf          # Homebrew
# 或
port install ocrmypdf          # MacPorts

# Windows Subsystem for Linux(推荐 Windows 用户使用)
# 在 WSL2 中运行 apt install ocrmypdf

# FreeBSD
pkg install py-ocrmypdf

# Nix
nix-env -i ocrmypdf

pip 安装(支持最新版本)

pip install ocrmypdf

⚠️ pip 安装的版本通常比系统仓库新,但需要自行安装 Tesseract 和 Ghostscript 依赖。

系统依赖

OCRmyPDF 本身是纯 Python,但依赖两个外部程序(必须预装):

# Tesseract OCR 引擎(必须)
# Debian/Ubuntu:
apt install tesseract-ocr
# macOS:
brew install tesseract-lang    # 包含所有语言包

# Ghostscript(PDF 处理,必须)
# 大多数系统已预装;如没有:
# Debian/Ubuntu: apt install ghostscript

核心用法

最基础命令

# 添加 OCR 层并输出为 PDF/A(最常用)
ocrmypdf --output-type pdfa input.pdf output.pdf

# 原地修改(覆盖原文件,仅在成功后写入)
ocrmypdf input.pdf input.pdf

指定语言

# 单语言(语言代码为 ISO 639-3)
ocrmypdf -l eng input.pdf output.pdf

# 多语言(中文简体 + 英文混合文档)
ocrmypdf -l eng+chi_sim input.pdf output.pdf

# 查看所有可用语言代码
apt-cache search tesseract-ocr    # Debian/Ubuntu
brew list tesseract-lang          # macOS

常用选项

# 自动旋转歪斜页面(扫描仪歪着放的文件)
ocrmypdf --deskew input.pdf output.pdf

# 同时旋转 + 自动方向纠正
ocrmypdf --rotate-pages input.pdf output.pdf

# 设置 PDF 元数据
ocrmypdf --title "合同文件" --author "张三" --subject "2026年协议" \
  input.pdf output.pdf

# 指定 CPU 核心数(默认全部)
ocrmypdf --jobs 4 input.pdf output.pdf

# 跳过已成功 OCR 的页面(增量处理)
ocrmypdf --skip-text input.pdf output.pdf

# 图像预处理:去噪 + 对比度增强(有助于印刷质量差的文档)
ocrmypdf --clean input.pdf output.pdf

# 调整 OCR 分辨率(默认 300 DPI,印刷件可降低)
ocrmypdf --image-dpi 150 input.pdf output.pdf

# 输出详细日志(调试用)
ocrmypdf -v 2 input.pdf output.pdf

图像转 PDF(直接 OCR 图片)

# 单张图片转可搜索 PDF
ocrmypdf input.jpg output.pdf

# 多页 TIFF 转 PDF
ocrmypdf page1.jpg page2.jpg output.pdf

高级:非英语语言安装

# Debian/Ubuntu 安装额外语言包
apt-get install tesseract-ocr-chi-sim   # 简体中文
apt-get install tesseract-ocr-jpn       # 日语
apt-get install tesseract-ocr-kor       # 韩语
apt-get install tesseract-ocr-osd       # 方向/脚本检测(自动旋转依赖此包)

# macOS:tesseract-lang 已包含多数语言

插件扩展

OCRmyPDF 支持插件接口,可替换默认的 Tesseract OCR 引擎:

插件 OCR 引擎 优势 劣势
OCRmyPDF-AppleOCR Apple Vision Framework macOS 原生,速度快,准确率高 只能 macOS
OCRmyPDF-EasyOCR EasyOCR (PyTorch) GPU 加速,多语言 需 PyTorch + GPU
OCRmyPDF-PaddleOCR PaddleOCR GPU 加速,中文支持强 配置较复杂

安装插件后,在命令中加入 --plugin 参数(具体用法见各插件文档)。

典型适用场景

场景 为什么选 OCRmyPDF
整理扫描件归档 输出 PDF/A,ISO 标准长期保存格式
论文/书籍 PDF OCR 文字精准嵌入图片下方,复制不乱码
法律/合同文档数字化 批量处理 thousands 页,元数据注入
中文古籍/中文扫描件 简体中文 + 英文混合支持
歪斜/歪转扫描件自动修正 --deskew / --rotate-pages 一键修复
接入 document management 系统 与 Paperless-ngx 等无码文档管理系统集成

坑与注意

  1. Tesseract 版本要求:OCRmyPDF 需要 Tesseract 4.1.1 以上。旧版 Debian/Ubuntu 仓库版本可能低于此值,建议通过系统包管理器更新或用 pip 升级。检查版本:tesseract --version
  2. 语言包需要单独安装:Tesseract 默认只带英语,中文用户必须手动安装 tesseract-ocr-chi-sim(简体中文)或 tesseract-ocr-chi-tra(繁体中文)。未装语言包时 OCR 会失败或输出乱码。
  3. Debian/Ubuntu 默认无 JBIG2 编码器:JBIG2 可大幅压缩黑白文档(最高 10x),Debian/Ubuntu 官方因许可证问题默认不打包 jbig2enc。有需求可从源码编译 jbig2enc,OCRmyPDF 会自动检测并使用。
  4. PDF 加密/数字签名文件:带密码的 PDF 需要先用 qpdf --decrypt 解密;数字签名 PDF 通常无法直接处理(会报错)。
  5. 输出文件比输入大:如果输入 PDF 本身就是图片型且已高度压缩,OCR 后因为嵌入了文字层,文件可能略微增大,这是正常现象。
  6. OCR 质量与图像质量直接相关:DPI 太低(< 150)、过度压缩、有水印的图像 OCR 效果差;建议扫描时使用 300 DPI 或以上。
  7. 中文 OCR 准确率:Tesseract 对中文的支持弱于英文,印刷体中文准确率约 85-92%(简繁体有差异);古籍、书法、手写体效果较差,需考虑 EasyOCR 或云服务。
  8. WSL2 用户注意:在 WSL2 中运行 Tesseract 和 Ghostscript 需要 X server 或通过命令行操作无头模式,部分 Linux GUI 依赖不兼容。

与同类对比

方案 开源 本地 多语言 PDF/A 输出 精准文字嵌入
OCRmyPDF ✅ 100+ ✅ 默认 ✅ 精确
Adobe Acrobat Pro ❌ 商业 ❌ 需云 ⚠️ 付费包
Tesseract CLI ❌ 需手动 ⚠️ 不对齐
EasyOCR (Python)
Google Document AI ❌ SaaS ⚠️
ABBYY FineReader ❌ 商业 ⚠️ 桌面版
Adobe Acrobat Online ❌ SaaS ⚠️ ⚠️

核心差异:OCRmyPDF 是开源方案中唯一同时做到精准文字嵌入 + PDF/A 输出 + 100+ 语言 + 歪斜修正 + 多平台的工具链。它的文字嵌入精度(文字在图片下方而非覆盖在图片上)是核心竞争力,直接影响复制粘贴的可用性。

一句话结论

OCRmyPDF 是处理扫描件 PDF 的开源一站式方案——只需一条命令就能把图片型 PDF 变成可搜索、可复制、PDF/A 格式的文档;如果需要处理中文文档,提前装好 tesseract-ocr-chi_sim,效果会让你满意。