OCRmyPDF 批量 OCR 自动化指南:一个脚本搞定几百份扫描件

OCRmyPDF 批量 OCR 自动化指南:一个脚本搞定几百份扫描件 OCRmyPDF 批量 OCR 自动化指南一个脚本搞定几百份扫描件【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF手上堆了几百份扫描 PDF一份份点开、逐个跑 OCR手酸还容易漏。OCRmyPDF 是一款开源的 PDF 文字层工具能给扫描件加上可搜索、可复制的文本层它的仓库里就自带一个批处理脚本一条命令把整个目录的 PDF 递归扫一遍已含文本的自动跳过处理完还留好日志全程不用你盯着。三步跑通批量 OCR 脚本不用改任何代码三步就能跑起来。把仓库克隆到本地git clone https://gitcode.com/GitHub_Trending/oc/OCRmyPDF进入项目目录cd OCRmyPDF运行 批处理脚本。不带参数时处理当前目录要处理别的目录把路径作为第一个参数传进去python3 misc/batch.py /path/to/your/pdf/directory脚本依赖ocrmypdf库跑之前确认它已安装。第一个参数是起始目录第二个参数可选、用来指定日志文件。它是怎么工作的脚本从你给的起始目录出发用start_dir.glob(**/*.pdf)递归往下钻不管 PDF 藏在多深的子文件夹里只要扩展名是.pdf就会被翻出来。每拿到一个文件它先做一个“值不值得跑”的判断调用ocrmypdf.pdfa.file_claims_pdfa(filename)[pass]看文件是否已经声明为 PDF/A、是否已经带了文字层。带文字的直接记一句“已包含文本跳过”省下一整轮 OCR。就算这一步没拦住后面真正调用ocr时抛出的PriorOcrFoundError也会被兜住照样跳过不会重复加工。真正需要处理的文件脚本会先做一份备份把原件拷到归档目录确保就算这次 OCR 出问题原始扫描件也还完好。备份完再调用 ocr API 定义 里的ocr()脚本里固定用了deskewTrue也就是让倾斜的页面先自动校正识别更准。整个过程——几点几分开始、处理哪个文件、结果如何——都追加写进日志方便你事后回看。核心循环就这几行改参数也主要在这里动手for filename in start_dir.glob(**/*.pdf): logging.info(fProcessing {filename}) if ocrmypdf.pdfa.file_claims_pdfa(filename)[pass]: logging.info(Skipped document because it already contained text) else: # 先备份原件到 archive_dir再跑 OCR try: result ocrmypdf.ocr(filename, filename, deskewTrue) logging.info(result) except ocrmypdf.exceptions.EncryptedPdfError: logging.info(Skipped document because it is encrypted) # 其余异常数字签名、已标记 PDF 等同理捕获自定义归档与日志路径脚本顶部和命令行参数里留了几个口子大多数时候你不用动但有两种情况值得改。归档目录archive_dir默认值是/pdfbak用来存原件备份。当你需要给重要文档留底时把它改成你自己的绝对路径即可如果压根不想备份、只想就地 OCR把它设为空字符串脚本就跳过备份这一步。日志文件默认写到项目目录下的ocr-tree.log。想换位置运行时把第二个参数传进去就行python3 misc/batch.py /path/to/pdf/directory /path/to/logfile.log起始目录第一个参数。不传就用当前目录适合你想从某个根目录一次性扫全树的场景。三类真实落地场景企业文档管理把一整年的发票、合同扫描件丢进一个目录跑一次脚本全部变成可搜索 PDF。之后直接搜“发票号”“金额”“抬头”几秒定位不用翻几十页。学术论文扫描件研究者手里常有成堆的老论文扫描版批量转成文本层后就能复制引用、做笔记、提取关键词省去一个字一个字敲的功夫。机构档案数字化政府或单位归档的纸质档案扫描件用脚本批量加上文字层并留好原始备份归档和检索都能自动化原始数据安全也有保障。常见现象排查现象处理速度慢原因默认会把工作铺到所有核心上文件多、页数大时显得吃力。 解法调小jobs参数控制并发文件数用image_dpi降低渲染分辨率不需要的功能关掉比如把remove_background、rotate_pages设为False。现象部分 PDF 被跳过或报错原因脚本对几类文件是“主动放过”而非失败——加密 PDF 抛EncryptedPdfError、已签名 PDF 抛DigitalSignatureError、已含文字抛PriorOcrFoundError、已标记的 PDF 抛TaggedPDFError都会被捕获后记录并跳过。 解法加密文件先解密再处理损坏文件先用 PDF 修复工具修好单文件内存不足时考虑分批或换更充裕的机器重跑。现象日志文件越滚越大原因默认级别是INFO每个文件的每个动作都写一行。 解法在logging.basicConfig里把level调成logging.WARNING或logging.ERROR只留关键信息定期清理旧日志也行。一个脚本把“几百份扫描件逐个 OCR”这件重复体力活压成一条命令还顺带解决了留底、去重、追溯三个隐患。想更进一步的话可以照着 批处理脚本 的写法给它加参数解析、多线程、按语言分目录甚至接一个watcher监听新文件自动入队——ocr函数里那一大串可选参数语言、分辨率、优化级别、PDF 输出类型几乎给了你全部的定制空间。【免费下载链接】OCRmyPDFOCRmyPDF adds an OCR text layer to scanned PDF files, allowing them to be searched项目地址: https://gitcode.com/GitHub_Trending/oc/OCRmyPDF创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考