如何用 OCRmyPDF 给扫描 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:原图一字不动,只在下面垫一层隐藏文字,文件从此能搜索、能复制。免费开源,文件不用上传到任何服务器,几十份扫描件一次跑完。这篇带你从装好、跑通第一条命令,讲到最常用的参数和常见报错。
什么情况下用它
- 文件夹里一堆扫描件,合同、发票只能看不能搜。过一遍 OCRmyPDF 后,每页多出一层文字,PDF 阅读器里
Ctrl+F能直接命中关键词。 - 扫描的论文或旧书动辄两三百页。它默认把全部 CPU 核心拿去并行,厚书一次跑完,不用一页页手动处理。
- 文件里图片页和文字页混排。加
--skip-text,已有文字层的页原样保留,只对纯图像页做识别。
安装并跑通第一条命令
pip install ocrmypdf # Windows,需先装 Tesseract 和 Ghostscript brew install ocrmypdf # macOS apt install ocrmypdf # Debian / Ubuntu装完直接跑最短的一条:
ocrmypdf 扫描件.pdf 可搜索.pdf验证方法:用 PDF 阅读器打开可搜索.pdf,按Ctrl+F输入一个页面里确定有的词,能命中、选中能复制,说明文字层加上了。输出默认是 PDF/A 归档格式,适合长期保存。
高频参数
告诉它识别语言。默认按英文识别,文档不是英文就该换,否则准确率掉得很快。
ocrmypdf -l eng+deu 德文笔记.pdf 德文笔记_可搜索.pdf识别出的文字改用对应语言模型,德文的 ü、ß 不再变成乱码。
只处理部分页面。几百页的文件只需要其中几节,用页码范围限定。
ocrmypdf --pages 4-25 大文档.pdf 大文档_部分.pdf输出里只剩第 4 到 25 页,识别耗时和内存占用同步降下来。
重做已有文字的页面。页面本来带文字层但识别不准时,强制重新识别。
ocrmypdf --force-ocr 重扫.pdf 重扫_可搜索.pdf旧的隐藏文字被抹掉,整页重绘成图像再识别一遍,得到全新的文字层。
压缩输出。发现输出比输入还大时,打开图像压缩。
ocrmypdf --optimize 2 扫描件.pdf 扫描件_更小.pdf图像被重新编码,文件体积变小,高分辨率扫描件差几倍都正常。
组合实战 📚
一本旧书扫描件:有的页转了方向,多数页轻微歪斜,还有阴影,繁体中文里混着英文。一条命令全处理掉:
ocrmypdf -l chi_tra+eng --rotate-pages --deskew --clean-final -j 8 --optimize 2 旧书.pdf 旧书_可搜索.pdf每个参数的分工:
-l chi_tra+eng:语言包告诉引擎书里两种语言并存--rotate-pages:把转了 90° 或 180° 的页自动摆正--deskew:修正小幅歪斜--clean-final:去噪去阴影,清洁后的图像替换原页-j 8:8 个核心并行,300 页的厚书省一半以上时间--optimize 2:压缩图像,输出不至于膨胀
注意--deskew和--clean-final依赖 unpaper 程序,没装会报错,见下一节。
遇到问题先查这里 🛠
问:报错提示找不到chi_tra语言包。答:对应的 Tesseract 语言包没装。Debian/Ubuntu 执行apt-get install tesseract-ocr-chi-tra;macOS 执行brew install tesseract-lang。
问:出现 "PDF contains text",拒绝处理。答:默认行为是不碰已有文字层的页面。加--skip-text跳过这类页继续,或者用--force-ocr全部重新识别。
问:--clean-final报错说缺少 unpaper。答:去噪环节依赖 unpaper 这个外部程序,先执行apt install unpaper装好再重跑。
问:输出文件比输入大。答:文字层是额外加上的内容,图像默认无损编码。加--optimize 3压缩更狠;系统里装了 pngquant、jbig2enc 还会更小。
第一条命令跑通之后,剩下的活就是按文档情况往后面加参数。完整参数清单在 docs/advanced.md,上面几种报错的来龙去脉可以在 docs/errors.md 里逐条对照。
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考