基于模板的文字识别结果结构化处理技术.doc
《基于模板的文字识别结果结构化处理技术.doc》由会员分享,可在线阅读,更多相关《基于模板的文字识别结果结构化处理技术.doc(9页珍藏版)》请在三一文库上搜索。
1、基于模板的文字识别结果结构化处理技术随着行业的发展和技术的成熟,文字识别(OCR)目前已经应用到了多个行业中,比如物流行业快递包裹的分拣,金融行业的支票单据识别输入,交通领域中的车牌识别,以及日常生活中的卡证、票据识别等等。OCR(文字识别)技术是目前常用的一种AI能力。但一般OCR的识别结果是一种按行输出的半结构化输出。本次公开课我们邀请到了百度高级研发工程师向宇波老师,他将在12月20日(周四)带来一场主题为基于模板的文字识别结果结构化处理技术的分享。本课程从百度自定义模板文字识别展开,从理论到案例,详细介绍OCR结构化的相关技术,并理清OCR和结构化之间的关系和适用场景。向宇波:大家好,
2、我是来自百度AI技术生态部的研发工程师,我叫向宇波,今天给大家带来的分享是基于模板的文字识别结果结构化处理技术,我们主要讲的是文字处理结果的结构化。文字识别行业现状我们从一个财税案例的角度出发。大家在公司里肯定都做过报销,报销的时候我们都会有出租车票、定额发票等,我们需要将各种发票贴到纸上然后提交上去,由财务来做后面的事情。通常来说,他们其实做的都非常辛苦,要耗费大量的人力来进行人工录入。这样的话,不仅成本很高,而且耗时也很长,人工录入的话还有可能会出错。我们能不能够通过用文字识别的方式来解决这个问题呢?比如把这个流程变成这样,我们在中间加一层,不是人工录入,而是通过一个识别系统,首先我们把这
3、些票据通过图像采集设备,例如高分辨率扫描、拍照这种方式转换成图像,然后通过文字识别技术把图像上的文字识别出来,再经过一个数据的结构化,最后输入到财务系统。这样能节约大量的人力物力,也能够提高效率及准确率。其关键部分是在识别之后做一个结构化处理。我们来看一下多模板的结构化识别。首先来说,我们从刚刚的例子也能看得到,哪怕是一个很简单的报销过程,也涉及到很多种票据,例如火车票、定额发票等等。现实生活中这种票据非常多。所以,我们的结构化方案要能够支持多种模板。一般来讲,OCR识别出来的结果是单纯的一行一行文字,这样业务处理起来会比较困难,key value形式的结构会比较好处理。我们用一个例子来解释,
4、比如我们识别一张火车票,这个火车票上面有一行文字是始发站,然后是车次、到达站。如果直接处理识别出来的那一行文字相对麻烦,因为需要去切分出各个字段。但是,如果我们的识别结果有结构,那处理起来就会容易很多。通过key value的形式检索,我就能够知道我的始发站(北京南),然后到达站(天津)、车次。所以结构化给业务处理带来了极大的便利。接下来我们看一下文字识别分类。通常来说文字识别分为两个大类,一种是通用文字识别,另一种就是专用垂类识别。通用文字识别就像刚刚提到的,对一个图片来说,识别结果会以行的形式输出,同时会有比较准确的文字坐标,这种按行输出的结构可以称之为半结构化,它只能告诉你在这一行,在这
5、一行,从上到下罗列,没有真正意义上的key value结构。专用垂类识别的结果有结构,比如说对于身份证,其实我们知道所有身份证都长的一样,我们能够知道身份证上这个地方是姓名,这个地方是性别,这个地方是民族,所以我们能够返回的时候就告诉你姓名是什么,性别是什么,生日是什么。常见的专用垂类还覆盖几类常见卡证,像身份证、银行卡、增值税发票这些。但是开发一个专用垂类识别,通常来说需要花比较多的人力物力,才能够达到一个比较高的准确度,所以它的开发周期和人力成本都比较高。整个看来,业务处理需要不同板式的文字识别,并且希望能够结构化,但是如果把它们变成专用的垂类模板来,就会面临成本很高,周期很长的情况。基于
6、这些矛盾,我们推出了一个基于模板的文字识别结果的结构化方案。给大家做一个例子来演示,比如用火车票。我有一个火车票的模板,就是就拿我自己的火车票举例,大家可以看到我的始发站、终点站都有了。然后我们可以再做一个模板,这次可以换一个增值税发票的。首先我们上传一张模板的底图,所有的增值税发票都长的差不多。然后我现在来选一些参照字段,选这个纳税人、开票日期、税率、开票人、小写、收款人、价税,这样就差不多了。比如说我想要识别这个,大写的金额,保存。就可以选择另外一张,这两张显然是不一样的。我们来看一下,应该是这张,可以看到这里写的是1000元整,这样的话我们也可以多框选一些别的字段,就可以像刚刚火车票一样
7、,在这边,在页面上就可以测试出来我们想要的字段都能够给它结构化,按key value的形式找到。基于模板的文字识别结构化流程刚刚说的看起来操作很简单,但其实在它的背后我们做了一系列的操作。这个就是我们对整个文字识别结构化的流程,它经历了4个大的步骤(4大流程)。首先是图片摆正,然后是模板匹配、多次摆正,最后是结构化。对于图片的摆正来说,首先我们会进行一次文字识别,然后基于文字来寻找参照字段。我们通过参照字段来选择参照字段能够围成的最大面积的四边形,根据这个四边形来计算透视投影矩阵,并做一系列的图像变换,然后再计算所匹配的程度。如果足够匹配了,OK,那我们结构化;如果没有匹配,并且没有达到我们的
8、匹配次数上限,我们是可以再来一次,尝试多次摆正,摆得更好一点。基于深度学习的文字识别我们来讲一讲基于深度学习的文字识别。首先大体上来说有两种方式,一种是单字检测加上单字识别,另一种是行检测加上行识别。单字检测就是把文字当做一般的物体检测任务,例如可以用faster-rcnn这个网络去做,每一个字都可以当做一个小物体。检测出来的单字再用单字识别处理,本质上是个多分类任务。行识别就不再是检测一个一个字,而是一个文本行。一般来说文本行的特征有:高度不是很高,但是可能一行字会比较长,它其实是类似于小竖条,然后横着摆过来一个很长条的。对通常的物体检测模型做改造,然后去检测,其中一个好的例子就是cptn。
9、然后把一行文字导出来之后再来识别,就可以当做是一个序列标注的问题了。当然现在也有这种端到端的,是大家正在做的一些方向。基于模板的图片摆正我们再回到刚刚的模板。模板可以认为是一个标准的底版定义的结构,比如这个定额发票,其实我们一开始就知道我们需要识别的部分在模板上的位置,在这个票据上,我就知道这个发票代码它其实就在这儿,发票号码在这儿,金额在这儿。如果每张图都长这样,其实就很简单。但实际上来识别的图都不像模板一样摆的那么正,识别的区域在图片上的位置不是固定的,比如有可能我上传的图是这样,如果按照固定位置扣取,很可能什么都扣不到。所以我们需要有一种方案,也就是刚刚说的摆正那套流程,希望把所有待识别
10、图都摆的跟模板一样正。我们选用的是透视投影方法来做图片的摆正,尽可能的把待识别的图跟模板图对齐,这样比较方便后面提取字。透视投影变换的时候,需要4组从待识别图到模板图对应的点对。也就是说像这样,比如这个发票的票字它在这儿,但是识别图上在这儿,模板上在这儿,这边一个发票号码,然后各种类似这样的对应起来的点对。通过这4组点对可以计算一个透视投影矩阵,做透视投影变换。我们通过框选模板上固定字段来做参照字段,进而通过文字匹配方式寻找对应点对。通常一个票据它的板式固定,那么它就符合我们刚刚说的那种条件,是对应的点对。如果参照字段有多个,这个时候可能就会遇到一个问题了。比如说对于这个票据来说,它虽然很简单
11、,在上面可以提取的字也只有1、2、3、4、5,比如说我只提取了5个字段作为参照字段,但是计算索引的时候只需要4个点,此时需要取舍。比如这儿虽然只有5个字段,但实际组成的点对个数其实是比较多的,比如这个蓝线的可以算一个,这个红线这一圈也可以算一个。我们经过一些实验,当然从主观上看也能够想到,参照字段越分散它摆正的效果越好。可以这么理解,越分散的时候每一个点它能够管辖的区域就越存在这个票面的四周,那么它摆的时候,相当于说你从一个更高的维度或者一个更大的范围去摆,那么摆完的效果肯定比在一个小范围内去拉动其他地方来摆的误差小。然后怎么样来衡量这个分散的程度?我们选用面积作为衡量四边形分散程度的指标。我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 模板 文字 识别 结果 结构 处理 技术
链接地址:https://www.31doc.com/p-3417816.html