Files

2.0 KiB

OCR + Vision 双引擎校对流程 (跃龙路经验 0703)

问题背景

扫描件PDF用ocrmypdf提取的文字有大量识别错误:

  • 数字被乱码覆盖(如金额行变成 SH CAL bi 等)
  • 合同条款编号错位
  • 签章区域干扰正文识别
  • "扫描全能王"水印被当正文

推荐流程

Step 1: OCR提取(作为初始底稿)

ocrmypdf --force-ocr -l chi_sim+eng --sidecar /tmp/XXX-ocr.txt input.pdf output.pdf

Step 2: PDF转图片(逐页)

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