news 2026/8/24 14:41:36

扫描件加文本层:OCRmyPDF 离线使用完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
扫描件加文本层:OCRmyPDF 离线使用完整指南

扫描件加文本层:OCRmyPDF 离线使用完整指南

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

一份扫描合同塞进 PDF 阅读器,Ctrl+F 毫无反应——它只是一张图片。OCRmyPDF 给这类文件补一层隐形文字,识别和合成都发生在本机:Tesseract 读字、本地重建文本层,全程不需要联网。

它解决什么问题

扫描件里的文字只是像素,搜索、复制、粘贴都用不上。OCRmyPDF 跑完后,输出 PDF 保持原样,底下多一层看不见的文字,Ctrl+F 就能搜到内容,也能选中复制。对存档场景,它还能顺手把文件转成 PDF/A,长期不跑版。

准备清单:版本与依赖

离线安装前,先把这张清单上的东西在一台有网的机器上备齐,再整体搬到离线环境。

组件版本要求用途获取方式
Python3.11+(推荐 3.12)运行 ocrmypdf 主程序发行版自带包 / 官方离线安装器
Tesseract≥ 4.1.1OCR 识别引擎tesseract-ocr系统包
Ghostscript≥ 9.54(17.0 起可用 pypdfium2 替代)PDF 栅格化、PDF/A 转换ghostscript系统包
ocrmypdf17.8.1主程序PyPI 的 wheel 文件(pip download提前拉取)
unpaper / pngquant / jbig2enc可选--clean预处理 / 彩色量化 / 黑白图压缩对应系统包

注意 Python 依赖(pikepdf、Pillow、fpdf2 等)pip 无法离线自举,需要在有网机器上执行pip download ocrmypdf -d ./pkgs把 wheel 一并备下,随目录拷贝过去。

最小安装路径:Ubuntu 三条命令

以 Ubuntu 22.04/24.04 为例,系统源里就有全部依赖,一条命令装齐:

apt update && apt install ocrmypdf tesseract-ocr-chi-sim fonts-noto

装完用版本命令自检,它会打印 ocrmypdf、Tesseract、Ghostscript 各自的版本,缺什么一目了然:

ocrmypdf --version

其他发行版两行带过:Debian 命令相同;Fedora 用dnf install ocrmypdf tesseract-osd。macOS 走brew install ocrmypdf,默认带英语语言包,中文另装brew install tesseract-lang。Windows 用 winget 装 Python 和 Tesseract,Ghostscript 需手动下载,最后pip install提前备好的 wheel。更细的平台步骤见 docs/installation.md。

首次运行:一张扫描件变成可搜索 PDF

仓库自带一张打字机扫描件,适合做第一次验证。在仓库根目录执行:

输入:一份没有文字层的黑白扫描件(仓库内 tests/resources/typewriter.png)

ocrmypdf --language eng tests/resources/typewriter.png recipe.pdf

--language eng指定按英语识别(默认就是 eng,写出来是为了强调离线环境要确认语言包在场)。跑完后recipe.pdf里既有原图,也有文字层,用任何阅读器打开都能搜索原文。

执行过程大致是这样的——扫描、OCR、PDF/A 转换、优化各占一条进度条,最后给出压缩比:

一次完整的离线处理:8 页并行 OCR,输出 PDF/A-2b,文件缩小 53.8%

参数速查表:8 个最常用的开关

参数作用说明
--language识别语言多语言空格分隔,如--language eng chi_sim
--output-type输出格式auto(默认,多为 PDF/A-2b)、pdfpdfa
--optimize压缩级别 0–3数字越大文件越小、越慢;2/3 需要 pngquant
--skip-text跳过已有文字的页混排文档最常用,避免报错
--force-ocr整页重做 OCR栅格化全部页面,丢弃旧文本层
--redo-ocr只替换文本层保留原图像,重写文字
--clean图像预处理去噪、纠偏,依赖 unpaper
--pages只处理指定页--pages 1,3-5,大文件分段跑

实战案例:中文合同转 PDF/A 归档

扫描仪吐出一沓 60 页的中文合同,其中夹着几页已经带文字的附件。目标:可搜索 + 长期归档格式 + 体积压下来:

