OCRmyPDF 是一个开源的命令行工具,专门用于为扫描的PDF文件添加光学字符识别(OCR)文本层,使其变为可搜索、可复制的文档。它基于Python开发,使用Tesseract OCR引擎,能准确识别图像中的文字,并将其嵌入PDF中,保持原文件的布局和图像质量。工具支持多语言,适用于Linux、Windows、macOS等平台,还提供Docker镜像,方便跨平台部署。OCRmyPDF 默认生成PDF/A格式,适合长期存档,同时支持页面校正、图像优化等功能,广泛应用于文档数字化和归档场景。
功能列表
- 为扫描PDF添加可搜索的OCR文本层,支持复制粘贴。
- 默认生成PDF/A格式,适合长期文档存档。
- 支持39种语言的文字识别,覆盖英语、德语、中文等。
- 自动校正页面倾斜(deskew)和旋转(rotate-pages)。
- 优化PDF文件大小,常生成比输入文件更小的输出。
- 支持多核并行处理,提升大规模文档处理效率。
- 提供调试模式,方便验证OCR结果。
- 通过插件支持功能扩展,兼容复杂PDF结构。
- 自动修复损坏的PDF文件,增强兼容性。
使用帮助
安装流程
OCRmyPDF 的安装需要在支持的操作系统上配置依赖项,包括Python、Tesseract、Ghostscript等。以下是详细安装步骤,适用于常见操作系统:
Linux(以Ubuntu 22.04为例)
- 确保系统已安装Python 3和pip:
python3 --version pip3 --version
- 安装依赖项:
sudo apt update sudo apt install tesseract-ocr ghostscript python3-pip pngquant
- 使用pip安装OCRmyPDF:
pip3 install ocrmypdf
- 验证安装:
ocrmypdf --version
如果显示版本号,说明安装成功。
Windows
- 安装Python 3(建议通过官网下载最新版本)。
- 安装Tesseract和Ghostscript(推荐使用Chocolatey包管理器):
choco install tesseract ghostscript
- 使用pip安装OCRmyPDF:
pip install ocrmypdf
- 确认安装完成:
ocrmypdf --version
macOS(使用Homebrew)
- 安装Homebrew(如果未安装):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 安装依赖项:
brew install tesseract ghostscript ocrmypdf
- 验证安装:
ocrmypdf --version
Docker安装
- 确保Docker已安装并运行:
docker run hello-world
- 拉取OCRmyPDF镜像:
docker pull jbarlow83/ocrmypdf
- 标记镜像为便捷名称:
docker tag jbarlow83/ocrmypdf ocrmypdf
使用方法
OCRmyPDF 是一个命令行工具,使用简单但功能强大。基本命令格式为:
ocrmypdf [选项] 输入文件 输出文件
基本操作
- 简单OCR转换:
将扫描的PDF转换为可搜索的PDF:ocrmypdf input.pdf output.pdf
这会处理
input.pdf
,生成带有OCR文本层的output.pdf
。 - 指定语言:
支持多语言OCR,例如处理包含英文和中文的PDF:ocrmypdf -l eng+chi_sim input.pdf output.pdf
语言代码可在Tesseract文档中查找。
- 页面校正和优化:
自动校正倾斜并生成PDF/A格式:ocrmypdf --deskew --output-type pdfa input.pdf output.pdf
- 并行处理:
使用多核加速处理:ocrmypdf --jobs 4 input.pdf output.pdf
特色功能操作
- 页面旋转:自动检测并修复页面方向:
ocrmypdf --rotate-pages input.pdf output.pdf
可通过
--rotate-pages-threshold
设置旋转阈值。 - 图像清理:在OCR前清理图像,提升识别准确性:
ocrmypdf --clean input.pdf output.pdf
- 调试模式:验证OCR结果,生成详细日志:
ocrmypdf --verbose 2 input.pdf output.pdf
- 跳过已有文本:避免重复处理已有文本的页面:
ocrmypdf --skip-text input.pdf output.pdf
Docker使用
使用Docker运行OCRmyPDF,适合无本地环境的场景:
docker run --rm -v $(pwd):/data ocrmypdf /data/input.pdf /data/output.pdf
此命令将当前目录的input.pdf
处理后输出到output.pdf
。
注意事项
- 确保输入PDF是扫描文档,含文本的PDF可能需用
--skip-text
。 - Tesseract语言包需单独安装以支持多语言,例如:
sudo apt install tesseract-ocr-chi-sim
- 对于复杂PDF,建议启用
--verbose
查看详细日志,便于排查问题。
应用场景
- 文档数字化
将纸质文档扫描为PDF后,使用OCRmyPDF添加文本层,方便搜索和复制内容,适合档案管理或法律文件存档。 - 学术研究
研究人员可将扫描的学术论文转为可搜索PDF,便于提取引用或关键词,提高文献管理效率。 - 企业归档
企业可批量处理扫描的合同、发票,生成PDF/A格式,确保长期保存和法律合规性。 - 多语言文档处理
处理多语言扫描文档,如中英混合合同,OCRmyPDF可识别多种语言并嵌入文本。
QA
- OCRmyPDF支持哪些操作系统?
支持Linux、Windows、macOS和FreeBSD,也可通过Docker跨平台使用。 - 如何处理非英文文档?
使用-l
指定语言代码,如-l chi_sim
处理中文,需安装对应语言包。 - 输出文件比输入大怎么办?
使用--optimize 1
或安装JBIG2编码器以压缩文件大小。 - 如何验证OCR结果?
使用--verbose 2
生成详细日志,或检查输出PDF的可复制文本。