ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

给扫描 PDF 加可搜索文本层:OCRmyPDF 实战指南

给扫描 PDF 加可搜索文本层:OCRmyPDF 实战指南 给扫描 PDF 加可搜索文本层OCRmyPDF 实战指南【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDFOCRmyPDF 是一个命令行工具用 Tesseract 引擎给扫描 PDF 添加可搜索的 OCR 文本层输出带文本层、可校验的 PDF/A 文件原始图像内容保持不变。场景很常见你拿到一份 200 页的扫描版论文或合同扫描件CtrlF 没有任何反应想要检索三个关键词只能一页页人工翻。它是什么解决什么问题OCRmyPDF 做的事只有一件把扫描图像上的文字识别成文本层叠在原始图像下面让 PDF 变得可搜索、可选择、可复制。它不做的事同样明确不识别手写体不重排版面不转成 Word 或 HTML也不做文档问答。典型痛点场景扫描件无法检索整份文档只是图像关键词搜索、全文索引全部失效别家工具复制出来文字错行串行文本层定位不准多栏版式下复制粘贴基本不可用归档有合规要求需要长期保存且符合 ISO 标准的 PDF/A 格式文档量大需要批量处理几十上百份扫描件要靠脚本和并行跑批截图中的Total file size ratio: 2.16 savings: 53.8%一行是输出文件相对输入的压缩比Output file is a PDF/A-2b是校验结论安装与首次运行支持 Linux、macOS、Windows 和 FreeBSDDocker 镜像也有。三种平台的安装命令平台安装命令LinuxDebian / Ubuntusudo apt install ocrmypdfLinuxFedorasudo dnf install ocrmypdfmacOSHomebrewbrew install ocrmypdfWindowswingetwinget install jbarlow83.ocrmypdfWindowsPython 环境pipx install ocrmypdf安装完成后跑最简转换ocrmypdf 输入.pdf 输出.pdf输出里看到Done以及Output file is a PDF/A-2b即成功。再在 PDF 阅读器里选中一段文字复制出来能粘出正确内容就算跑通。核心能力拆解文本层精确定位OCR 结果按原文字坐标叠在图像下方复制粘贴时文字顺序与版面一致。ocrmypdf 输入.pdf 输出.pdf多栏报纸、带表格和脚注的文档最需要这一点——定位一旦错位跨栏复制出来就是乱码式的串行文本。多语言混排识别默认识别英文eng支持 Tesseract 的 100 多种语言包多个语言用连接。# 中文文档Debian/Ubuntu 需先装语言包 sudo apt install tesseract-ocr-chi-sim ocrmypdf -l chi_sim 中文文档.pdf 输出.pdf # 英文法文混排Tesseract 会逐页检测实际语言 ocrmypdf -l engfra 混合文档.pdf 输出.pdf适合处理外文文献、多语言混排档案以及给中文扫描文档批量加文本层的用户语言包安装方法见 语言文档。扫描质量自动矫正提供一组可选的图像预处理--rotate-pages按文本方向自动旋转页面--deskew校正整页倾斜--clean去除扫描噪点和黑边--remove-background去除灰色底色。ocrmypdf -d --rotate-pages 倾斜扫描件.pdf 输出.pdf这些开关默认全部关闭只在扫描件确实有旋转、倾斜、脏背景时开启——--clean与--remove-background处理过重的话可能误删正文需要留意的用户先用小样验证。输出压缩与自动校验默认输出 PDF/A归档友好内置图像压缩会把大体积扫描件压小输出文件通常比输入更小截图中的示例压缩到了 46%。每份输出在保存前都会走一次 PDF 规范校验校验失败时直接报出具体原因和页码排错入口见 错误码文档。# 不想要 PDF/A、尽量不动输入文件时 ocrmypdf --output-type pdf 输入.pdf 输出.pdf适合需要长期归档、或者对输出文件合法性有硬性要求的场景。一个完整实战流程拿一份荷兰语老式打字机文档等宽字体、扫描件、略有倾斜走一遍完整流程。# 1. 安装识别语言包Debian/UbuntuWindows 可用 winget install Tesseract.OCRmacOS 用 brew install tesseract-lang sudo apt install tesseract-ocr-nld # 2. 主转换校正倾斜生成 PDF/A 输出同时产出 sidecar 纯文本 ocrmypdf -l nld --deskew 输入.pdf 输出.pdf --sidecar # 3. 用 sidecar 文本快速核对识别质量无需打开 PDF head 输出.txt # 4. 质量确认后批量处理其余文档misc/batch.py 会逐文件调用 ocrmypdf python3 misc/batch.py -l nld --deskew 扫描件目录/*.pdf第 1 步装对语言包避免整篇被当成英文识别第 2 步用--deskew先校正倾斜再识别能明显提高歪斜页面的识别率--sidecar顺手产出可 grep 的纯文本第 3 步是廉价的质量检查确认Linzensoep这类关键词识别正确再往下走第 4 步批量跑批每份输入独立处理单个文件失败不影响其他文件。进阶参数与调优提升识别率参数效果适用条件--oversample 400先把低分辨率页面超采样到至少 400 DPI 再识别扫描件清晰但偏糊、字小-d/--deskew逐页检测并校正倾斜角度扫描时页面没摆正--image-dpi 300输入是裸图片时声明其 DPI直接喂图片文件而非 PDF--clean去噪、去黑边后再识别原图保留在输出里有明显扫描瑕疵提升速度参数效果适用条件-j 2限制并行核心数默认吃满所有核心内存吃紧或机器在跑别的任务-q静默模式不打印 INFO 和进度条跑批脚本、写进 cron--mode skip跳过已有文本层的页面不重复 OCR文档里只有一部分是扫描件输出控制参数效果适用条件--optimize 3优化等级 0~5等级越高压缩越强想进一步减小体积默认 3--output-type pdf不强制 PDF/A最小化改动不需要归档合规--sidecar 文本.txt额外输出与 OCR 层一致的纯文本建全文索引、做质量抽检常见问题已有文本层的 PDF 会报错怎么办直接对图像旧文本层的混合文档运行默认模式会报错。按需三选一ocrmypdf --mode skip 混合.pdf 输出.pdf # 跳过已有文本的页只 OCR 纯图像页 ocrmypdf --mode redo 混合.pdf 输出.pdf # 整页重做 OCR替换旧文本层 ocrmypdf --mode strip 混合.pdf 输出.pdf # 只删掉旧的不透明文本层不跑 OCR--mode skip是混合文档批量处理时的默认选择速度最快。识别错误多怎么排查按这个顺序试ocrmypdf -l eng --deskew --clean --oversample 400 输入.pdf 输出.pdf先确认语言包装对了--deskew治倾斜--clean治噪点和黑边--oversample治低分辨率再检查输出里的 warningOCRmyPDF 会对识别置信度低的页面给出提示见 错误码文档。中文文档怎么处理中文用chi_sim语言包繁体是chi_tra先装包再指定语言sudo apt install tesseract-ocr-chi-sim # Debian/UbuntumacOS 用 brew install tesseract-lang ocrmypdf -l chi_sim 中文扫描件.pdf 输出.pdfWindows 上可以winget install Tesseract.OCR装引擎语言包用 Tesseract 安装包自带或从 tessdata 下载后放到安装目录的tessdata里。适合谁什么时候不用它适合手里有扫描版 PDF、图像 PDF需要检索、复制文本、建索引的人需要 PDF/A 归档、对接 Paperless-ngx 等文档管理系统的团队以及想把 OCR 批量处理写进脚本或定时任务的用户。不适合文档已有文本层直接搜索即可没必要跑一遍 OCR大量手写体内容——印刷体之外识别效果有限不要拿它当手写识别工具需要版面重排、转 Word/HTML 的需求它只在原 PDF 上加一层文本。核心价值就一句扫描 PDF 进可搜索的 PDF/A 出文本层定位准、体积通常更小、每份输出都经过校验。建议先用一份 5 页的小文件跑通复制出文字确认无误再上批量。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表