导读:图像识别中最贴近我们生活的可能就是 OCR 技术了。在金融行业银行流水,以及纸质图片等在业务流程中极为重要,上一期技术沙龙我们对 OCR 深度学习技术做了分享,但在 OCR 技术的实际应用中,还需要将 OCR 识别的坐标块排列组合,转化为目标结构,从而形成有效的可分析的数据,OCR 识别文字排版技术降低了研发成本,大幅提高开发效率。本次我们主要结合图像识别领域文字排版方面的技术进行展开, 从抽象行列识别、模板分析,以及结构化三个方面结合落地场景给大家提供崭新的实践思路。
分享大纲:
1、项目背景
2、详解版面分析技术实践
抽象行列识别方法及其演进(俄罗斯方块法)
模板开发
结构化
3、探索过程及总结
PPT 下载链接: https://pan.baidu.com/s/1f_oFi3vpW7JNqfQngVLNAA 密码: 65lt
以下为直播视频,可点击回放,时长 32m18s,建议在 WiFi 环境下观看。
https://v.qq.com/x/page/i3135lgkagd.html
分享实录
一、项目背景
业务端大量的新增数据来自纸质报告、电子邮件、文档、图像、视频等非结构化内容。据统计,业务线对于 80%的非结构化内容无法有效管理,60%的管理人员在决策时无法获得关键信息,50%的信息内容无法为公司带来业务价值。
1.1 解决痛点
1、降本增效: 帮助客户减少人力投入,解放传统 OCR 识别场景耗费的时间,提升工作效率。
2、关键信息提取: 涉及多类复杂场景,理解识别文档内容、提取关键信息,为风险控制、营销扩展、流程优化做支撑。
3、识别准确率,速度,安全性、稳定性: 基于人工智能的深度学习算法解决传统 OCR 识别率低、模版固定、设备依赖的问题。
1.2 项目目标
我们的目标是,由最左侧银行单据图像,经由 AI 模块,识别出带有坐标和文字内容的半结构化数据,再经版面分析模块解析出业务可理解的结构化数据。其中蓝色框的过程就是我们今天讲解的版面分析模块过程,也就是说从 AI 识别结果到版面分析结果。两种过程也是 AI 技术和编程技术的结合的一种表现。
1.3 版面分析现状
前期我们对行业内版面分析技术进行调研,查阅文档,查找一些大厂公开的解决方案,借鉴其中部分经验,结合实际场景需求,研发人员依次突破了行列识别、模板、结构化的技术难点,并进行总结、抽象和优化,提取出一套较为统一的 OCR 版面分析解决方案。
二、抽象行列识别
2.1 行列识别介绍
什么是行列识别?
行列识别即将 AI 模块识别回来的坐标块,依据一定方法,分辨出哪些块,在逻辑上属于同一行或同一列
为什么要进行行列识别?
版面分析开发中,行列识别是结构化的前提条件
如何进行行列识别?
在研发过程中,形成了很多行列识别方法,我们挑几个典型方法介绍
2.2 行列识别抽象方案演进
方法一:按标题识别:根据已识别出的标题坐标,可以覆盖到该列范围,再根据列顺序判断行号
缺点:
1、标题文字识别不准确或未识别到标题
2、标题左右粘连(即识别到一个块中)
3、中间串行导致行号不正确
方法二:属于标题法的升级版,针对多数场景,行的作用大于列,识别出行就可以进行结构化解析了,因标题过多,全识别成功率低,那么只要知道最后一列的位置横坐标范围,在根据纵坐标排序,一旦某一块属于最后一列,那么后面的就一定是属于下一行了
缺点:
和方法一类似,最后一列标题也可能会识别失败,部分模板,最后一列还可能受盖章影响
方法三:根据模板数据特点,参考经验值设置数据块平均高度,再从标题下边开始,把数据根据平均高度切割行
缺点:
行高度是经验值,不一定靠谱,例如图片分辨率就可能会有影响
方法四:投影法。把所有数据块的竖边投射到右侧,重叠的部分即属于同一行
优点:
方法效率高,可封装,为开发屏蔽细节
缺点:
有较长干扰块,会把大部分块包含进去,密集数据也会混乱
俄罗斯方块法
1、按横坐标分别排序
2、从第一个数据块开始放入第 i 列集合
3、如果新数据满足下面条件则数据当前列,否则换列了
3.1 在当前列所有数据的右侧
3.2 和当前列中数据在纵轴上有重叠
4、依次算完每个数据块
5、同理计算行数据
优点:
封装代码,对开发屏蔽细节
开发周期大幅缩短,从 3-5 天缩短为一小时
提供可配置参数
缺点:
参数比较多,开发需要一定学习时间
问题:
1、条件 2 中,如果两块属于重叠,但是边缘压的不多,可以设置阈值,看成不重叠
2、图片上下左右可能会存在部分干扰,可以设置一些匹配规则,满足条件的外部区域可以裁剪掉,提高识别成功率
总结:
以上各个方法各有优缺点,适应场景各不相同,目前我们使用较多的方法是俄罗斯方块法和投影法。
这些是我们初期探索出的一些方法,相信还会有更好的方法,我们也会继续探索。
三、模板开发
3.1 什么是模板
模板:
识别的目标文件可能有不同业务线的图片,例如流水、卡证、报告、其他单据等 – 我们叫业务类
每种业务线还有细化的类型,例如银行流水中的不同银行,保单中不同保险公司等 – 我们叫大类
每家银行或保险公司的单据在不同地点、时间上还可能不是一个样子,这每种图片样子叫做模板
为了提高成功率我们需要针对模板定制化解析,要理解一点,专属的一定比公用的好。
那么第一步我们就需要区分图片属于哪种模板。
针对刚才说的,到大类这一层比较固定,通过 api 层判断。
现在来形象看下模板这层的问题。
3.2 模板举例
看三张图片,针对同一个大类,分别是无表格、虚线表格和有表格的,需要通过训练验出来,有助于模板区分
3.3 模板方法
在开发中,总结了两种模板判断方法,当业务模板种类较少较固定时,我们采用大标题法。
大标题判断方法,查找已知模板在大类中存在特殊的文字表示判断
缺点:
1、可能找不出经验特点
2、可能识别失败
相反第二种方法 可配置的模板匹配度方法,配置模板中各属性的内容和坐标范围等要素,计算出匹配评分,选取分高者。
优点:
1、开发效率极高
2、对开发屏蔽了细节
缺点:
仅能区分已知模板
四、结构化
4.1 什么是结构化
结构化是版面分析最后一步,在行列和模板识别完成后,把数据块转化为目标报文结构,用于存储、传输、分析等
4.2 如何结构化
通常使用标题和坐标来抽取数据,但有时一些特殊的模板会使结构化难度提高
4.3 特殊模板举例
有些图片有水印或印章,干扰结构化结果
目前我们只解决部分水印,盖章问题,还没有较好统一解决方案,这也是目前我们重点要解决的课题,希望有机会同行交流交流经验
针对上面几种场景,我们依据经验,采用 模式匹配方式 封装了一些常用方法来解析和抽取关键数据,最后组装数据
由于图片质量问题,会出现缺数据块的情况,这时即使模式匹配也无法抽取,目前我们 AI 模型在逐渐优化过程中,这种问题会越来越少
4.4 语义矫正
部分业务对文字准确率要求高,例如 工资 有时会识别成 7 资 7 贝 1 识别成 I 0 识别成 o,遇到这种情况, 我们综合利用全局及局部语义信息进行的 NLP 文字校正正
上期刘创老师有介绍过文字纠错内容,这里就不细讲了,有兴趣的同学可以翻回上期内容复习一下,至此版面分析技术侧内容分享完毕
第 12 期技术沙龙: 宜信OCR技术探索与实践|直播速记
五、总结
我们回顾一下今天讲解内容。先介绍了项目背景,又从版面分析技术角度,分别介绍了行列识别五种技术方案探索过程,并重点讲解了俄罗斯方块法,然后介绍什么是模板开发,并介绍了两种不同的模板,最后介绍什么是结构化及结构化遇到的问题和解决方案。至此今日分享到此结束感谢大家。
作者介绍:
刘鹏飞,宜信高级研发工程师
本文转载自公众号宜信技术学院(ID:CE_TECH)。
原文链接:
评论