OCRmyPDF 完整指南:3 条命令给扫描 PDF 加上可搜索文本层
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
OCRmyPDF 是一个开源命令行工具,给扫描版 PDF 添加 OCR 识别的文本层,让原本只能看图的文件变成可搜索、可复制文字的可搜索 PDF。适合需要数字化扫描件、处理归档文档的工程师、档案管理员和普通用户。
先跑起来:一条命令完成第一次转换
装好就能用。Debian/Ubuntu 用户一条命令搞定:
sudo apt install ocrmypdf其他平台可以pip install ocrmypdf,macOS/Linux 也可以用brew install ocrmypdf。装完先确认一下:
ocrmypdf --version然后跑一条最短的真实转换命令:
ocrmypdf 扫描版.pdf 输出.pdf处理完成后,在任意 PDF 阅读器里选中、搜索文字就都能用了,版面外观保持不变。注意 pip 装的是 Python 部分,Tesseract 等外部依赖需要用系统包管理器单独装。
参数工具箱:高频参数一张表
参数不用背,用到时查这张表:
| 参数 | 作用 | 什么场景用 |
|---|---|---|
-l eng+fra | 指定识别语言,多语言用+连接 | 非英文文档,或中英混排 |
-d/--deskew | OCR 前校正页面倾斜 | 扫描件歪了,行斜得搜不准 |
-c/--clean | 用 unpaper 清理扫描噪点、杂斑 | 扫描质量差、背景脏 |
-r/--rotate-pages | 按文字方向自动旋转页面 | 横竖页混扫、页面倒置 |
--oversample 600 | 把低分辨率图像超采样到指定 DPI | 300dpi 以下模糊扫描件 |
--output-type pdfa | 输出 PDF/A 长期存档格式 | 归档、合规存档 |
--optimize 2 | 启用有损压缩,明显减小体积 | 文件太大、要上传或存储 |
-s/--skip-text | 跳过已有文字的页面 | 文档图文混排,只补图片页 |
-j N | 限制并行 CPU 核心数 | 批量处理时防止机器过热 |
--sidecar 输出.txt | 额外导出一份纯文本 | 建全文检索索引、先预览识别质量 |
真实场景怎么做
多语言混排文档:-l 一次指定多种语言
Tesseract 无法自动判断语言,你必须告诉它。先装好对应语言包,再一起声明:
ocrmypdf -l chi_sim+eng 合同扫描件.pdf 合同可搜索.pdf语言包安装示例:sudo apt install tesseract-ocr-chi-sim,用tesseract --list-langs查看已装列表。
一条命令批量转换整个文件夹
仓库文档 docs/batch.md 推荐用 GNU parallel 做批处理,限制 2 个并发避免机器过载:
parallel --tag -j 2 ocrmypdf '{}' 'output/{}' ::: *.pdf只想原地更新、逐文件串行跑,也可以:
find . -name '*.pdf' -exec ocrmypdf '{}' '{}' \;图文混排、已有文字层:选对处理模式
文档里一部分页是图片、一部分页已有文字时,默认模式会直接报错。用-s跳过文字页;想连已有文字一起重新识别,用--force-ocr;只想给指定页做 OCR,用--pages 3-end只处理第 3 页到最后一页。
它是怎么工作的
OCRmyPDF 把每页 PDF 渲染成图像,交给 Tesseract 识别出文字和位置坐标,再把文字按原位置嵌入为不可见文本层,最后做图像压缩和 PDF/A 转换输出。整个过程原始版面不动,只是多了一层"藏在图底下的字"。
遇到问题怎么办
现象:中文全识别成乱码。原因:默认按英文(eng)识别,语言不对时结果会非常差。 解决:装中文语言包后用-l chi_sim重新处理。
现象:报错说文件已包含文字,处理中断。原因:默认--mode default遇到已有文本层会拒绝继续,防止覆盖。 解决:图文混排用-s跳过文字页,确认要重做用--force-ocr。
现象:输出文件比原文件还大。原因:嵌入文本层占空间,且默认优化等级(-O1)只做无损压缩。 解决:加--optimize 2或--optimize 3,黑白为主的文档装上 jbig2enc 编码器收益更大。
现象:提示找不到 unpaper,--clean失败。原因:unpaper 是可选外部依赖,没装。 解决:sudo apt install unpaper,或者去掉--clean参数。
现象:页面歪斜或倒置,搜索命中很怪。原因:没做预处理,文字方向没校正。 解决:加-d -r,先纠斜再旋转。
和其他工具怎么选
| OCRmyPDF | Tesseract 命令行 | 在线 OCR 服务 | 商业 PDF 软件 | |
|---|---|---|---|---|
| 免费开源 | 是 | 是 | 部分免费 | 否 |
| 直接输出可搜索 PDF | 是 | 有限 | 视服务而定 | 是 |
| PDF/A 存档 | 是 | 否 | 否 | 部分 |
| 图像预处理(纠斜/清洁) | 内置 | 无 | 无 | 有限 |
| 压缩优化 | 内置 | 无 | 无 | 有限 |
| 无界面,可脚本化 | 是 | 是 | 否 | 否 |
结论:如果你只要"识别一句话",Tesseract 就够;如果你要的是批量产出可搜索、可归档、体积可控的 PDF,OCRmyPDF 是命令行工具里功能最完整的选择。
总结
OCRmyPDF 用一条命令就能给扫描 PDF 加文本层,再配上-l、--deskew、--optimize等参数覆盖绝大多数数字化场景。下一步建议:读 docs/cookbook.md 看更多命令组合,想深入内部可以看 src/ocrmypdf/ 源码和 src/ocrmypdf/builtin_plugins/ 里的插件实现。
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考