OCRmyPDF 实战教程:三条命令让扫描 PDF 可搜索
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
手头一份 200 页的扫描合同,Ctrl+F 搜个金额,结果为空。每页都只是图片,文字"存在"但电脑读不出来。
你需要的就是 OCR(光学字符识别,让电脑"读"出图片里的文字)。OCRmyPDF 干的就是这件事:给扫描版 PDF 加一层可搜索的文本层,原图原封不动,输出还能直接归档。
快速上手:一条命令装好 🚀
先交代环境要求,就三行:
- Python 3.10+
- Tesseract 4.1.1+(底层 OCR 引擎)
- Ghostscript 9.50+(负责 PDF 转换与 PDF/A)
Debian/Ubuntu 上最省事:
apt install ocrmypdf ocrmypdf scan.pdf search.pdf跑完后 search.pdf 就是结果:用 PDF 阅读器打开,文字可以选择、可以搜索。macOS 用brew install ocrmypdf,Windows 建议先在 WSL 里跑,各平台的一行安装命令见安装文档。
核心用法:四个真实会遇到的场景
单文件加旁路文本导出。除了可搜索的 PDF,还想拿一份纯文本去建索引?加一个参数:
ocrmypdf --sidecar in.pdf out.pdf效果:out.pdf 可搜索,旁边自动生成 out.pdf.txt,内容就是识别出来的文字。
中英文混排。文档里两种语言都有,用+把语言代码连起来:
ocrmypdf -l eng+chi_sim doc.pdf out.pdf前提是对应的 Tesseract 语言包已装好,tesseract --list-langs能列出你系统上可用的语言。
批量扫一批旧文档。一整个目录的扫描件,shell 循环就够,输出统一放新文件名里:
for f in *.pdf; do ocrmypdf "$f" "ocr_$f"; done效果:每份原件多一个可搜索版本。文件上千份时,建议用 GNU Parallel 限并发,仓库 misc/ 目录下也带了一份现成的批处理示例脚本可以照着改。
归档级输出。默认输出就是 PDF/A-2b,这是长期存档标准,保证文档十几年后在不同软件里渲染一致,法律、档案场景直接用。想少改动原文件就加--output-type pdf输出普通 PDF。
进阶与排错 ⚡
性能调优:
-j 4限制并行进程数。默认吃满全部核心,大页面并发时内存会飙,先降并发再说。--skip-big 200跳过超过 200 兆像素的页面,高分辨率扫描件防内存溢出。
常见报错:
page already has text→ 页面已有文本层,工具拒绝重复处理。想强刷加--force-ocr,想跳过文字页加--skip-text。is not a valid PDF→ 文件损坏或拷贝不完整。重新下载,或用 Ghostscript 重写一遍再喂给它。Tesseract cannot open its config file→ 语言数据目录不完整,多半是手动拼的 tessdata。用系统包管理器重装 tesseract 即可。
更多错误场景见错误手册。
装好之后,先拿一份手头的扫描件试跑,三分钟就能感受到区别——从那以后,这份文件才算真正"可搜索"。
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考