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