如何给扫描 PDF 加上可搜索文本层:OCRmyPDF 快速上手指南
如何给扫描 PDF 加上可搜索文本层OCRmyPDF 快速上手指南【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF扫描件有一个让人抓狂的属性看起来是文档搜起来是图片。你在 Adobe 阅读器里按 CtrlF 找发票两个字半天等不到结果——因为那个 PDF 里根本没有文字只有一页页像素。手动转图再 OCR文本位置全乱、重音符号丢失文件还肿得吓人。OCRmyPDF命令行工具名ocrmypdf就是为这件事做的一条命令在原扫描 PDF 上叠一层精确对齐的 OCR 文字。图片不动文字可搜、可抄、可复制默认还输出符合 ISO 标准的 PDF/A-2b 存档格式。快速认识 OCRmyPDF一条命令补上缺失的文字层它的工作方式可以概括成三步用 Ghostscript 把每一页栅格成图像交给 Tesseract 识别出文字和坐标再把识别结果以不可见的方式贴回原 PDF 对应位置。默认自动利用全部 CPU 核心并行处理还顺手做图像压缩输出文件经常比输入还小上面的截图里8 页文档总体积节省了 53.8%。和手动处理或者自己拼脚本相比它的差别在于维度手动/脚本拼凑OCRmyPDF文字位置容易错位复制粘贴拿到乱序文本坐标级对齐复制即所得原图画质重编码后普遍降质原页保留可跳过栅格化页面多语言各引擎表现不一跟随 Tesseract 语言包上百种语言存档格式基本没有默认 PDF/A-2b可用 veraPDF 校验并发自己写--jobs一个参数搞定一句话它把扫描 → 识别 → 对齐 → 存档校验整条链路的脏活都接管了你只负责喂文件。5 分钟装好 OCRmyPDFLinux、macOS、Windows 最短路径OCRmyPDF 本身是 Python 程序但它调用两个外部引擎Tesseract识别和 GhostscriptPDF 栅格化与存档转换。三者齐活才算装好。平台最短路径说明Debian/Ubuntusudo apt install ocrmypdf一条命令装齐依赖macOSbrew install ocrmypdfHomebrew 同步维护Windows / 通用pip install ocrmypdf需另装 Tesseract 与 Ghostscript并加入 PATHPython 要求 3.11 及以上当前发布版为 17.8.1Tesseract 最低 4.1.1Ghostscript 最低 9.54。装完跑三条命令验证都能打印版本号就万事大吉ocrmypdf --version tesseract --version gs --version跑通第一条 OCR 命令最小示例与中文识别命令怎么写最小可用示例只有三个词ocrmypdf 扫描件.pdf 可搜索.pdf终端会滚动进度条扫描内容、按页 OCR、PDF/A 转换、图像压缩。结束后提示 Output file is a PDF/A-2b (as expected)打开输出文件复制一段文字就成了。中文识别的关键是-l参数指定语言代码chi_simocrmypdf -l chi_sim 中文合同.pdf 输出.pdf如果输入是图片而不是 PDF需要告诉它拍摄 DPIocrmypdf --image-dpi 300 合同照片.png 合同.pdf识别质量不佳时先怀疑语言包或参数而不是工具本身。常用参数速查语言、输出格式、预处理与并发类别参数作用语言-l engchi_sim识别语言连接多语言输出--output-typeauto默认尽力输出 PDF/A/pdfa强制 PDF/A-2b/pdf改动最小/none只要文本已有文字--force-ocr全部重做旧层覆盖已有文字--skip-text含文字页原样跳过已有文字--redo-ocr移除旧 OCR 层后重识别预处理-r/-d/--clean旋转纠正 / 去倾斜 / 图像清理性能-j 4指定 CPU 核心数默认全部元数据--title/--author写入文档属性实用进阶sidecar 文本、参数组合与批量处理sidecar 纯文本输出。识别结果除了嵌进 PDF还可以导出一份 txt用于建索引库或核对识别质量ocrmypdf --sidecar 合同.pdf 输出.pdf # 生成 输出.pdf.txt参数后加文件名可自定义路径参数组合思路。档案级处理-r -d --clean-final加--output-type pdfa再挂上--title、--author追求文件最小--output-type pdf改动最克制。组合没有标准答案按要存档还是要小文件选一边即可。批量处理。一个目录几十个文件shell 循环就够for f in *.pdf; do ocrmypdf --skip-text $f ocr_$f || echo $f 失败 done仓库里还带了一个batch.py脚本misc/batch.py适合需要按页码范围选择性识别的场景用法见 docs/batch.md。常见问题排查报错信息对照与修复方法1. page already has text现象提示页面已含文字直接中止。原因文件本身已有文本层或水印工具默认拒绝重复劳动。解法确认要重做就加--force-ocr只想处理扫描件页就--skip-text想升级旧层用--redo-ocr。2. not a valid PDF现象输入文件被判为无效。原因PDF 截断或损坏多为拷贝未完成。解法重新传输或先让 Ghostscript 重写一遍再喂进来。3. Tesseract cannot open its config file hocr现象Tesseract 静默无输出。原因手动拼装的 tessdata 目录缺少configs/子目录。解法从系统包管理器重装 Tesseract或补全 configs 文件。4. 语言代码报错现象提示找不到指定语言。原因对应的 Tesseract 语言包没装比如chi_sim需要 tesseract-ocr-chi-sim。解法装对应语言包用tesseract --list-langs确认已生效。5. 大页面内存不足现象中途 OOM任务被杀。原因高 DPI 大页一次性进内存。解法调小-j的并发数或先把大文件分页再处理。更多错误对照见 docs/errors.md安装细节见 docs/installation.md。写在最后从一条ocrmypdf 输入.pdf 输出.pdf开始把扫描件变成可搜的文档只要几十秒。语言用-l指定存档交给默认的 PDF/A批量交给 shell。遇到报错别慌先看上面的对照表想深入docs/index.md 是从入门到 API 的完整文档入口。工具已经足够成熟剩下的只是把文件喂给它。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

