Azure Form Recognizer识别点阵打印内容0误识别为8如何解决
Azure Form Recognizer 点阵发票0误识别为8的排查解决方法
第一步:先定位问题层级
- 先剥离发票模型,单独调用服务的基础读取(Read)OCR接口,传入原图提取对应金额区域的原始识别结果:
- 如果基础OCR就返回
15888.88,问题出在底层字符识别环节,核心诱因是点阵打印的字符由离散墨点构成,0中间的空白区域被洇墨、扫描杂点填充,被模型判定为8的闭合结构 - 如果基础OCR返回正确的
15000.00,但预构建发票模型抽取结果错误,问题出在预构建模型对这类特殊打印版式的字段匹配逻辑偏差
- 如果基础OCR就返回
第二步:按问题原因对应解决
针对底层OCR识别错误的场景
- 优先做输入图像预处理:把输入图像分辨率调整到300DPI以上,先做倾斜校正,再用图像形态学开运算(核大小设为1-2个像素)清除字符上的细碎杂点,把0中间被误填充的浅墨点清除,同时调高画面对比度,让字符和背景的边界更清晰,这类预处理可以解决80%以上的点阵打印字符固定误识别问题。
- 升级服务API版本:2022年之前发布的v2.1等旧版本对点阵、热敏打印类的低质量印刷字符没有做专项适配,升级到最新的稳定版GA API即可获得针对针打字符的识别优化。
- 加后置规则兜底:金额类字段本身有明确业务规则,可以在识别结果后增加校验逻辑:比如结合发票上的大写金额做匹配、用单价*数量的计算值校验总金额,也可以针对这类固定偏差做区域限定的纠错:金额的小数角分位、整数末尾的连续8如果和业务逻辑冲突,优先校验是否为0的误识别。
针对预构建模型字段抽取错误的场景
- 不要直接套用通用预构建发票模型,针对当前使用的固定版式点阵发票,收集15-20份同版式的真实发票样本,标注正确的字段值后训练自定义模板模型,这类固定版式的场景,少量样本训练后识别准确率基本可以达到业务可用标准,固定字符误识别的问题会完全消除。
全量0被识别为8属于非常典型的点阵打印洇墨导致的识别偏差,不需要一开始就做模型微调,先做一次简单的二值化预处理,把0中间的浅灰色杂点全部置为背景白色,重新提交识别大概率可以直接得到正确结果。
内容的提问来源于stack exchange,提问作者Arun P
相关产品推荐
相关产品推荐

