ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

OCRmyPDF 如何批量处理 PDF:3 步跑通 OCR 自动化的完整指南

OCRmyPDF 如何批量处理 PDF:3 步跑通 OCR 自动化的完整指南 OCRmyPDF 如何批量处理 PDF3 步跑通 OCR 自动化的完整指南【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF面对一整个目录的扫描版 PDF你是否不想在命令行里一份一份敲命令OCRmyPDF 批处理脚本 misc/batch.py 就是为这类场景准备的把目录指给它它会递归找出所有 PDF、逐份执行 OCR并对已带文本层的文件自动略过省时省算力。下面按三步跑通 → 能力拆解 → 进阶调节 → 避坑的顺序带你把这套 OCR 自动化流程用熟。 什么场景值得上批处理家里翻出来一箱扫描存档想统一转成可搜索的 PDF刚接手一批扫描件的电子档案需要在归档前批量加文本层实验室或事务所里固定目录会不断落进新扫描文件希望处理动作尽量无人值守。只要你的需求是对一批 PDF 做同样的事而不是对某一份 PDF 精雕细琢这份批处理脚本就比手动执行ocrmypdf命令划算得多。 三步跑通批量处理克隆项目并进入目录git clone https://gitcode.com/GitHub_Trending/oc/OCRmyPDF cd OCRmyPDF python3 misc/batch.py /path/to/your/pdfs上面三条命令分别完成拉取代码、进入项目、对目标目录里的所有 PDF 跑一次 OCR。第二个参数是可选的省略时就处理当前目录。确认环境里装好了ocrmypdf库pip install ocrmypdf或按项目pyproject.toml用 uv 安装脚本才能import ocrmypdf成功。跑完打开日志文件ocr-tree.log逐个核对哪些文件被处理、哪些被跳过、结果如何——脚本默认把日志写在脚本所在目录文件名就是ocr-tree.log。到这一步你已经拥有了一条能反复使用的批量 OCR 流水线。⚙️ 能力拆解batch.py 到底替你做了四件事① 递归找文件多深都不漏脚本用start_dir.glob(**/*.pdf)扫描PDF 藏在多级子文件夹里也会被找到不需要你手动find。② 自动略过不需要处理的文件对每份 PDFOCRmyPDF 会判断它是否已含文本、是否带数字签名、是否已是带标签 PDFtagged。命中任一条就记录跳过原因不做重复劳动。③ 先备份再动手处理前原始文件会被shutil.copy2复制到归档目录默认/pdfbak。OCR 一旦出问题原件还在可以回滚重来。④ 全程留痕开始时间、文件路径、跳过原因、每份文件的处理结果全部按时间戳写入日志方便事后追查。核心循环长这样白话讲就是遍历目录里每个 PDF → 原地执行 OCR开启自动纠斜→ 把结果记进日志for filename in start_dir.glob(**/*.pdf): ... result ocrmypdf.ocr(filename, filename, deskewTrue) logging.info(result)第二个参数与输入相同意味着原地覆盖deskewTrue则让倾斜的扫描页在识别前先被摆正。 进阶调节日志路径、归档目录与 OCR 参数日志写到哪把日志路径作为第二个参数即可例如python3 misc/batch.py /data/pdfs /var/log/ocr.log不传就落到脚本旁的ocr-tree.log且以追加模式写入filemodea历史不会丢。归档目录怎么改打开 misc/batch.py把顶部的archive_dir变量改成你想要的备份根目录不需要备份的话把它设为空字符串脚本就不会再复制原件。OCR 行为怎么调真正干活的是ocrmypdf.ocr函数定义在 src/ocrmypdf/api.py参数很丰富常见的几个jobs控制并发任务数机器吃紧时调小image_dpi识别用的图像分辨率调低可明显提速rotate_pages/remove_background整页自动旋转、去背景不需要就保持默认关闭deskew纠斜开关脚本里默认已开启。改脚本时只需要在ocrmypdf.ocr(filename, filename, deskewTrue)这一行上按需加参数其余逻辑不动。 避坑清单现象 → 原因 → 处理现象整批跑得很慢。原因文件多、分辨率高、并发开满或开启了旋转/去背景等附加步骤。 处理给ocr()传更小的jobs和image_dpi不用的rotate_pages、remove_background保持False。现象某些文件在日志里显示跳过。原因可能是加密 PDF抛EncryptedPdfError、带数字签名DigitalSignatureError或已有文本层PriorOcrFoundError——脚本对这些情况都是记录后跳过不算失败。 处理加密文件先解密再投喂确需重做的已处理文件用redo_ocrTrue重跑。现象日志文件越滚越大。原因默认levellogging.INFO每个文件的每条信息都落盘。 处理把logging.basicConfig的level提到logging.WARNING或logging.ERROR只保留关键告警。现象处理完发现原件被覆盖了。原因脚本是原地处理输入输出归档备份是唯一保险。 处理跑大目录前务必确认archive_dir指向可用空间充足的路径。 一句话收尾把目录交给misc/batch.pyOCR 就从逐份操作变成了挂上就跑的批处理任务——你只需要偶尔翻开日志看一眼。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表