ARTICLE DETAIL

资讯详情

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

OCRmyPDF 扫描 PDF OCR 实战指南:从一键安装到批量归档

OCRmyPDF 扫描 PDF OCR 实战指南:从一键安装到批量归档 OCRmyPDF 扫描 PDF OCR 实战指南从一键安装到批量归档【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF场景切入手里攥着一沓 200 页的扫描版合同想 CtrlF 找一句违约条款结果一个关键词都搜不到——因为那些字只是图片。这正是扫描 PDF OCR 要解决的痛点OCRmyPDF 会往图片底下贴一层可搜索的文本让扫描件从「只能看」变成「能搜、能选、能复制」。它默认产出符合 ISO 标准的 PDF/A文本位置又贴得准复制粘贴不会错位。说白了它就是把「图片 PDF」升级成「真正能用的 PDF」。30 秒快速上手 先按你的系统装一下。三个平台各一条命令装完就能跑。apt install ocrmypdf # LinuxDebian/Ubuntu brew install ocrmypdf # macOSHomebrew pip install ocrmypdf # Windows先备好 Tesseract 与 Ghostscript装好后最小可用命令就长这样——输入一个文件输出一个可搜索文件ocrmypdf input.pdf output.pdf跑完你会在终端看到进度条从 0% 爬到 100%然后得到output.pdf。把它丢进任意 PDF 阅读器文字就能选中、能搜索了。Windows 用户注意因为 Ghostscript 现在不再支持静默安装得先从官网手动装好它和 Tesseract再用pip装本体。一条命令背后发生了什么 你敲下一条命令OCRmyPDF 内部大致做了这几件事读取与修复用 pikepdf 打开输入文件顺手把坏掉的 PDF 自动修好。逐页分析判断每页的颜色空间、DPI挑出真正需要 OCR 的页。栅格化把页面渲染成图像默认优先用 pypdfium2缺省时回退 Ghostscript。调用 Tesseract 识别跑 OCR拿到每个字的文本和坐标。文本层回填把识别结果精确铺回原图对应位置保证可复制、不错位。可选预处理--deskew、--clean之类在第 3 步之前生效先把图修直修净。合成存档格式默认输出 PDF/A-2b长期保存不跑偏。校验输出确认结果合法后写出文件。一张典型的扫描文档输入就是下面这种只有图像、没有文本的样式你可以试试加个--verbose把上面每一步都打印出来看个明白ocrmypdf --verbose input.pdf output.pdf常用参数速查高频参数按功能分四组先记这几张表就够用了。语言 预处理参数作用一句话备注-l, --language指定 OCR 语言多语言用连接如-l engfra-r, --rotate-pages自动纠正方向错乱的页扫描件歪 90° 很常见-d, --deskew校正页面倾斜提升识别率--clean用 unpaper 清理图像噪声需另装 unpaper输出参数作用一句话备注--output-type选输出格式默认pdfa可用pdf关掉存档--sidecar额外导出纯文本带-输出到标准输出--optimize图像压缩档位 0–3越高越小档 2 用到 pngquant--force-ocr强制对已有文本的页重扫原 OCR 失败时用性能 调试参数作用一句话备注-j, --jobs指定并行核心数默认吃满所有 CPU 核心--skip-big跳过超大页面防止内存爆掉-v / -q详细 / 静默日志排错用-v批量用-q--redo-ocr剥掉旧文本层重扫想换更强引擎时用三条组合命令直接抄# 中文文档先装 chi_sim 语言包 ocrmypdf -l chi_sim 合同.pdf 合同.pdf # 多语言混合 ocrmypdf -l engfra 双语文档.pdf 双语文档.pdf # 批量归档并行 2 个任务原地处理 find . -name *.pdf | parallel --tag -j 2 ocrmypdf {} {}进阶技巧与组合玩法 sidecar 纯文本输出不是所有场合都要 PDF有时你只想要一段能喂给搜索或大模型的文本。--sidecar会在生成 PDF 的同时吐出一份.txt配合--output-type none就纯出文本、不落 PDF。把 sidecar 设为-文本直接走标准输出方便管道串联。ocrmypdf --sidecar - --output-type none 扫描件.pdf /dev/nullDocker 与 Paperless-ngx 集成不想在本地装一堆依赖官方 Docker 镜像把所有组件打包好了而且支持把 PDF 从 stdin 读入、从 stdout 读出彻底绕开文件权限问题。它也是 Paperless-ngx 这类文档管理系统背后做 OCR 的引擎接进去就是「丢进去 → 自动识别 → 可检索」。详见 docs/docker.md。docker run --rm -i jbarlow83/ocrmypdf-alpine \ --sidecar - - - 扫描件.pdf 文本.txt自定义预处理流水线与批量监控批量场景不用手写循环docs/batch.md 给了parallel与find的现成套路。更进一步仓库里自带一个目录监控脚本 misc/watcher.py盯着输入文件夹有新 PDF 进来就自动 OCR、按月归档、把原件挪走。想接更多能力它还提供OCR_JSON_SETTINGS环境变量把任意参数以 JSON 塞进去即可。find . -name *.pdf -printf %p\n -exec ocrmypdf {} {} \;除了命令行它也是正经的 Python 库参数集中在OcrOptions里做校验调用示例见 src/ocrmypdf/_options.pyimport ocrmypdf from ocrmypdf import OcrOptions options OcrOptions(input_filein.pdf, output_fileout.pdf, deskewTrue) ocrmypdf.ocr(options)踩坑与排查 ⚠️报错 page already has text症状ERROR - 1: page already has text!。原因文件里已经有文本层了。解法确认它其实能搜就不用动确实要重扫就加--force-ocr只想跳过就--skip-text。提示 is not a valid PDF症状Input file x is not a valid PDF。原因文件损坏或复制不完整。解法用 Ghostscript 重写一遍gs -o out.pdf -dSAFER -sDEVICEpdfwrite in.pdf。Tesseract 打不开 config hocr症状Tesseract cannot open its config file hocr。原因手动拼的tessdata目录缺configs/子目录。解法从完整 Tesseract 安装里把configs/拷进去或直接改用系统包管理器装。中文识别出一堆乱码症状结果全是方框或错字。原因没装对应语言包或语言代码写错。解法先apt-get install tesseract-ocr-chi-sim再ocrmypdf -l chi_sim。内存不够 / 处理大文件卡死症状页数多时进程被系统杀掉。原因默认吃满核心大图页面耗内存。解法-j 2降并行或--skip-big跳过大页。下一步回到开头那沓搜不到字的合同现在给它跑一条ocrmypdf -l chi_sim 合同.pdf 合同.pdfCtrlF 就能命中条款了。先拿一个文件试水顺了再上parallel批量归档。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表