OCRmyPDF 完整上手指南:给扫描版 PDF 加上可搜索的文字层

OCRmyPDF 完整上手指南:给扫描版 PDF 加上可搜索的文字层

OCRmyPDF 完整上手指南:给扫描版 PDF 加上可搜索的文字层 【免费下载链接】OCRmyPDF OCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched 项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF OCRmyPDF 是一个命令…

2026/9/2 21:19:33 阅读更多 →
开发者如何应对天玑9600的2nm革新

开发者如何应对天玑9600的2nm革新

2nm工艺:不止是数字游戏联发科天玑9600系列将采用台积电2nm N2P工艺,这是安卓旗舰芯片首次迈入2nm制程。对开发者而言,工艺升级意味着晶体管密度大幅提升,相同芯片面积内能塞入更多计算单元。这直接反映在应用可调用的并行计算资源…

2026/9/2 18:16:38 阅读更多 →
丝路传说单机版架设全攻略:从解压到进游戏完整指南

丝路传说单机版架设全攻略:从解压到进游戏完整指南

简介:面向服装设计与打板学习者的单机版CAD工具包,围绕“丝绸之路”服装打板软件提供完整安装与运行支持,适合服装专业学生、制版师以及希望将手工打板流程转为数字化操作的用户。压缩包共160个文件,大小仅14.49MB,主要…

2026/9/2 21:08:33 阅读更多 →

最新新闻

工程师如何用工程化思维做技术内容营销:从零曝光到百万曝光的实践指南

工程师如何用工程化思维做技术内容营销:从零曝光到百万曝光的实践指南

/* 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:55:34 阅读更多 →
车载司机行为识别系统:深度学习+Python+GUI实战

车载司机行为识别系统:深度学习+Python+GUI实战

简介:本资源是一个基于深度学习的司机危险驾驶行为识别告警系统完整实现,面向计算机、人工智能及相关专业本科生毕业设计、课程设计与项目实战学习者,聚焦疲劳驾驶(打哈欠、闭眼)、分心驾驶(打电话、抽烟、…

2026/9/3 13:55:34 阅读更多 →
构建高质量青光眼眼底影像分割数据集:从临床需求到AI落地的全流程实践

构建高质量青光眼眼底影像分割数据集:从临床需求到AI落地的全流程实践

简介:本资源为面向医学图像分析研究者与AI医疗开发者的专业级青光眼眼底成像分割数据集,聚焦视盘、杯盘比及神经纤维层等关键结构的像素级标注,旨在支撑自动诊断模型训练与分割算法优化。压缩包含2000个文件(1020张PNG、979张JPG眼…

2026/9/3 13:55:34 阅读更多 →
Vibe Coding多AI Agent协同编程:从概念到实战工作流

Vibe Coding多AI Agent协同编程:从概念到实战工作流

如果你最近在B站刷到各种"Vibe Coding"、"氛围编程"的视频,可能会觉得这又是一个新的编程框架或工具。但真相是:Vibe Coding不是具体技术,而是一种全新的编程工作流理念,它通过AI编程助手的协同配合&#xff…

2026/9/3 13:55:34 阅读更多 →
从2万亿美元估值看Claude API:开发者如何正确接入与验证大模型能力

从2万亿美元估值看Claude API:开发者如何正确接入与验证大模型能力

这个标题看起来很夸张,但先说结论:Anthropic 并没有在任何一轮融资里把公司估到 2 万亿美元。“2 万亿美元估值”更多是市场讨论里的远期空间测算,或者是某类“极端乐观情景”下的目标价推导。 如果只聊估值概念,这篇文章的价值不…

2026/9/3 13:55:33 阅读更多 →
Python评论数据分析系统实战:从采集到可视化的完整链路

Python评论数据分析系统实战:从采集到可视化的完整链路

/* 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:54:33 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

/* 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 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

/* 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 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →