OCRmyPDF离线部署指南:断网内网一次搞定扫描OCR
OCRmyPDF离线部署指南断网内网一次搞定扫描OCR【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF矿区笔记本上的那份图纸地质队带进山里的笔记本电脑船坞隔离网段里的资料整理机灾后现场收上来的纸质材料——共同点只有一个没网但有扫描件要能搜。OCRmyPDF 给扫描文档补一层可搜索、可复制的 OCR 文本层这条流程全程离线、不碰网络。只要你在有网的机器上把依赖、语言包和字体备齐断网机器上就是自给自足。为什么它能在断网时跑OCRmyPDF 的每一步计算都发生在本地页面栅格化由 pypdfium2 或 Ghostscript 完成识别由本机 Tesseract 引擎完成文本层渲染由 fpdf2 与 uharfbuzz 这两个 Python 包完成压缩靠 pngquant。输入一份扫描 PDF数据流向是页面像素 → Tesseract 识别 → 文字坐标与字形 → 压在图像下方的文本层全程零网络调用。唯一需要联网的动作是补给安装依赖、下载.traineddata语言包、拉 Docker 镜像。把这些动作前移到有网机器离线端就是纯本地运算。有网机器上打包这七样下表所有版本要求都出自 docs/installation.md 的依赖清单逐项核对。组件作用获取方式必选/可选Python 3.11推荐 3.12运行 OCRmyPDF发行版包或官方安装程序必选Tesseract 4.1.1OCR 识别引擎包管理器 / Windows 官方安装器必选.traineddata语言包各语言识别数据tessdata 源下载apt 装tesseract-ocr-语言必选Ghostscript 9.54栅格化、部分 PDF/A 转换包管理器 / 官网安装包必选或 pypdfium2Python 依赖 wheelfpdf2、pikepdf[pdfa]、Pillow、pypdfium2、uharfbuzz 等pip download ocrmypdf -d ./wheels必选fonts-noto 字体包非拉丁文字渲染apt install fonts-notoFedora 装google-noto-fonts-all推荐unpaper / pngquant / jbig2enc--clean去噪、--optimize压缩、单色图压缩发行版包管理器可选⚠️ 最容易漏的不是语言包文件而是tessdata/configs/子目录如果你手工拼 tessdata只拷.traineddata而漏掉configs/hocr和configs/txtTesseract 会静默失败、不产生任何输出。从一份完整安装里把整个tessdata目录一起拷走最省心。Linux包文件预缓存断网机本地装策略有网机上把发行版包全量下载成文件离线机上逐个安装装的过程不再连仓库。在有网机器上执行缓存再在离线机器上安装# 有网机把 OCRmyPDF 及系统依赖缓存为 deb 文件 apt-get download ocrmypdf tesseract-ocr ghostscript python3 python3-pip # 离线机本地安装Fedora 换成 rpm 的离线安装 dpkg -i *.deb易错点离线机的基础系统版本要和缓存包的发行版一致版本对不上会因依赖冲突装不动。Windows三个安装器加一份 wheel 目录策略64 位 Tesseract、Ghostscript、Python 三个安装器按顺序离线装完OCRmyPDF 本体用本地 wheel 收尾。在有网机备料在离线机安装# 有网机缓存全部 Python 依赖 wheel pip download ocrmypdf -d ./wheels # 离线机彻底断开 PyPI 索引只从本地目录装 pip install --no-index --find-links./wheels ocrmypdf易错点第二条命令的--no-index不能省省掉后 pip 会尝试连 PyPI 卡住32 位 Windows 官方不支持。macOS整份 Homebrew 前缀打包迁移策略有网机上用 brew 装全含全量语言包把 Homebrew 前缀目录连同下载缓存整包迁移。有网机上执行装完再整体拷贝brew install ocrmypdf tesseract-lang易错点只装ocrmypdf默认只带英语离线机上补tesseract-lang又要网络务必同一次装齐迁移目录时保持目录结构完整。Docker镜像 save/load 走一遍策略镜像本身就是一个自包含的离线环境save 成 tar离线机 load 即可连系统依赖都不用管。# 有网机拉取官方 Alpine 镜像并导出 docker pull jbarlow83/ocrmypdf-alpine docker save -o ocrmypdf.tar jbarlow83/ocrmypdf-alpine # 离线机加载镜像 docker load -i ocrmypdf.tar # 离线机管道方式跑一次 OCR输入走 stdin输出到 stdout docker run --rm -i jbarlow83/ocrmypdf-alpine - - input.pdf output.pdf易错点tar 体积较大提前规划好拷贝通道命令行的完整用法见 docs/docker.md。四个平台的关键差异与大致耗时平台关键差异耗时预估Linux基础系统版本必须与缓存包匹配10~30 分钟Windows安装器与 wheel 要分开备20~40 分钟macOS迁移整个 Homebrew 前缀30~60 分钟Docker只需传一个镜像 tar 文件10 分钟三条命令体检版本、语言包与一次试跑部署完先验证再干活。下面三条命令都在离线机上执行。ocrmypdf --version tesseract --list-langs ocrmypdf --language nld tests/resources/linn.pdf /tmp/linn_ocr.pdf第一条打印版本号且无报错说明 Python 与外部引擎都已就位第二条列出本机可用语言包离线要认哪种语言就核对哪个代码在列表里第三条是真实试跑能生成 PDF 说明渲染、字体、引擎整条链路都通。症状原因修复动作提示找不到语言数据文件.traineddata没拷到位拷入tessdata目录目录非默认位置时用TESSDATA_PREFIX指过去打不开 config file hocr手工拼的tessdata缺configs/从完整安装补齐configs/hocr与configs/txt警告某文字没有可用字形缺对应文字体系的字体补 Noto 字体包文本层仍可搜索仅高亮显示受影响大文件处理时内存不足大尺寸页面一次性栅格化用--pages指定页码分段处理--clean报 unpaper 缺失未安装 unpaper装 unpaper装不了就省掉--clean其余功能不受影响已含文本的页报page already has text输入页已有文本层加--skip-text跳过或--force-ocr强制重做排错的更多细节见 docs/errors.md。端到端示例一张打字机扫描件变可搜索 PDF用仓库自带的黑白打字机扫描件 tests/resources/typewriter.png4000×2864 像素走完整流程。在离线机上从仓库根目录执行ocrmypdf --language nld --output-type pdfa tests/resources/typewriter.png /tmp/recipe.pdf参数逐个说明--language nld指定识别语言。这份扫描件是一页荷兰语菜谱用nld中文文档换成chi_sim多语言用engnld这种写法--output-type pdfa输出 PDF/A 存档格式适合长期保存默认值是auto按需显式指定tests/resources/typewriter.png输入文件图片、PDF 均可/tmp/recipe.pdf输出文件--clean[可选]识别前去噪清洗扫描件质量越差收益越大依赖 unpaper跑完用任意 PDF 阅读器打开画面还是那张打字机扫描图但文字已经能框选、复制、搜索——文本层压在图像正下方肉眼不可见却真实存在。OCRmyPDF 处理时会用掉全部 CPU 核心单页通常几秒到几十秒输出文件比输入图片大一些因为里面同时存着图像和文本层。批量与监听把单件变流水线批量处理一目录仓库文档推荐用 GNU Parallel 控制并发先mkdir -p output再在离线机上执行。-j 2限制同时跑两个任务--tag在输出前打印文件名出错时能快速定位到是哪个文件。parallel --tag -j 2 ocrmypdf {} output/{} ::: *.pdf想递归处理整个目录树仓库自带现成示例脚本 misc/batch.py它递归查找目录里的 PDF 逐个 OCR遇到加密文件、已有文本层或带数字签名的文件会记录日志并跳过拷走一份按需改目录参数即可。更省事的是目录监听misc/watcher.py 盯着一个输入目录新放进来的 PDF 自动走完 OCR原件可归档、输出可按月分层。watcher 依赖额外组件在有网机备料时装一次pip download ocrmypdf[watcher]离线机照常运行。# 离线机设置输入/输出目录后启动监听 env OCR_INPUT_DIRECTORY/mnt/input-pdfs \ OCR_OUTPUT_DIRECTORY/mnt/output-pdfs \ OCR_OUTPUT_STRUCTUREYEAR_MONTH \ python3 misc/watcher.py注意输出和归档目录不能放在输入目录里面否则新产出会被当成新输入反复处理。离线部署的核心思路就一句话把所有需要联网的补给动作前移到有网机器备齐整体搬进内网OCRmyPDF 之后完全自给自足。细节见 docs/installation.md 与 docs/batch.md。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

