冀永楠:OCR的应用锦集及背后技术

欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~前端

本文由云加社区技术沙龙 发表于云+社区专栏算法

演讲嘉宾:冀永楠,现为腾讯云大数据AI产品中心高级研究员。负责了腾讯云与华星光电等多个图像AI项目。数据库

img
7.28冀永楠OCR的应用集锦及背后技术-01.jpg

今天分享的主要是OCR的部分。分享腾讯云在OCR上作的一些工做,以及腾讯云目前在云上面开放的OCR的一些服务。OCR简单来讲就是让机器能看懂写的文字。咱们手写的文字比较复杂,什么样子的都有。印刷的文字稍微简单一点,但也一样具备复杂性。今天主要讲的就是这种复杂性,这种服务在平常生活或者工程中遇到不一样状况所产生如何处理这些复杂性的能力。安全

img
7.28冀永楠OCR的应用集锦及背后技术-04.jpg

这里分享两个作过的例子。身份证相对来说很格式化、比较简单东西,能够明确知晓在哪里找到怎样的文字信息。后一个是医院的检查报告,医院的检查报告相对而言复杂一点,它的复杂度在于不仅是处理一个医院的一种检查报告,而是须要把不一样的医院的检查报告所有作统一处理。这就增长了很大的难度。服务器

img
7.28冀永楠OCR的应用集锦及背后技术-05.jpg

在作正式的介绍以前,先说一说关于OCR的历史。OCR历史回溯起来仍是好久远的,最先在六七十年代就有过实际的应用。你们都写过信,邮编号码在信封的左上角。这就是最先的OCR的应用。这种技术被使用在了一个很是窄的场景里面,只是要求把填在空格里的数字稳定的有效的检索、识别出来。当时的识别几率能达到92%-93%。这解决一个很大的问题,当时邮寄信都是经过识别码来进行投递的。微信

这个应用场景后来直接致使了2013年MINST的一个诞生。全部的框架都将它做为例子。它就是来源于这种最先的应用。一些复印机,扫描仪厂商,例如,东芝,佳能、富士通等但愿将这项技术应用于扫描仪里面的文字转化成电子文字,便于客户存档。在PDF里面也用到这种技术。网络

时间到了2015年的时候,谷歌云盘里全部的文件免费提供OCR的服务。即使是提供免费服务还是一种窄场景,只能使用在Google Doc存储的文件。到今年的5月23日,腾讯云公布了OCR免费接入,以及其它不少AI类的图像应用免费接入。这就意味着能够用手机移动终端或者任何的终端设备采集一些文字的图片后上传到云进行解析。框架

img
7.28冀永楠OCR的应用集锦及背后技术-06.jpg

我用两个维度来描述OCR的应用。一个维度是标明它是一种表格式的OCR仍是通用式的OCR。所谓表格式的OCR比较好理解,就是说要识别的这个东西里面是一种表格制式的,它有特定的规格,什么位置写在什么内容。通用OCR的话就没有这种要求,随便拍一张照片里任何的文字都须要提取出来,而且告知那个文字或者那段文字在哪里。这是一个维度。另一个维度是印刷体维度和手写体维度。这个比较好理解,可是有不少的应用里面也是处于交界的位置上。手写为和印刷体还有一个交界是由于不少印刷体自己并非一个很是经常使用的印刷体。并且能够设计成相似于花体字或者写得比较随意一点。好比说招牌,王老吉或者天津狗不理包子。自己的字体并非常见的字体,能够算是手写体偏印刷体一点。机器学习

OCR难度确定是表格式的会要容易一些。通用式的是要困难一些。一样手写体要困难一些,印刷体要简单一些,那么这个坐标系里面右下角的就是比较难的应用,左上角就是会稍微简单一点。有任何的OCR实际场景应用的时候,咱们常常拜访客户。客户提出要解决某个问题的需求的时候,若是这个落到右下角的话就会比较难。若是落在左上角的话会比较容易解决一些。工具

img
7.28冀永楠OCR的应用集锦及背后技术-07.jpg

