OCRmyPDF 离线 OCR 完整指南:断网也能给扫描 PDF 加可搜索文本层

📅 发布时间:2026/10/13 1:39:01
OCRmyPDF 离线 OCR 完整指南:断网也能给扫描 PDF 加可搜索文本层
OCRmyPDF 离线 OCR 完整指南断网也能给扫描 PDF 加可搜索文本层【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDFOCRmyPDF 是一个给扫描 PDF 加 OCR 文本层的命令行工具加完之后文字可以框选、复制、搜索。它的识别、排版、压缩全部在本地机器上完成只要备料做足离线、断网、内网隔离环境下照样完整可用——真正需要联网的只有补给动作下载安装包和语言包。所以整条思路就一句话下载的事交给联网机器干活的事全放在断网机器上。1. 断网前划清边界OCRmyPDF 离线能做和不能做什么先把范围说清楚避免在离线机上白忙活场景断网环境下说明对 PDF / 图片执行 OCR、生成带文本层的输出✅ 完全支持识别、排版、压缩全部在本地完成识别中文、日文等其他语言✅ 支持前提对应的.traineddata语言包已随安装包一起带过去输出 PDF/A、--clean清洗、--optimize压缩✅ 支持分别依赖本地程序 unpaper、Ghostscript、pngquant备料时装好即可下载新语言包❌ 需要网络在有网机器上下载再拷入离线机升级 OCRmyPDF 及依赖❌ 需要网络离线机沿用已部署的版本即可一句话离线机完全自给自足它只负责干活不负责进货。2. 趁联网把料一次下齐包、wheel 和语言包一个都不能少备料的核心是一次下齐。下面这份清单的版本要求均来自项目安装文档逐行对照打钩组件用途获取方式Python 3.11 或更高推荐 3.12运行 OCRmyPDF官方安装程序或发行版包Tesseract 4.1.1 或更高OCR 识别引擎发行版包管理器 / 官方安装程序Ghostscript 9.54 或 pypdfium2页面栅格化、PDF/A 转换系统包pypdfium2 随 wheel 一起下载fpdf2、uharfbuzz 等 Python 依赖渲染文本层在有网机器执行pip download ocrmypdf -d ./wheels一次带齐全部 wheel.traineddata语言包各语言的识别数据从 tessdata 源下载与安装包一起拷贝fonts-noto 字体包推荐正确渲染多语种文字apt install fonts-notoDebian/Ubuntuunpaper / pngquant / jbig2enc可选支撑--clean、--optimize 2/3、单色图压缩发行版包管理器⚠️ 最容易被漏掉的是.traineddata它不随 Tesseract 默认全量安装。如果离线后要识别中文务必把chi_sim.traineddata放进待拷贝清单并直接放进目标机器的tessdata目录。3. 离线机上安装Linux、Windows、macOS 三条路径三个系统思路一致把在线渠道能拿到的东西全部落成文件拷到离线机本地安装只是渠道不同。Linux包文件预缓存本地安装在有网机上用发行版自带的下载命令把依赖全量缓存拷贝后本地安装apt-get download ocrmypdf ghostscript tesseract-ocr python3 python3-pip dpkg -i *.debFedora、Alpine 同理换用dnf download/apk缓存即可在线参考命令apt install ocrmypdfFedora 为dnf install ocrmypdf tesseract-osd。部分发行版默认不带 JBIG2 编码器离线机没有它也能跑只是输出文件会大一些。Windows安装器 本地 wheel 收尾64 位 Python、Tesseract、Ghostscript 三个安装器按顺序装完Python、Tesseract 可走 wingetGhostscript 手动装OCRmyPDF 本体用本地 wheel 安装全程不连 PyPIpip download ocrmypdf -d ./wheels pip install --no-index --find-links./wheels ocrmypdf⚠️ 两条命令分别在在线机和离线机执行。第二条里的--no-index是关键它让 pip 完全不连网络索引只从本地./wheels目录里找包——离线安装能不能零联网就看这一参数。另外官方不支持 32 位 Windows。macOS整包迁移 Homebrew 前缀有网机上执行brew install ocrmypdf含 Tesseract、Ghostscript、英语包然后把整个 Homebrew 前缀目录连同下载缓存归档打包拷贝离线机装好 Homebrew 后解开即用。若还要识别其他语言先在有网机执行brew install tesseract-lang备下全量语言包再迁移避免离线机上临时补包。4. 部署后的两条自检命令外加五个最常见的坑部署完别急着处理文件先跑两条命令确认环境完整ocrmypdf --version tesseract --list-langs第一条能打印版本且无报错说明外部依赖Python、Tesseract 等都已就位第二条列出本机可用的语言包离线识别中文前确认chi_sim在其中。出了问题大概率是下面这五种之一对着症状找对策症状对策Tesseract couldnt find a language data file语言包没放到位把.traineddata拷入tessdata目录目录不在默认位置时用TESSDATA_PREFIX环境变量指过去Tesseract 报打不开 config file hocr手工拼的tessdata缺configs/子目录从完整安装中补齐提示某些文字没有可用字形安装对应文字体系的 Noto 字体包文本层仍可搜索仅高亮显示受影响大文件处理时内存不足用--pages指定页码分段处理或加大交换空间--clean报 unpaper 缺失安装 unpaper装不了就省掉--clean其余功能不受影响5. 处理第一份扫描件从一张打字机稿到可搜索 PDF再到批量化用仓库自带的黑白打字机扫描件tests/resources/typewriter.png4000×2864 像素演示完整流程ocrmypdf --language eng --clean --output-type pdfa tests/resources/typewriter.png recipe.pdf参数逐条说明--language eng识别英语即该扫描件的语言中文文档换成chi_sim--clean识别前先做去噪清洗扫描质量越差收益越大依赖 unpaper--output-type pdfa输出 PDF/A 存档格式适合长期保存最后两个位置参数输入文件、输出文件跑完用 PDF 阅读器打开recipe.pdf页面看起来还是那张扫描图但文字已经可以框选、复制、搜索——文本层就压在图像底下。如果输入是图文混排文档加--mode skip即可跳过已有文本的页只处理纯扫描页。文件多起来就批量化最朴素的方式是一个循环对当前目录每个 PDF 生成带ocr_前缀的副本for f in *.pdf; do ocrmypdf --language eng $f ocr_$f; done仓库的misc/batch.py是现成的批量示例递归查找目录中的 PDF 并逐个处理复制一份按需改目录参数即可。想再进一步misc/watcher.py可以盯着一个目录新放进来的 PDF 自动走一遍 OCR——它依赖额外组件在线装一次pip install ocrmypdf[watcher]离线机上照常运行。各系统的完整安装细节与语言包获取方式详见官方文档安装文档语言支持文档【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考