ocrmypdf --language chi_sim --output-type pdfa --optimize 3 --skip-text 合同扫描.pdf 合同_归档.pdf

--skip-text是关键:带文字的附件页直接放行,只对纯图像页做 OCR,既省时间又不会把已有文字打坏。--optimize 3会同时启用 pngquant 和 JBIG2(装了才生效),扫描件体积通常能压掉一半以上。跑完在阅读器里搜"违约金",能直接定位到对应段落。

排障:现象 → 原因 → 解决

现象原因解决
Tesseract couldn't find a language data file--language指定的语言包没装tesseract-ocr-<语言>,或把 .traineddata 放进 tessdata 目录
Page already has text,整单中止页面已含文字层,又没指定处理模式按需求三选一:--skip-text/--force-ocr/--redo-ocr
--clean直接报错缺 unpaperapt install unpaper后重试
警告某些字符无字形系统缺 Noto 等字体apt install fonts-noto,中文场景必装
输出文件仍然巨大黑白图没走 JBIG2 压缩装 jbig2enc,配合--optimize 3重跑

更多报错的来龙去脉在 docs/errors.md。

提效方向:批量与目录监控

一次性几十个文件,shell 循环就够:

for f in *.pdf; do ocrmypdf --skip-text "$f" "ocr_$f" done

--skip-text后,已处理过的文件会安全跳过,循环可以重复执行。需要递归子目录、自动归档原件、写日志的话,直接改 misc/batch.py——它把"跳过加密件、跳过签名件、跳过已 OCR 件"的异常分支都处理好了,改两个目录变量就能投产。

更高一级的自动化是目录监控:装一下 watcher 依赖(uv sync --extra watcher),运行python misc/watcher.py --help看参数,把监控目录指到扫描仪的输出盘,之后新落盘的 PDF 会被自动 OCR 进输出目录,按月建文件夹归档,人不碰鼠标。

结语

完整参数清单见 docs/advanced.md,安装细节与 Docker 方案在 docs/installation.md。核心代码在 src/ocrmypdf/ 目录,OCR 管线的每一步都能拆开看。

【免费下载链接】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/8/24 14:40:32

溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测

一、溶血磷脂酰胆碱 (LPC)—— 介导炎症与组织损伤的活性脂质介质在脂质组学火热的当下&#xff0c;很多科研目光聚焦各类长链脂肪酸、鞘脂类分子&#xff0c;而溶血磷脂酰胆碱 LPC&#xff0c;作为磷脂代谢的核心 “双刃剑” 分子&#xff0c;常常被低估它在病理进程中的驱动力…

作者头像 李华
网站建设 2026/8/24 14:36:57

压电定位平台为什么要闭环?开环误差、传感器基准与Python测试

压电定位平台采用闭环控制&#xff0c;核心原因是压电陶瓷的实际位移会受到迟滞、蠕变、温度、负载、安装刚度和驱动电压误差影响。开环控制只能根据电压或模型估算位移&#xff0c;闭环控制则用独立位置传感器测量实际运动&#xff0c;并根据位置误差修正驱动命令。 闭环并不等…

作者头像 李华
网站建设 2026/8/24 14:35:56

大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍

一、说个真实的故事今年年初, 有个来自广东工业大学的大三学生, 在CSDN上找到了我, 也就是我的技术博客。他表示自己搭建了一个「校园二手交易平台」, 并且前后端全栈都是他一个人完成的。这其中涵盖了商品发布、搜索筛选、在线聊天, 还有订单管理以及数据大屏等功能, 他完成这…

作者头像 李华
网站建设 2026/8/24 14:34:40

如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南

如何获得更快更私密的浏览体验&#xff1a;开源浏览器 Thorium 完整指南 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Source code and Linux releases. Windows/MacOS/ARM builds served in different repos, links are towards the top …

作者头像 李华
网站建设 2026/8/24 14:33:57

DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操

为什么极简模式是评测模型工具调用能力的“干净画布” DeepSeek Harness 提供了四种运行模式&#xff0c;其中极简模式&#xff08;Minimal&#xff09;被官方专门用于 Terminal Bench 等基准测试场景。这个设计思路很直接&#xff1a;当你想评估模型“纯粹”的工具调用能力时&…

作者头像 李华