咱们如今腾讯云提供的印刷体的服务基本上都是这些,经常使用的是通用OCR。往腾讯云里面发一张图片,他会把这个图片里面全部可识别的印刷体的文字全返回出来,并告诉你这个印刷体的文字在这个图片里的位置。除此以外还有一些证件类的,好比驾照、车牌、银行卡、名片等等这些,稍后会逐一的介绍这方面的应用。如今用这四个特征来描述咱们的服务,第一咱们要求服务是准确的;另外要求咱们的服务是完备的,就是说能识别英文也能识别中文,也能识别字符。咱们如今能够识别一部分的少数民族文字。英文也是没有问题,其余的文字如今也逐渐的往外拓展一个一个的加到咱们的范围里面。

img
7.28冀永楠OCR的应用集锦及背后技术-08.jpg

快速这个特性是不少的应用场景中所要求的,咱们的OCR在GPU运行是毫秒级的。在CPU的话时间要长一点。还有就是鲁棒性的问题。在手写体的识别方面咱们主要的应用好比手写的备忘,像早期诺基亚有一款能够写字并识别出来。如今全部的手机里面都有这种功能。还有一些业务量较大的单据,如运单。这类业务咱们是第一家将手写体应用在实际场景中的。数字的识别率高达90%以上。单字的识别率在15毫秒之内,复杂汉字超过80%。

img
7.28冀永楠OCR的应用集锦及背后技术-09.jpg

手写OCR强调;数字的准确率主要缘由是由于手写体识别大部分都用在银行业和数字相关的行业。不管你写的地址仍是写一张支票,那么数字都是最重要的部分。因此咱们很是强调这个数字的准确率。腾讯云的OCR服务在权威测评中也获得了很是好的成绩。在2015年的时候取得了排名第一。ICDAR是一个国际文档与识别大会,它是一个比较权威的在OCR方面的一个会议,每两年举办一次。你们若是有兴趣作一些OCR的实验或者作一些OCR的这种技术性的开发,能够去ICDAR上面找一些对比的方法。

OCR技术自己的挑战有这样几点:一个指拍出来的图像。众所周知全部的图像类的AI第一步都是获取图像。要否则的话怎么分析呢?那么图像拿过来的时候就会产生不少的问题,好比说你所用数据的采集,摄像头等成像的仪器不同,成像的场景不同。还有要求可能也不同。

img
7.28冀永楠OCR的应用集锦及背后技术-10.jpg

OCR是应用很普遍的一项技术,实际场景中会遇到一种文字倾斜、模糊等等的状况。这是一个技术上的挑战。还有一个就是说语言文字自己,最简单是英文OCR。通常来说中文稍微简单一点。中文繁体字、手写字,国内少数民族文字等使用场景由于数据来源少,场景复杂难度有所增长。

文字大小不一以及文本背景复杂。主要是取决于场景,基本上全部经常使用的OCR识别步骤都是这样子的:先作一个版面分析,即肯定场景。根据版面分析大概明确了正在分析的是什么(驾照、行驶证或发票等)。进而将下一步的步骤简化到比较简单的环境里,这样有助于提升分析的结果,而且可以快速的分析出答案。

下面是文字检测,以及文字识别。在此以后会有后处理,后处理根据一些语义和环境来把识别出来的错误纠正过来。例如:咖灰,咖后面不可能加一个灰,通常都是咖啡。在使用深度学习网络技术作OCR时,并非一步一步进行,而是一个网络里面的一个模块和一个模块对应的这种功能。可是整个的流程仍然是这样逻辑的流程。

img
7.28冀永楠OCR的应用集锦及背后技术-11.jpg

OCR技术自己的发展能够说是分为了三个阶段。最先的时候不用检测,就像上文讲的信封上数字的识别,不须要作检测。直接使用分类器就能够。早期的技术就是对图像作一些特征提取,后面加上分类器,比较成熟的好比有SVM,能直接获得的分类结果。但在当时应用场景很窄。以后场景扩展:先识别文字的位置而后再把这些文字进行一块一块的切。切到小图像以后再回归原来的过程进行识别。

