news 2026/9/3 13:40:48

OCRmyPDF:让扫描PDF变得可检索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OCRmyPDF:让扫描PDF变得可检索

OCRmyPDF:让扫描PDF变得可检索

【免费下载链接】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文字识别的命令行工具:给扫描件加一层可搜索的文本层,原图原样保留。装好之后,三条命令就能跑起来。

它解决什么问题

OCRmyPDF 是一个用光学字符识别给扫描件叠加可检索文本层的命令行工具。没有它时,你得把每页转成图片、跑识别、再手动拼回PDF,文字容易错位、图像容易被二次压缩。有了它,一条命令跑完:底层扫描件原样保留,上面贴了一层文字,Ctrl+C、Ctrl+F 都能照常工作。

最小可用演示:三行命令跑通首次转换

先装一下:Ubuntu/Debian 用apt install ocrmypdf,macOS 用brew install ocrmypdf,其他发行版也有对应包。

最基本的用法,输入一个扫描PDF,输出带文本层的可搜索PDF:

ocrmypdf 扫描.pdf 可搜索.pdf

打开输出,图像和原稿一模一样,但文字可以选中、可以 Ctrl+F 搜索;终端会逐页报告进度,输出默认是 PDF/A-2b 归档格式。

手里只有 JPG、PNG 还没合PDF时,直接把图片文件喂进去:

ocrmypdf 扫描页.jpg 扫描页.pdf

跑完你就得到一份单页可搜索PDF,不用自己先合并。

这里有个坑:不传-l时它默认只认英文,中英混排文档要把语言码用+连起来:

ocrmypdf -l chi_sim+eng 双语.pdf 结果.pdf

OCRmyPDF 本体没有图形界面,Docker 镜像里的 web 服务只是个演示前端,命令行才是主体。

🔍 内部怎么转:栅格化、识别、贴层

把一个扫描页送进流水线,中间就三步:

  1. 页面栅格化:先分析每页的颜色空间和分辨率,再用 pypdfium2 或 Ghostscript 把页面渲染成图像。原因很简单:Tesseract 只吃图片,不吃 PDF。
  2. 文字识别:Tesseract 认出图像里的文字和它们的坐标,语言包按需安装。选它是因为成熟、免费,百种以上语言支持足够覆盖常见文档。
  3. 文本层重建:识别结果用 fpdf2 渲染成透明文本层,按原坐标贴回原PDF;输出默认 PDF/A-2b,工具还会在收尾时校验文件有效性。

整个过程好比在扫描件上罩一层透明胶片,把认出来的字一笔一画写在原字底下——底层图没动过,复制时拿到的却是文字。

挑两个场景落地

旧文档扫描:顺手校正倾斜,再导出文本校对

扫描件歪了、有噪点,还想拿纯文本核对识别结果,就在基础命令上加三个参数:

ocrmypdf --clean --deskew --sidecar 书.txt -l chi_tra 旧书.pdf 旧书_ocr.pdf

跑完--clean去噪、--deskew扶正页面、--sidecar多导一份 .txt,可搜索PDF和用于校对的文本文件一起拿到手。

一文件夹扫描件发票,整批处理

文件夹里几百份扫描件不用写循环,命令直接接受目录作输入,默认并行用满所有CPU核心:

ocrmypdf 发票/ 发票_ocr/

一次跑完,输出文件在目标目录里同名就位,事后直接在结果PDF里搜发票号码。

选型参考与资源

  • 如果你之前用“Ghostscript 出图 + Tesseract 识别 + 图片拼回PDF”的土办法,核心差异是:OCRmyPDF 把文本层写回原PDF,原图不重压缩、元数据保留,输出还自动做有效性校验。

  • Ghostscript 自带的 pdfocr 设备会把整页栅格化成单一色彩空间,OCRmyPDF 则逐页分析,已有文字层的页面直接跳过不动。

  • 官方文档·项目介绍

  • 命令行选项参考

  • 批处理示例脚本

这样,扫描件就能检索了。

【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 13:40:03

开源嵌入式调试新选择:cpudbg 架构解析与实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 13:38:42

ElasticSearch知识点总结

倒排索引:当用户输入查询内容,利用分词器对用户输入的内容分词,然后取倒排索引库中匹配,拿到文档id,然后根据文档id查询文档内容(Elasticsearch 默认会返回文档的 _source 字段(原始 JSON 内容&…

作者头像 李华
网站建设 2026/9/3 13:34:06

行业收缩期如何转型?先判断风险,再迁移能力

如果所在行业开始收缩,你的第一反应是什么?我见过不少人的第一反应不是分析风险,而是怀疑自己是不是不够努力。真实情况往往是相反的。行业一旦进入调整期,大量岗位消失和个体能力没有直接关系。我更想聊一个可执行的问题&#xf…

作者头像 李华