Python 自动化接单实战(四):PDF 批量提取先识别文本层还是扫描件
“把这些 PDF 转成 Excel”不是一个单一需求。电子 PDF 有可复制文本扫描件只有图片表格可能跨页页眉也可能被误当成数据。报价前先识别文件类型比一开始堆 OCR 参数更重要。一、先做轻量分类不急着提取下面的标准库脚本通过文件特征做第一轮分流。它不是完整 PDF 解析器但能快速发现加密文件、疑似图片型文件和异常小文件。frompathlibimportPathdefclassify(path):datapath.read_bytes()ifnotdata.startswith(b%PDF-):returnnot_pdfifb/Encryptindata:returnencryptedimage_countdata.count(b/Subtype /Image)text_opsdata.count(b BT)data.count(b\nBT)returnscanned_likeifimage_count2andtext_ops0elsetext_likeforpathinsorted(Path(input).glob(*.pdf)):print(path.name,classify(path))输出示例invoice-01.pdf text_like invoice-02.pdf scanned_like contract.pdf encrypted分类结果决定后续工具文本型文件使用 PDF 文本库扫描件进入 OCR小部分加密或破损文件进入人工确认。二、先定义字段证据再处理版式发票提取不能只输出金额还要保留文件名、页码、原始片段和置信状态。金额正则命中多个位置时不要擅自选择最大值应输出候选并标记needs_review。importredefamount_candidates(text):patternr(?:合计|总额)[:\s]*[¥]?(\d(?:\.\d{1,2})?)returnre.findall(pattern,text)sample小计80.00\n合计96.00print(amount_candidates(sample))输出[96.00]三、验收按文件类型分层从每种版式抽样记录字段正确率与需要人工复核的比例。扫描件还要覆盖旋转、阴影、低分辨率和印章遮挡。若客户不能提供可核对的期望结果就先交付分类报告和小样本不承诺整批准确率。 本文用文件分类、字段证据和分层验收拆开了 PDF 提取问题避免把所有失败都归因于 OCR。 你的 PDF 资料更常见的是扫描件、跨页表格、加密文件还是版式频繁变化 关注《Python 自动化接单实战》下一篇继续拆解第三方 API 对接中的分页、限流与幂等。参考来源Dev.toYou Can Build It. Should You?Hacker NewsHow Unix spell ran in 64 kB of RAM