这种方法存在一个很大的问题就是你前面切的话,后面的偏差会累积。再后来有了深度学习这项技术,就开始有端到端的模型。如今大部分学术界里面研究发表的论文都是基于CNN和RNN网络结构的。CNN的做用是图像特征提取,RNN作文字序列的识别。尽管网络结构有不少的变形,但它背后的逻辑仍然和原来的没有太大的变化:都是先从图像上面提取一部分特征,再将图像上的特征对应到文字上。CNN是最经常使用的一种提取图像的特征的方式因此CNN+RNN这种网络结构处理图像,最后图像产生一系列文字的特征,最后造成文字的过程。

Attention机制最大的优势在于识别当前的字或词的时候,会考虑到它先后哪些字对这个字有影响。那么在原来没有这个以前通常认为,全部的影响都是同样的。由于存在必定连贯性,每一个字(词)都与其上下文存在联系。考虑到这种关系就要对总体的模型和识别率进行提高。同时不一样语言里面的联系也有不一样,这也为语言的研究也提供了必定的信息。

img
7.28冀永楠OCR的应用集锦及背后技术-12.jpg

这张PPT对应了刚才所讲传统的OCR的流程,先将图片获取进行二制化,来提出多是文字的部分。再去分割这些字,把这些字分割成一块一块,再将这些一块一块小的图片放到分类器里面来识别这些文字是什么字符。进行字符串汇总以后还会进行天然语言处理的修正,最后反馈正确的结果。目前腾讯云基本上已经不采用这种传统的方式,而是以端到端的方式为主,那么除了端到端的方式根据不一样的场景应用,已经产生了一套相似工具集的方法。对于不一样的应用场景,只需从工具集里找出最为适配这个场景的工具或者模块,再将它们串起来进行调优,最后造成了总体识别的模型。

接下来先给你们介绍一下腾讯云上的服务,再介绍一下咱们作过的一些综合类应用。这二者的差异在于云服务自己具备必定的通用性,基本上每一个人均可以在腾讯云申请一个帐号,经过标准的API发送图片等等。项目更可能是定制化解决一个具体问题的。咱们就会根据具体的问题和它产生的流程来开发一套系统或者流程来配合它的实际业务,来提升他们的生产效率。

img
7.28冀永楠OCR的应用集锦及背后技术-14.jpg

身份证识能够说是目前最火的识别项目。很早在咱们去酒店住店的时候就有一个叫作人证合一的认证过程,在没有人工智能以前就有这种过程。去酒店住店,前台将身份证号输入到电脑发送至公安受权的某数据库的远程服务器上,以后服务器会返回一张身份证照片,服务员会看这个照片跟你本人是否是一我的,验证完毕你就能够住店了。

如今的技术发展到顾客把本身的身份证插到一个读卡器里,它会把这个身份证信息发到身份数据库里面把照片返还回来,并经过摄像头拍摄脸部信息,将拍摄信息与身份证直接对比。目前这项技术不仅是用于住店,包括乘坐高铁等,安保人证票合一等场景里已经应用得愈来愈多。

img
7.28冀永楠OCR的应用集锦及背后技术-15.jpg

名片识别是介于格式化和非格式化通用之间的一种。由于名片它所包含的信息是必定的,总会包含姓名包含工做地点,包括电话号码这些。其所采用的字体各方面也比较恒定,因此说是格式化的。偏向通用是由于各部份内容的位置是不必定的。好比一些特别有创意的名片,常常会用一些符号代替原本应使用的一些字。

img
7.28冀永楠OCR的应用集锦及背后技术-16.jpg

车牌识别服务应用范围也比较广。一方面是停车,还有在高速进出口以及交通管理车辆的识别也采用了车牌OCR的识别。车牌OCR的识别主要的难点在于场景多样化以及前端采集设备的不可控。若是设备不是高清的设备放大以后会出现模糊的状况。

img
7.28冀永楠OCR的应用集锦及背后技术-17.jpg

