当前位置: 首页 > news >正文

扫描件加文本层: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),仅供参考

http://www.cnnetsun.cn/news/4195720.html

相关文章:

  • 溶血磷脂酰胆碱 (LPC):脂质代谢关键毒性分子,云克隆 ELISA 试剂盒助力脂质组与炎症损伤科研检测
  • 压电定位平台为什么要闭环?开环误差、传感器基准与Python测试
  • 大二学生用myBuilder两周搭出完整ERP,面试官直接让他演示了一遍
  • 如何获得更快更私密的浏览体验:开源浏览器 Thorium 完整指南
  • DeepSeek Harness 极简模式跑 Terminal Bench,模型基准测试实操
  • KeyboardChatterBlocker 实战教程:按键调阈值,修掉机械键盘连击
  • 【单片机课设毕设项目】基于 51/STM32 单片机的红外人体感应防盗报警环境监控系统设计 基于 51/STM32 单片机的 LCD1602 显示环境感知智能安防系统设计(017504)
  • Python Web后端框架FastAPI vs Flask
  • 网络安全等保合规文档整理
  • 【 C++ 】AVL树
  • 从ChatiSS九种体质舌面诊参数解码中医AI的Token底盘逻辑
  • 评价类模型
  • 2026深度测评10款降AI率工具红黑榜!优缺点全曝光,达标率对标顶级水准
  • MAA明日方舟自动化助手:新手 5 分钟跑通全流程,把重复劳动交给它
  • 单片机毕设项目:融合温光人体检测的 STM32 智能晾衣架设计与开发 本地显示 + 远程 APP 监控 STM32 智能晾衣架系统研究(017204)
  • 团队一体化协同平台怎么选?多款协作工具能力客观记录
  • SAP Gateway Foundation OData V4 工具全景解析,从服务发布、Metadata Cache 到 Payload Trace 的完整排障链路
  • 8.22【A】
  • 小米Kotlin专项面经:data class自动生成了什么、Kotlin空安全、Kotlin value class
  • 大语言模型在职业体育决策中的应用:从ChatGPT到AI协作工作流
  • Docker综合项目实验
  • PCIe Flow Control初始化:链路稳定的信用协商机制
  • C++变量的自动初始化
  • 数据不通,穿透就是空话——国资数据治理的三道坎
  • 16-SOFA_仿真背后的力学(总结)
  • 救场Minecraft存档:Minecraft Region Fixer免费修复损坏区块的完整指南
  • 重复造轮子很蠢,但我还是自己写了一套博客系统
  • DeepSeek Harness 安装全指南:踩过版本与空间的坑,带你顺利启动插件化 Agent 框架
  • DeepSeek Harness 从零入门完全指南:从环境搭建到推理评测微调实战
  • 手撕hot100之图论!看完这篇就AC~(二)