发票 OCR 识别率低?试试这 7 个优化技巧
大家好,我是正在实战各种 AI 项目的程序员晚枫。
📉 识别率从 95% 到 99%,我做了这些
3 个月前:
刚开始用 OCR 识别发票。
官方说:准确率 98%+。
我实测:95%,有时候 90% 都不到。
财务姐姐:”你这 95%,100 张错 5 张,我还得手动改,有啥用?”
我:”……我优化。”
现在:
稳定在 99%+,1000 张错不到 10 张。
今天:把 7 个优化技巧分享给你。
🎯 技巧 1:优先用 PDF 电子票
测试数据:
| 发票类型 | 识别率 | 建议 |
|---|---|---|
| PDF 电子票 | 99.5% | ✅ 强烈推荐 |
| 扫描全能王 JPG | 98.8% | ✅ 推荐 |
| 手机拍照 JPG | 96.5% | ⭐ 可以 |
| 模糊拍照 | 92.3% | ❌ 不推荐 |
结论:
- PDF 电子票识别率最高
- 能要电子版,就别要纸质版
- 纸质版用扫描 APP,别直接拍照
实施建议:
1 | 通知供应商: |
🎯 技巧 2:制定拍照规范
如果必须拍照,制定规范:
1 | 📋 发票拍照规范 |
效果:
- 拍照发票识别率:92% → 97%
- 财务姐姐拍照认真了
- 我不崩溃了
🎯 技巧 3:图片预处理
拍照后的图片,先处理再识别:
1 | import cv2 |
效果:
- 模糊图片变清晰
- 光线暗的变亮
- 识别率提升 2-3%
🎯 技巧 4:添加质量检查
识别前检查图片质量:
1 | def check_image_quality(image_path): |
效果:
- 低质量图片被拦截
- 减少识别失败
- 整体识别率提升
🎯 技巧 5:分批处理 + 重试
批量处理时分小批:
1 | def process_in_batches(files, batch_size=50): |
效果:
- 避免网络超时
- 避免 API 限流
- 识别率提升 1-2%
🎯 技巧 6:后处理校验
识别后校验关键字段:
1 | import re |
效果:
- 自动发现识别错误
- 减少错误数据流入
- 财务工作量减少
🎯 技巧 7:建立异常发票库
记录识别失败的发票:
1 | import json |
效果:
- 知道哪些发票总失败
- 针对性优化
- 持续改进识别率
📊 优化效果对比
| 优化技巧 | 识别率提升 | 实施难度 |
|---|---|---|
| 1. 优先用 PDF | +3% | ⭐ 简单 |
| 2. 拍照规范 | +2% | ⭐⭐ 中等 |
| 3. 图片预处理 | +1.5% | ⭐⭐ 中等 |
| 4. 质量检查 | +1% | ⭐ 简单 |
| 5. 分批 + 重试 | +1% | ⭐⭐ 中等 |
| 6. 后处理校验 | +0.5% | ⭐⭐⭐ 较难 |
| 7. 异常发票库 | +0.5% | ⭐⭐ 中等 |
| 总计 | +9.5% | - |
**从 95% 到 99.5%**,就靠这 7 个技巧。
💬 联系我
| 平台 | 账号/链接 |
|---|---|
| 微信 | 扫码加好友 |
| 微博 | @程序员晚枫 |
| 知乎 | @程序员晚枫 |
| 抖音 | @程序员晚枫 |
| 小红书 | @程序员晚枫 |
| B 站 | Python 自动化办公社区 |
主营业务:AI 编程培训、企业内训、技术咨询
🎓 推荐课程
95% 到 99%,看起来只提升了 4%。
但意味着:1000 张发票,错误从 50 张降到 10 张。
财务姐姐的工作量:从 1 小时降到 10 分钟。
这就是优化的价值。
细节决定成败。 💪
完整代码已上传 GitHub,扫码获取。