扫描PDF变可搜索:OCRmyPDF 的 3 个高频任务一次讲清
【免费下载链接】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的命令行工具:它用 Tesseract 引擎识别页面文字,把结果以隐形文本层叠在原图下方,让你可以搜索、复制,同时保留原始排版。如果你手里有一堆扫描件、老打字机页面或票据,这篇教程能帮你 5 分钟跑通它。
一页搜不到字的旧文档
上图是一张老打字机排版的菜谱页。把它扫进PDF后,它就变成一张大图片:选不中文字、Ctrl+F 找不到词、想复制一段只能手动重打。
OCRmyPDF 解决的就是这件事。处理完后,这页上的文字可以正常搜索和复制,外观仍和原扫描件一致。整个过程在本地完成,文件不出你的机器。
装好就能用
最短安装路径(Debian/Ubuntu):
apt install ocrmypdfmacOS 用户用brew install ocrmypdf即可,包管理器会一并装好 Tesseract 引擎。想从源码构建的话,git clone https://gitcode.com/GitHub_Trending/oc/OCRmyPDF 然后执行pip install .。
装完先跑ocrmypdf --help,全部参数和说明都在里面。
最常用的 3 个任务
单文件:一条命令加可搜索文本层
ocrmypdf -l eng input.pdf output.pdf-l eng告诉引擎文档语言是英语。输出默认是 PDF/A 文件(PDF/A 是为长期归档设计的PDF标准子集),并自动通过格式校验。
上图是一次真实运行:8 页并行处理,全程显示进度条,结尾报告输出文件是合规的 PDF/A-2B。
混合内容:--skip-text 跳过已有文本页
有些PDF里部分页面已经有文本层。默认模式下,OCRmyPDF 检测到已有文字会直接报错拒绝处理。加--skip-text就会跳过含文字的页、只识别纯图像页;如果你想整页重新识别,改用--force-ocr。
批量处理:find 一条命令扫全文件夹
官方批量文档给出的就地处理写法(文件本身既当输入也当输出,只在成功时才覆盖原文件,见 docs/batch.md):
find . -name '*.pdf' -exec ocrmypdf -l eng '{}' '{}' \;文件多时可用 GNU parallel 同时跑两个任务,官方示例脚本在 misc/batch.py,还带目录树遍历版本。
⚠️ 3 个高频坑
报错"页面已包含文字"原因:默认模式检测到已有文本层,拒绝覆盖。 解法:
--skip-text跳过文字页,或--force-ocr强制整页重识别。识别乱码、文字错位原因:扫描件模糊,或没指定正确语言。 解法:加
--oversample 600提升识别分辨率,并装对应语言包,如中文简体apt-get install tesseract-ocr-chi-sim。大文件处理慢原因:默认会分发到所有CPU核心并行,大文件同时占内存。 解法:用
--pages 1-50只处理指定页码,或用--jobs 1限制核心数。
扫描文档数字化里最费事的"可搜索文本层 + 归档格式"这一步,OCRmyPDF 用一条命令就解决了。想改行为或扩展功能,可以读 src/ocrmypdf/builtin_plugins/ 里的内置插件实现,完整参数说明在 docs/。
【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考