# OCR + Vision 双引擎校对流程 (跃龙路经验 0703) ## 问题背景 扫描件PDF用ocrmypdf提取的文字有大量识别错误: - 数字被乱码覆盖(如金额行变成 `SH CAL bi` 等) - 合同条款编号错位 - 签章区域干扰正文识别 - "扫描全能王"水印被当正文 ## 推荐流程 ### Step 1: OCR提取(作为初始底稿) ```bash ocrmypdf --force-ocr -l chi_sim+eng --sidecar /tmp/XXX-ocr.txt input.pdf output.pdf ``` ### Step 2: PDF转图片(逐页) ```python import fitz doc = fitz.open('input.pdf') for i in range(len(doc)): page = doc[i] pix = page.get_pixmap(dpi=200) pix.save(f'/tmp/XXX-p{i+1}.png') ``` ### Step 3: Vision逐页核实(关键数据页) - 优先核实:金额页(租金标准/各年租金/押金/物业费) - 明确问题:指定需要逐字抄写的数据类型 - 每页一个vision_analyze调用,问题要具体 ### Step 4: 数学交叉验证 验算所有可推导的数字关系: - 年递增:base × (1+rate)^(n-1) = 第n年租金 - 免租分摊:总额 ÷ 年数 = 每年减免 - 减免后 = 合同租金 - 年减免额 - 单价反推:年总额 ÷ 365 ÷ 面积 = 元/㎡/天 - 物业费:单价 × 面积 × 12 = 年总额 ### Step 5: 整理md全文 - 以vision核实的数据为准(非OCR原始文本) - 保留合同结构(条款编号+标题) - 签章信息如实记录(印章文字、编号) - 空白/未填写项标注"(未填写)" - 文件存放:同一文件夹,命名格式 `XXX合同_全文.md` ## OCR常见错误类型(跃龙路实例) | 原文 | OCR错误 | |------|---------| | 崇川区 | 贮川区 | | 范存益 | 无法识别 | | 6230520420020988877 | 6930520420020988877 | | 361017.12 | 3610417.142 | | 平方米 | FAK | | 乙方 | EM | | 续租 | SA | ## 效率提示 - 6页以内的合同:全部逐页vision(最可靠) - 6页以上:OCR为底稿 + 关键数据页vision + 数学验算 - 所有金额/日期/面积/费率必须经vision确认,不能只信OCR