OCRmyPDF:扫描PDF免费加OCR文本层的完整指南
【免费下载链接】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/A文件。本文带你用5分钟装好它、跑通第一个扫描件,并给出离线环境与常见报错的解法。
核心能力一览:扫描件变可搜索PDF 📄
扫描出来的PDF本质上是一叠图片:搜索不到字,选中不了文字,也建不了全文索引。OCRmyPDF 的做法是不改动原图,把 Tesseract 识别出的文字作为透明文本层压在图像下面,于是"图片PDF"重新变成可搜索、可复制的文档,且整个过程完全在本地离线完成。
它和同类工具的区别可以列成一张能力清单:
- 无损叠加:原始嵌入图像逐像素保留,只新增文本层,版式不漂移
- 并行处理:按页拆分任务,自动吃满全部 CPU 核心
- 体积优化:重编码图像后,输出文件经常比输入更小
- PDF/A 输出:可选生成符合存档标准的 PDF/A 文件并自动校验
- 本地运行:不依赖任何云服务,扫描件不出机器
下面这张就是典型输入——一页扫描手册,一个字都搜不到:
5分钟跑通:OCRmyPDF 安装并处理第一个扫描PDF 🚀
安装前确认三件事:Python 3.11+、系统装有 tesseract-ocr、装有 Ghostscript 9.54+ 或 pypdfium2 任一。各平台的详细步骤见 安装指南。
然后执行:
pip install ocrmypdf拿一份扫描PDF试跑,-l eng指定英语识别:
ocrmypdf -l eng sample.pdf output.pdf成功的标志是终端出现Postprocessing...、OCR complete,以及类似Image optimization ratio: 1.36 savings: 26.4%的优化报告——比值越大说明图像压缩越省。实际处理过程长这样:
典型场景实战
场景一:离线机器上识别中文扫描文档
离线环境最大的坑是语言包:Tesseract 默认只带英语数据。分两步走。
- 在联网机器上备好
chi_sim.traineddata,拷到离线机的 tessdata 目录(Debian/Ubuntu 一般在/usr/share/tesseract-ocr/*/tessdata/) - 用
+组合语言跑任务:
ocrmypdf --language chi_sim+eng 扫描件.pdf 输出.pdf- 在 PDF 阅读器里搜索输出文件中的中文关键词,能命中即成功。
场景二:歪斜、噪点多的低质量扫描件
识别率上不去,八成是输入图的问题。开三个预处理开关,去噪、去倾斜、转正页面:
ocrmypdf --clean --deskew --rotate-pages in.pdf out.pdf终端日志会报告每页的旋转校正情况;对扫描质量差的文件,这套组合拳通常能把识别率拉回可用水平。下面这张打字机扫描图就是典型的待处理对象:
场景三:几百页大文件分批处理
内存吃紧时别硬跑整份文件,用--pages把任务切成几段:
ocrmypdf --pages 1-100 big.pdf part1.pdf各段跑完后再合并;整目录自动批处理的完整写法,参考仓库里的 批处理脚本。
踩坑速查:OCRmyPDF 常见报错与修复 ⚡
Language data not found→ 对应语言包没装 →apt install tesseract-ocr-chi-sim,或手动把 traineddata 放进 tessdata 目录- 识别结果乱码、缺字→ 扫描件有倾斜或底噪 → 加
--deskew --clean重试 - 旧文本层干扰识别→ 文档原本就带文本层 → 用
--skip-text跳过已有文字,或--redo-ocr全部重做 - 输出比输入大→ 没开图像优化 → 加
--optimize 3,代价是处理稍慢 - 大文件中途被系统杀掉→ 内存不足 → 按
--pages分批
往深处走:插件、容器化与API
- 插件:基于 pluggy 开发,写
@hookimpl即可注册自定义 OCR 引擎或新选项,写法参考 插件示例 - 容器化:仓库 misc/ 目录自带 docker-compose 示例,一条命令起隔离环境
- Python API:
ocrmypdf.ocr()可在代码里直接调用,免去 subprocess,参数与返回见 API 参考
小结
- 文本层无损叠加,扫描件从此可搜索、可复制
- 全本地离线运行,数据不出机器
- 多核并行加图像优化,输出经常比输入更小
- 支持 PDF/A 存档输出,可自动校验
现在就去装一个,把手头最旧的那份扫描PDF跑一遍 🎉
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考