如何让扫描PDF支持搜索:OCRmyPDF 完整上手指南
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
扫描仪吐出来的 PDF,点开却搜不到任何一个字——这是纸质文档数字化后最头疼的问题:全文检索用不了,想复制一段话只能逐字重打。OCRmyPDF 是给扫描 PDF 加 OCR 文本层的命令行工具,让文档可搜索、可复制,原图原样保留,适合处理旧合同、老论文和手机照片的用户。
典型的扫描件:内容都在,但全是图像,搜不到任何一个字
30 秒装好并跑通第一条命令
按你的系统复制对应的一行安装命令即可,依赖会自动装齐:
- macOS:
brew install ocrmypdf - Debian / Ubuntu / WSL:
apt install ocrmypdf - Fedora:
dnf install ocrmypdf tesseract-osd
各平台更细的安装步骤见 docs/installation.md。装完不用翻文档,直接跑这条最小命令:
ocrmypdf --deskew --rotate-pages input.pdf output.pdf它做了三件事:检测并纠正页面倾斜、把横竖颠倒的页面转正、识别文字并在原图下方贴一层可搜索文本,最终生成 output.pdf。处理 200 页左右的文档,普通笔记本上通常一两分钟就能跑完,进度全程可见:
执行过程中会显示并发页数、OCR 进度和最终的压缩率
按处理流程看懂核心能力:从校正到 PDF/A
🧹 输入端:先把"歪"和"脏"处理掉
扫描件歪 3° 以上,识别率就会明显下降。--deskew通过检测文本基线角度把页面自动摆正,--rotate-pages处理颠倒的页;背景泛黄或有噪点时,再加--clean、--remove-background清理,对旧报纸、泛黄存档这类文档改善尤其明显。
一份老式打字机文档的扫描页,正是这类校正功能的主要处理对象
🔍 核心转换:生成能"贴回原位"的双层 PDF
识别由 Tesseract 引擎完成,支持 100 多种语言,中英混排文档用-l chi_sim+eng一次指定即可,语言包安装方法见 docs/languages.md。它和多数同类工具的区别在于:文本层按原文排版位置逐字放置,复制出来的文字顺序是对的,不会变成堆在页底的一大段。需要纯文本时加个参数就行:
ocrmypdf --sidecar out.txt input.pdf output.pdf--sidecar会额外输出一份纯文本,方便直接编辑或做数据统计。
📦 输出端:默认 PDF/A,还能顺带瘦身
默认输出符合 ISO 标准的 PDF/A,适合长期归档。输入若是高分辨率扫描件,--optimize会重新压缩图像,输出文件经常比输入还小:
ocrmypdf --optimize 3 input.pdf output.pdf等级 0–3 越高压缩越狠,归档场景用 3 通常没问题。
实战场景:批量档案与单张手机照片的参数组合
场景一:一柜扫描档案批量 OCR(重度)。文件夹里几百个 PDF,套一层循环批量处理,多核默认并行,跑完原文件不动,ocr_前缀的就是可搜索版本:
for f in *.pdf; do ocrmypdf --deskew "$f" "ocr_$f" done2000 页的档案库,四核机器上一小时左右能过完,中途断电重跑不会弄坏原文件。
场景二:手机拍的合同转正存档(轻量)。手机拍摄角度随意,倾斜、方向问题一条命令解决,输入是图片也没关系:
ocrmypdf --deskew --rotate-pages photo.jpg document.pdf输出就是可直接放进档案系统的双层 PDF,拍照、处理、归档一步到位。
进阶调优:识别不准、校验失败的对策
- 如果扫描件分辨率低、识别出的文字缺字断句,加上
--image-dpi 300,它会先把页面按 300 DPI 重新光栅化再识别。 - 如果输出反复通不过 PDF/A 校验,多半是原文件带了不支持的字体或元数据,先用
--output-type none跳过校验定位问题,再决定是修原件还是换输出格式。
底层机制:它调用了哪些引擎
OCRmyPDF 自己不实现识别算法:文字识别交给 Tesseract 引擎,倾斜校正与背景清理调用 unpaper,PDF/A 转换和校验由 Ghostscript 完成,各组件的版本探测在 src/ocrmypdf/_exec/tesseract.py 等模块里。它的角色更像调度器——把光栅化、识别、排版、压缩串成一条流水线,每步之后校验结果,出错时直接报告是哪一环失败。
想查全部选项就跑ocrmypdf --help,也可以克隆源码看看实现:git clone https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
下次扫描仪再吐出一摞搜不到字的 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),仅供参考