驾驶证、行驶证两个证件的识别通常用于租车以及车辆维修等领域的服务。共享汽车、滴滴都会用相似的服务。OCR在这类证件服务领域最大的难点在于证件的反光。这类证件自己它会有一层膜,拍照的时候可能会有反光。预处理会成为OCR识别重要的模块,这种预处理方式通常都是为这种问题单独开发的,它须要产生什么呢?高动态,就是说这种会很是亮的。须要高动态、标准的归一化过程,须要将识别部分归一成比较一致的图像。

img
7.28冀永楠OCR的应用集锦及背后技术-18.jpg

银行卡是这个领域比较常见的服务,银行卡的字体相对比较简单,位置也相对固定,但有的时候字体会变得很差识别,尤为在不一样的磨损条件下。发票OCR相对格式比较固定,问题在于发票种类多、发票的字体有时会打印的很是的不清楚。

img
7.28冀永楠OCR的应用集锦及背后技术-21.jpg

通用印刷体OCR是比较常见OCR的产品,对OCR的使用至关一部分都是来自于通用的印刷体。广告识别占比较大。这类OCR最大的难度在于很难预料它的背景是什么样子,字体也是各类各样。在归类方面会认为是一种介于印刷体和手写之间的应用方式。对这类识别首先须要有足够大的字体库,若是还不足以解决问题就须要将手写体的技术也放在里面以保证比较高的准确识别率。

img
7.28冀永楠OCR的应用集锦及背后技术-22.jpg

针对这一场景产生的方案可使准确率达到90%以上。随手拍其实也是通用印刷体常见的应用方式。他的问题也是场景变化比较大,会涉及到光线变化的问题。广告类的话光线变化不会有太多的问题,这类光线角度是一个问题,同时还有拍照手抖带来的图像模糊,以及摆放时产生的文字遮挡……这些都会产生影响。

img
7.28冀永楠OCR的应用集锦及背后技术-23.jpg

血液的检查单也是咱们在作项目中的一部分,医院里打出来的血检单,文字间距很是小,字也小,同时识别的时候还会产生透视畸变。对于这种状况有两种处理方式:第采用超解析度作预处理,我把个人图像先进行一个,能够理解成一个采用了人工智能技术的一个非性能差值,使解析度更高、文字看上去更可识别,在进行识别器识别。第二种方式把刚才那部分集成到网络设计里,最大的好处在于针对这种状况会有比较高的识别准确率,而且识别速度会比较快。它的缺点在于遇到其余的相似的问题的时候还会须要较大的调整才会适用新的场景。

img
7.28冀永楠OCR的应用集锦及背后技术-24.jpg

手写体的识别就是比较困难的事情。咱们是第一家把手写体识别应用在实际场景中的。应用的场景以快递运单、银行的支票为主。

以上这些服务在腾讯云上均可以找到相应的服务接口,能够无偿使用这些服务来本身搭建一个应用。当你实际须要开发的一个软件,或者须要作一个手写体的识别或者作一个通用的OCR识别的时候均可以直接去调用这些服务来完成应用。

下面都是有明确目标客户的实际OCR应用场景。物流运单的挑战:大概在2010年先后快递业发展得很是迅猛。在当时他们的运单就是必须手写以后录入数据库才能进行投递。

img
7.28冀永楠OCR的应用集锦及背后技术-27.jpg

早期采起的都是人工录入的方式,开玩笑的说这多是是继传呼机以后另一个打字市场。咱们与顺丰共同用手写体的OCR来完成他们的运单录入的过程。这种OCR的方式能够持续工做、准确率高达91%并且保密性更高。

img
7.28冀永楠OCR的应用集锦及背后技术-28.jpg

如今作的OCR系统,能够日处理一千万单,至关于三千多人三班倒的工做量。泰康认知核保项目,是咱们如今在作的,咱们也在不断的寻找OCR所能达到的业务和应用的边界。泰康核保复项目:之前须要人工确认一我的当前的身体情况是否可以买这一份健康保险。

img
7.28冀永楠OCR的应用集锦及背后技术-29.jpg

