news 2026/9/2 15:02:51

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

OCRmyPDF 的作用是把扫描版 PDF(或图片)转成带隐藏文字层、可搜索可复制的文档。它运行 OCR 时完全不需要联网,前提是三样东西在断网前就装齐:Python 运行时、Ghostscript(负责把页面栅格化和重排 PDF)、Tesseract(真正干识别活的语言引擎)。下面按"断网前备料 → 分系统装好 → 离线配置 → 常用命令 → 批量玩法 → 断网排障"的顺序走一遍。

断网后缺什么:一次说清 4 个依赖

OCRmyPDF 本体只是一个 Python 程序,它不会自己下载任何东西,但会调用外面装的工具。断网后装不上或跑不起来,问题基本出在下表这几行:

物料版本要求角色离线形态
Python≥ 3.11(见 pyproject.toml 的requires-python运行 OCRmyPDF 本体系统包或安装包
Ghostscript≥ 9.54;注意 9.56.0 有已知问题,选 9.56.1 或更新版本栅格化、压缩输出系统包
Tesseract≥ 4.1.1OCR 引擎,依赖语言包系统包
OCRmyPDF当前稳定版(仓库为 17.8.1)主控程序.whl文件

另外注意:Python 依赖包(pikepdf、Pillow、fpdf2 等十几个)也要一并备齐,否则本体装得上、跑不起来。

断网前先把物料备齐:一份可以直接执行的清单

Linux:一条命令把系统包和 wheel 全下下来

同架构、同版本的联网机器上执行(离线机器是 Debian/Ubuntu 就选第一条命令):

# Debian/Ubuntu:下载 ocrmypdf、Ghostscript、Tesseract 及简体中文语言包 apt-get download ocrmypdf ghostscript tesseract-ocr tesseract-ocr-chi-sim python3 # Fedora:同样思路,换成 dnf dnf download --resolve ocrmypdf ghostscript tesseract tesseract-langpack-chi_sim # Python 依赖的 wheel:pip 直接下载、不安装,全部落到 ./wheels/ pip download ocrmypdf -d ./wheels/

把目录里的全部文件拷到离线机器即可。

macOS:用 brew bundle 把整条工具链打成一个包

brew bundle dump -f -w -g -n > Brewfile # 把当前已装的依赖导出成清单 brew bundle --file=Brewfile --write --global --github # 生成可离线搬运的 tarball

再顺手pip download ocrmypdf -d ./wheels/把 Python 侧备齐。

三个系统上分别怎么落地

Linux:先装 .deb / .rpm,再用本地 wheel 装本体

dpkg -i *.deb # 或 rpm -ivh *.rpm apt-get install -f -y # 兜底修复残留的依赖关系 pip install --no-index --find-links ./wheels/ ocrmypdf # 强制只用本地目录找包

--no-index --find-links是关键:它让 pip 放弃访问 PyPI,只从你拷进来的./wheels/里找包,彻底杜绝"装到一半卡在网络请求"。

Windows:按固定顺序装四样东西

先装 Python → Ghostscript → Tesseract(三家都是各自官网的常规安装包),然后用本地 wheel 装本体:

pip install --no-index --find-links C:\offline\wheels ocrmypdf

如果 Tesseract 没装在默认目录,给 Tesseract 配一个TESSDATA_PREFIX环境变量,指到它的tessdata文件夹,否则下一步就会报"找不到语言数据"。

macOS:恢复 brew 包,再装本体

brew bundle restore --global Brewfile.tarball brew untap homebrew/bundle # 恢复完清掉临时 tap pip install --no-index --find-links ./wheels ocrmypdf

装完任何系统,先跑ocrmypdf --version:能打印出版本且无报错,说明 Ghostscript 和 Tesseract 都被正确找到了。

离线配置要点:语言包、TESSDATA_PREFIX 与默认参数文件

无网环境下配置 Tesseract 语言包

语言包就是.traineddata文件,按三字母语言代码命名(简体中文是chi_sim,西班牙语是spa)。各系统的存放位置和离线获取方式:

系统tessdata 目录离线获取方式
Debian/Ubuntu/usr/share/tesseract-ocr/*/tessdata/语言包本身是独立 apt 包,联网机上apt-get download tesseract-ocr-chi-sim后随包一起装
Fedora/usr/share/tessdata/dnf download tesseract-langpack-chi_sim
WindowsC:\Program Files\Tesseract-OCR\tessdata\.traineddata直接拷进去
macOSHomebrew tesseract 的share/tesseract/tessdata/同上,手动拷贝

目录不在默认位置时,设TESSDATA_PREFIX环境变量指过去即可,不需要改任何代码。多语言混排的文档用加号组合:ocrmypdf -l eng+chi_sim in.pdf out.pdf-l就是告诉 Tesseract 按哪些语言识别。

用 ~/.ocrmypdf 固化常用参数

在用户主目录建一个~/.ocrmypdf文件,每行写一个参数,等价于每次手动敲:

--skip-text --output-type pdfa --optimize 2

这样批量跑脚本时不用把同一串参数重复写一遍,也减少敲错参数的机会。

高频命令速查:参数第一次出现时就解释清楚

参数解决什么问题
-l eng指定识别语言,缺省只认英语
--skip-text跳过已有文字层的页面,只对纯图像页跑 OCR,省时
--clean先对图像做去噪、纠偏等预处理,烂扫描件识别率更高
--output-type pdfa输出 PDF/A 存档格式,字体和色彩信息内嵌,适合长期保存
--optimize 3交给 Ghostscript 压缩(0 不压,3 最狠),文件更小但更慢
--pages 1-10只处理第 1 到 10 页,大文件分段跑、出错好定位

最简调用只需要两个位置参数:

ocrmypdf in.pdf out.pdf

带完整参数的一个实际例子:

ocrmypdf --language chi_sim --skip-text --clean \ --output-type pdfa --optimize 2 input.pdf output.pdf

进阶玩法:批量处理与目录监听

断网时批量处理 PDF 的 shell 脚本

# 遍历当前目录,逐一转成 PDF/A,输出到 out/ mkdir -p out for f in *.pdf; do ocrmypdf -l eng+chi_sim --output-type pdfa "$f" "out/$f" done

文件多、路径跨目录、需要日志时,用仓库里的 misc/batch.py:它读一个"输入路径→输出路径"的列表文件,逐对处理,比裸 for 循环稳。

让 watcher 脚本盯着一个目录自动出件

misc/watcher.py 会持续监控一个文件夹,新 PDF 一丢进来就自动 OCR。它依赖watchdog这个额外 Python 包——离线机上要么提前装好,要么用pip download一起备进./wheels/,装不上它就别用这个玩法。

断网排障清单:按出现频率从高到低查

症状最可能的原因处理
报找不到chi_sim.traineddata之类的语言数据语言包没拷进 tessdata,或路径非默认补拷文件;非默认路径就设TESSDATA_PREFIX
提示找不到 tesseract 或 ghostscript没装、或不在 PATH重跑安装;Windows 注意把安装目录加进 PATH
装本体时卡住或报网络错误pip 仍在访问 PyPI确认命令里带--no-index --find-links
大 PDF 跑到一半内存爆掉单文件过大--pages 1-50分段处理;内存实在不够再加交换空间

排错顺序建议固定:先看报错第一行点名的组件 → 对号入座上表 → 跑ocrmypdf --version验证依赖是否齐。

收尾速记

  • 断网前备齐:系统包(Ghostscript、Tesseract、语言包)+ OCRmyPDF 的 wheel 及其全部 Python 依赖,拷进同一目录。
  • 安装时 pip 永远带--no-index --find-links,只认本地物料。
  • 跑批用 shell 循环或 misc/batch.py,盯目录出件用 misc/watcher.py。
  • 报错先看语言包和 PATH 两处,十次里九次问题在这。

【免费下载链接】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/2 15:01:51

Revit建筑设计思维课堂:从标高轴网入门到BIM体系构建

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

作者头像 李华
网站建设 2026/9/2 15:01:32

旗舰游戏本深度测评全流程:满血功耗与性能实测方法

如果你最近在关注 2026 年的旗舰游戏本,大概率刷到过“HyperX暗影精灵MAX”这类内容,标题通常很直接:300W 释放、RTX 5080 满血、性能怪兽。作为开发者,我对这些数字天然感兴趣,但更想弄清楚的是:这些宣传词…

作者头像 李华
网站建设 2026/9/2 15:00:24

基于开源NLP的本地化网络舆情分析实战:从数据采集到可视化

这次我们来看一个名为“峰哥:梁文峰是我粉丝!不要神化梁文峰!太狂了!”的项目。从标题来看,这并非一个传统的技术工具或AI模型,而更像是一个涉及网络人物、粉丝文化与舆论现象的事件或话题。这类内容通常不…

作者头像 李华
网站建设 2026/9/2 15:00:20

Python自动化实战:Selenium与Requests结合实现雨课堂学习辅助工具

简介:本资源是一款面向高校学生与教育技术开发者的毕业设计级Python工具,旨在辅助雨课堂(RainClassroom)在线学习场景中的自动化操作与信息管理。针对课程签到监控、课件下载、通知提醒等高频需求,提供轻量级桌面端解决…

作者头像 李华
网站建设 2026/9/2 15:00:10

手把手:论文的研究时间线怎么分步绘制

毕业论文基本都要附一份研究时间线或进度图,但很多同学画出来的不是"任务挤成一团",就是"时间空到导师怀疑没计划"。时间线的作用不只是应付开题,它更是你后面 3-6 个月按节奏推进的路线图。这篇文章按 8 个步骤&#xf…

作者头像 李华
网站建设 2026/9/2 14:59:22

118、ANSYS Maxwell电机电磁仿真

118、ANSYS Maxwell电机电磁仿真——从“仿真不准”到“一次过模”的实战笔记 一、一个让我半夜改参数的案例 去年做一款48V/500W的永磁同步电机,样机出来实测反电动势波形跟仿真差了将近15%。当时团队里新来的研究生拿着Maxwell的仿真报告跟我说“老师,仿真结果很完美”,…

作者头像 李华