SpringMVC通用数据权限校验框架:从设计到实战

SpringMVC通用数据权限校验框架:从设计到实战

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

2026/10/13 5:58:39 阅读更多 →
AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5 这个名字听起来像是一台主机,其实它是我折腾的一个本地工具项目。起因很简单:我手里的游戏、账号、主机状态越来越散,数字版躺在不同账号里,光盘版挤在书架上,想远程玩一把还得分清哪台机器、哪个账号、哪次打折…

2026/10/13 5:57:39 阅读更多 →
多AI Provider架构设计:从统一接口到动态路由的接入层重构

多AI Provider架构设计:从统一接口到动态路由的接入层重构

一个多月前,我把 HagiCode 平台的核心接入层从“单 Provider 写死”重构成了“多 AI Provider 架构”。今天把整个过程中的设计取舍、代码落地方案以及踩过的坑整理出来,算是给后端团队和做 AI 应用集成的朋友一份参考。这里说的 AI Provider&#xff0c…

2026/10/13 5:57:39 阅读更多 →

最新新闻

连接器可靠性试验:振动、冲击、碰撞三者的区别与工程选择

连接器可靠性试验:振动、冲击、碰撞三者的区别与工程选择

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

2026/10/13 6:42:49 阅读更多 →
AnyPS5跨平台串流实战:主机编码、网络传输与客户端解码全解析

