62 lines
2.0 KiB
Markdown
62 lines
2.0 KiB
Markdown
# 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
|