咱们的主要目的是开发一种代替原有核保方式的系统,下降对医生或者说有医疗经验的核保人员的需求。经过OCR分析,把这些保单进行格式化、结构化输出。以后进行我的患病风险特征的提取。再经过特征创建预测模型,最终获得核保的结论,这个项目对于OCR来说最大的难度在于单据格式的种类是众多,来源不一。

第二个难度在于扫描件所产生的图像质量差异很是大,第三设计系统须要对医疗知识有必定的了解。咱们采用的方式是除了自己的OCR的设计能力,咱们也请到了泰康的医疗专家来共同参与设计,并将知识尽可能的加入到系统里面。一方面经过医疗字库来提供OCR字的转化能力;另一方面在作预测回归时把判断经过机器学习的方式固化、标准化。

img
7.28冀永楠OCR的应用集锦及背后技术-30.jpg

将来咱们仍会不断的去探索AI特别是OCR的实际前沿应用。对纠错库多丰富一些场景信息,以使系统可以适用更多不一样的场景。

Q&A

**Q:**OCR好比说高考识别的过程当中,跟快递的扫描单有什么区别吗?高考卷这些OCR的扫描您那边作过吗?谢谢

**A:**咱们作过但不是高考试卷,是教育的。教育的话其实并非作只是针对高考一个场景的。其实高考的时候你写得字每每是比运单写的字还要清晰一些的,相对来说仍是要容易一些。比较麻烦的是里面有不少公式,这是比较头疼的一点。还有一点不太同样的,运单的话它的,你想输入的这个东西是有一个比较窄的范围的,你输得无非是地址,地址你能够假设穷尽全部的地址选项。可是高考的话相对来说发散一点,它并无这么一个全集在里面。因此整体来说其实高考那个难度是要比运单的难度稍微大一些。但咱们也有一些教育方面的应用,那个方面的话其实咱们主要的工做是在公式上面。

**Q:**我问一下我如今有一个问题,我若是是PDF大量的文件上传上去,由于PDF是扫描的图片,它的文字就可深可浅,当我上传一个PDF扫描实现的时候,我很大的数据量进去的时候这块是怎么作处理的?

**A:**这个有点难住我了。其实关于P处理的问题刚才那位同事回答更为合适一点。由于我是作算法应用的。

**Q:**好比说图片的深浅不是切割了不少块,切割了不少块以后块与块之间的顺序有一个拼接,这一块是怎么作到的?

**A:**如今来说有不少种方式。咱们如今基本上不太建议这种分红小块的方式。至少你能够分红行,分红行的话若是你要作一个RNN的话要比分红块效果好一些。个人建议是说第一先经过一个最熟悉的方法把基本流程搭建起来,以后你会发现其中有一些步骤,那么这些步骤在进行逐渐的优化和合并。由于有的步骤若是是两个步骤,你没有必要用两个步骤,用一个网络能够更好的解决。可能用一个网络效果会更好,因此我基本建议开发思路是这么一个开发思路。

**Q:**我刚才看到您作泰康项目的时候有不少先验的信息,我想问一下先验的信息对应于模型当中是加在哪些部分的?

**A:**咱们刚开始的时候确定仍是要用后处理或者前处理的方法分开来作。第一实现起来比较简单一点,你能够验证你加的这个先验知识是否真正的对你有帮助。当你肯定它有帮助的时候,你把它先独立的分块,以后再进一步的优化造成一个总体的功能。实际的状况可能那种都会遇到,有的会分开两部分,固然这个分开的就有一点技术含量了,这确实是会有一些面向应用场景的设计。

问答

AI开发的语言要求?

相关阅读

安全报告 | 2018上半年互联网恶意爬虫分析:从全景视角看爬虫与反爬虫

安全报告 | SSH 暴力破解趋势:从云平台向物联网设备迁移

给你的CVM安装一个面板吧!

此文已由做者受权腾讯云+社区发布,原文连接:cloud.tencent.com/developer/a…

欢迎你们前往腾讯云+社区或关注云加社区微信公众号(QcloudCommunity),第一时间获取更多海量技术实践干货哦~

海量技术实践经验,尽在云加社区

相关文章
相关标签/搜索