写点什么

宜信 OCR 技术探索之版面分析业务实践

2020 年 9 月 24 日

宜信OCR技术探索之版面分析业务实践

导读:图像识别中最贴近我们生活的可能就是 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)。


原文链接


宜信OCR技术探索之版面分析业务实践


2020 年 9 月 24 日 10:00809

评论

发布
暂无评论
发现更多内容

加码线下,新荣耀“破题”场景经济

脑极体

关于binlog,这个参数能不能用?

Simon

MySQL Binlog

Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)

linux大本营

c++ Linux 后台开发 架构师

性能压测

jorden wang

英特尔神经拟态生态系统发展和研究的最新进展

intel001

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 微软 自动化 自动化测试 playwright

IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

YourBatman

IDEA 新特性 2020.3

挑战赛 | 话题王者VS互动先锋(第一季)

InfoQ写作平台官方

话题讨论 活动专区

架构师训练营第 11 周课后练习

叶纪想

极客大学架构师训练营

【技术分享】浅谈RTC及Agora RTC SDK集成介绍

邵帅

给你一个亿的keys,Redis如何统计?

不才陈某

redis

新闻|Babelfish使PostgreSQL直接兼容SQL Server应用程序

PostgreSQLChina

数据库 postgresql 开源

已拿腾讯后台开发岗offer,简单说下自己的面试经历和学习路线

程序员小灰

c++ 后台开发 架构师 TCP/IP Linux服务器开发

架构师训练营第 1 期 -week11

习习

即使不会node.js,拖拽就可完成数据的可视化展示

华为云开发者社区

node.js 数据 可视化

《技术男征服美女HR》—Fiber、Coroutine和多线程那些事

太白上仙

Java 程序员 面试 后端 多线程

javascript开发后端程序的神器nodejs

程序那些事

Java nodejs 后端开发 koa 程序那些事

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

996小迁

Java 架构 面试

ONES 收购知名协作工具 Tower

万事ONES

团队协作 高效 研发管理工具 收购 资讯

英特尔发布第二代Horse Ridge低温量子控制芯片

intel001

ONES 收购 Tower,五源资本合伙人对话两位创始人

万事ONES

项目管理 团队协作 ONES Tower 收购

训练营第七周作业

大脸猫

极客大学架构师训练营

讲述我在阿里六面的经历,幸好我掌握了这份“Java并发编程+面试题库”成功拿到20K的offer

比伯

Java 编程 架构 面试 计算机

腾讯大牛整合Java+spring5系统学习架构,神乎其技

小Q

Java 学习 编程 面试 spring 5

想了解任务型对话机器人,我们先从自然语言理解聊起

华为云开发者社区

人工智能 机器人 自然语言

英特尔推动集成光电的发展,用于数据中心

intel001

国产电子表格Luckysheet后台也开源了!支持在线协作,一键docker私有部署

奇异石榴果

Java Excel SpreadJS 表格控件

《前端实战总结》之使用CSS3实现酷炫的3D旋转透视

徐小夕

css3 前端 前端工程 CSS小技巧

一个真正0基础小白学习前端开发的心路历程

华为云开发者社区

开发 开发小白 0基础

接口测试怎么进行,如何做好接口测试

测试人生路

软件测试 接口测试

技巧收藏|10个JavaScript常用数组操作方法

华为云开发者社区

Java 数组 开发

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

宜信OCR技术探索之版面分析业务实践-InfoQ