AnyPS5跨平台串流实战:主机编码、网络传输与客户端解码全解析

1. 从“AnyPS5”这个标题说起:一个跨平台串流工具的设计野心第一次看到“AnyPS5”这个命名,我的直觉是:这大概率是一个围绕主机游戏串流展开的项目,而且“Any”这个前缀暗示了它的核心卖点——跨平台、跨设备、尽可能抹平硬件壁垒…

2026/10/13 6:42:49 阅读更多 →
谱减法语音增强实战:从原理到参数调优的完整指南

谱减法语音增强实战:从原理到参数调优的完整指南

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

2026/10/13 6:42:49 阅读更多 →
PS5兼容性研究实战:状态识别、工具链匹配与恢复兜底

PS5兼容性研究实战:状态识别、工具链匹配与恢复兜底

我知道很多人看到“AnyPS5”这个名字,第一反应八成是“是不是所有PS5都能折腾了”。但真正在软硬件研究这个圈子里待过一段时间你就明白,“能否折腾”只是结果,背后真正值钱的是兼容性研究那一整套逻辑。不同型号的主板布局不一样&#xff0c…

2026/10/13 6:42:49 阅读更多 →
Windows下PyCharm连接Anaconda:虚拟环境与解释器配置全攻略

Windows下PyCharm连接Anaconda:虚拟环境与解释器配置全攻略

简介:Windows环境下在PyCharm中配置Anaconda开发环境,是不少Python初学者和数据科学入门者常遇到的痛点。这份超详细教程面向上述读者,清晰梳理了Python、PyCharm与Anaconda三者各自的角色与协作关系,并针对安装、导入、包管理过程…

2026/10/13 6:42:49 阅读更多 →
FPGA入门必做:可逆计数器设计详解与上板调试

FPGA入门必做:可逆计数器设计详解与上板调试

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

2026/10/13 6:41:49 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →