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

📅 2026/8/24 14:41:40
扫描件加文本层: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 阅读器CtrlF 毫无反应——它只是一张图片。OCRmyPDF 给这类文件补一层隐形文字识别和合成都发生在本机Tesseract 读字、本地重建文本层全程不需要联网。它解决什么问题扫描件里的文字只是像素搜索、复制、粘贴都用不上。OCRmyPDF 跑完后输出 PDF 保持原样底下多一层看不见的文字CtrlF 就能搜到内容也能选中复制。对存档场景它还能顺手把文件转成 PDF/A长期不跑版。准备清单版本与依赖离线安装前先把这张清单上的东西在一台有网的机器上备齐再整体搬到离线环境。组件版本要求用途获取方式Python3.11推荐 3.12运行 ocrmypdf 主程序发行版自带包 / 官方离线安装器Tesseract≥ 4.1.1OCR 识别引擎tesseract-ocr系统包Ghostscript≥ 9.5417.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 和 TesseractGhostscript 需手动下载最后pip install提前备好的 wheel。更细的平台步骤见 docs/installation.md。首次运行一张扫描件变成可搜索 PDF仓库自带一张打字机扫描件适合做第一次验证。在仓库根目录执行输入一份没有文字层的黑白扫描件仓库内 tests/resources/typewriter.pngocrmypdf --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、pdf、pdfa--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 couldnt 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),仅供参考