前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >彭碧发:腾讯云文字识别OCR技术构建和应用

彭碧发:腾讯云文字识别OCR技术构建和应用

原创
作者头像
腾讯云开发者社区技术沙龙
发布2019-09-12 14:43:09
4.4K0
发布2019-09-12 14:43:09
举报

2019年9月7日,腾讯云开发者社区(腾讯云官方开发者社区)主办的技术沙龙——AI技术原理与实践,在上海成功举行。现场的5位腾讯云技术专家,在现场与开发者们面对面交流,并深度讲解了腾讯云云智天枢人工智能服务平台、OCR、NLP、机器学习、智能对话平台等多个技术领域背后架构设计理念与实践方法。

以下内容整理自腾讯云高级工程师彭碧发,给大家带来“腾讯云文字识别 OCR 技术构建和应用”的分享内容。

我的演讲题目是“OCR应用和技术构建”,大概会发30分钟左右的时间。主要讲解的是OCR技术上云过程中碰到的问题以及产品介绍。

先进行一下自我介绍,我叫彭碧发,是腾讯云大数据及AI人工智能中心的高级工程师,研究生是在华中科技大学图像所毕业的,在腾讯云先后参与了图像分析、OCR,目前主要负责OCR技术上云。

今天PPT的目录大概分三部分:

第一,腾讯云OCR概况;

第二,产品介绍和接入。

第三,腾讯云OCR技术介绍。

前两部分会主要讲产品定位、产品优势,以及分开介绍具体的产品和怎么快速接入。第三部分是PPT的主要重点,主要讲一下在上云过程中的接入速度的问题。

OCR(Optical Character Recognition)的定义是光学识别、字符识别,让计算机看图识字的技术。

有两个例子,身份证可以把姓名、性别、民族等具体信息都识别出来。通用OCR可以把文本识别出了4段文字。

产品定位是打造文字识别工具箱,目前聚焦在公有云上。打造文字识别工具箱要求我们做到够丰富、被集成、够灵活。我们自己也花了一部分时间在私有云上,但发现非常耗时间,性价比布告,所以目前主要聚焦在公有云上,等公有云规模复制之后再结合私有云。

中间白色部分是我们目前提供的产品能力,现在整体有35种接口,提供文字识别工具箱,所以接口一定要跟的上,目前有35种。往下是技术资源、计算存储、服务能力。不同的其他技术形成组合产品以及解决方案,最后服务于合作伙伴,目前合作伙伴类型比较多:泛互联网、金融保险、政府企业、交通物流、教育,目前泛互联网在公有云上运行量比较大一点。

产品优势:性能优异、场景丰富、接入方便。性能优异是说准确率和召回率、识别速度等性能指标高于行业竞品。产品非常丰富,有30几种接口,覆盖了票据、身份证、火车票等非常多的细分场景。接入方便,有快速接入指南,基础的开发者可以通过8到10分钟左右的时间快速接入。

刚才讲的是OCR的概况,讲了产品的定义和优势。

下面展开讲一下OCR的具体产品,其中会重点介绍两个产品,也是目前比较多的产品。还会介绍客户以及客户如何快速接入。

先看一下小程序,文字识别在中间部分,除了文字识别现在还有一些其他的,包括人脸识别、车辆识别。目前分成五大类,旁边有二维码,大家可以扫描一下。服务列表,这也是前两周更新的,上一次是24项,现在已经变成35项了,大概分类是通用、卡证、票据、行业和汽车。目前接口35项已经处于行业前列,但后面有计划继续增加更多的接口,实现行业接口领先。

用的比较多的通用印刷体,准确率大概在95%以上,可以识别非常多的语言,目前是18种语言以上。GPU处理速度是300到500ms,CPU慢一点是3到8s,会通过预处理、投视矫正、去模糊,增加识别的鲁棒性。

身份证识别没有受到客户挑战,通用OCR的产品太复杂了,会有挑战,但身份证没有受到客户挑战。我们准备在细分场景下继续进行优化。

可以看在ICDAR两项凭证中取得第一名,但这仅仅是测试,有一定的价值,但更多是在实际产品中的识别水平。因为识别产品场景更多,场景复杂一点。

这是前一段时间准确率和召回率的情况,识别率大概在92%以上,竞品友商大概在70%左右。这是客户给我们项目的反馈图。

我们有快速指引接入,里面会有自动咨询代码,这是自己在代码里扣出来的,只需要把“SecretId”和“SecretKey”替换一下就可以。

下面介绍一下产品。目前框架包括两部分:图像分析、OCR,我最早是参与图像分析的,后面接手了OCR应用,技术开始扩展成OCR。大概分为五层:用户接入层、Web接入层、业务逻辑层、引擎平台层、基础服务层。右边是运营能力,包括环境、评测。

用户接入层可以通过API和SDK两种方式接入,Web接入层除了常见的域名解析和路由分发外还有一套标准的云API接口——云3.0接入。使用它的好处是SDK可以进行生成,产品进来之后文档生成会非常好。还可以生成一些配套的调试工具。

说一下AI视觉的产品情况,有图像分析、人脸分析,但最开始的时候全都放在代码库里,所以后面就分开了,互相解耦,互不影响。内部有不同引擎,每一种引擎的实现都不一样,所以进行了整体的适配。基础服务层是一些能力,像计费上报、计费之等。使用微服务可以把各个业务之间互相耦合,发布的时候可以做到影响范围最小。

下面重点介绍一下引擎平台层,就是引擎平台层让我们的接入效率提高很多。OCR最终是要15项,其他加起来AI视觉要达到170、180项。

V1版本是改造之前的版本,当时想用我Facade提供统一接入,通过CommonAdapter进行配置,但CommonAdapter配置不友好、不清晰,自己使用后也发现记不住。还有在简单适配层处理的逻辑真的非常简单,超过三层的逻辑处理都不行,还需要增加设备层,用三层会导致修改问题非常麻烦,是非常耗人力成本的。最开始改错误码就改了好几次,发现问题后就对它进行改造。

这是改了之后的情况,目前在引擎接入和引擎适配放在一个工程里。客户或者引擎评测图片进来之后通过它获取引擎,再进行分发调用插件,插件主要抽象成HandleReq、HandleHeader、HandleRsp。并且会把错误码统一收集,这样逻辑会更加灵活,发布起来非常方便。并且各个显示接口出去后会非常标准,内部的其他使用也可以直接调用,不用关注后面的差异。最主要的是效率急剧提升,以前是需要2.5天,现在需要0.5天就能解决。

引擎平台层插件动态加载的介绍,目前使用的框架是Tars框架。Tars框架会先通过命令push,push以后配置通过加载,加载以后在VM.RUN里就可以把场景加载出来。目前已经发放了接近60个配置,发完之后马上上线。

有一部分接口是老接口,OCR文档页面上文字识别2017就是我们的老接口(2.0接口),2.0框架非常老,框架经常出了问题之后找不到人维护,所以我们非常急迫地对它进行改造。之前各个业务都在这里耦合,会互相影响,现在改在之后。本来客户是从Nginx到Qzhttp的,现在到2.0逻辑层和3.0逻辑层最后到引擎平台服务,维护起来比较简单一点,只需要维护一个平台服务就可以,比较方便。

接口改造也会碰到一些问题,这是我们接口改造完之后的情况,改造过程还挺顺利的。但改造之前发现了不少问题,比如说代码里有隐藏功能、架构师暴露文档没有的功能等情况,贸然改造的话会出现很多问题。所以不能用普通改造,普通改造是指根据文档写代码,这种情况非常危险。最后用的是旁路真实流量测试与验证方法。

客户的流量或来之后到NGINX接入层,在接入机上会有GoReplay,通过GoReplay把数据保留下来,保留下来后可以通过复制发送到新接口。接下来会有比较工程,知道大概改造效果。

以行驶驾驶证为例,有一次测试发现有1000多个请求,其中1400个正常和老接口保持一致,有300多个不一致,300多个不一致中是什么原因,有数据了就根据具体的情况一一进行修复。

每个接口上之前都会测试指标,不同的接口会有差异性。横坐标是阈值,蓝色的是召回率,橘色的是误判率。可以根据你要确定误判是多少,画一个阈值就可以知道召回值是多少。

评测方法确定之后后续做自动化,因为接口非常多所以必须自动化,这样东西才能沉淀下来。可以看到前面部分会有召回率、准确率、耗时TP99、TP50等,下图是标注和实际的用户接口之间的差别。

为了保证服务质量会有多层次多维度的接口告警,引擎层面会有业务层的告警以及维度给到API、IP接口,指标会有失败率、异常率等等。接口比较多,所以现在做了测试自动化,修改接口跑一下测试自动化的脚本,发布起来会比较方便一点。运维层用了K8S,非关键节点是允许挂掉的,挂掉之后是服务可用,资源不够的时候会把一部分请求给流水掉,这样的话不至于引起“雪崩”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文字识别
文字识别(Optical Character Recognition,OCR)基于腾讯优图实验室的深度学习技术,将图片上的文字内容,智能识别成为可编辑的文本。OCR 支持身份证、名片等卡证类和票据类的印刷体识别,也支持运单等手写体识别,支持提供定制化服务,可以有效地代替人工录入信息。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档


http://www.vxiaotou.com