宜信OCR技术探索与实践|宜信技术沙龙第12期

导读:随着人工智能的热度上升,图像识别这一分领域也渐渐被人们所关注。在公司的业务中,有很多扫描、拍照单据、凭证等进行识别的需求。为了帮助业务实现这些图片文档的识别和结构化,我们进行了一系列的实践和探索,最终确定了深度学习的文字检测和识别模型,作为主要的实现手段,从而满足了业务上的需求。实践过程中,我们遇到过一系列的问题和难点,最终都一一解决,本次分享我们将结合目前的业务需求,说说我们在探索中遇到的痛点和难点,和识别技术中的一些技术细节。

分享大纲:

1、业务上的诉求和痛点;

2、OCR技术的应用场景,以及对业务的重要性;

3、宜信OCR技术解决方案:

     ——产品能力——未来规划

4、OCR技术的的发展和演进;

5、主流算法科普:CTPN、EAST、PSENet;CRNN、Attention OCR;

6、OCR技术实践:样本生成、算法改造、论文的实现等。

PPT下载链接: https://pan.baidu.com/s/1XD0hVF_-VGMVbnlStTR2aw 密码: lnf8

​分享实录

一、OCR概述

1.1 OCR技术演进

  • 传统图像,冈萨雷斯的图像处理。

  • 信号处理、频域分析以及各类算法:SIFT、HOG、HOUGH、Harris、Canny…都很赞。

  • 从2016年以后业界基本上都已经转向深度了,因为效果真的特别好。

1.2 OCR技术商业服务

  • 身份证卡证类相对容易些,但是要做到复杂场景的,也不是那么容易。

  • 发票、业务单据相对复杂,除了识别,更重要的是版面分析。

  • 最近表格识别比较火,各家都在努力实现,微软的开放tablebank数据集

  • 移动端backboneMobileNet,或者是tesseract+opencv

二、我们的业务场景

2.1 业务需求

满足业务是第一需要,不同于大厂,对外服务API,要求大并发那么强,多样性品类完备,我们更强调单品要做到尽量达到业务要求,更强调定制化,可以分布走,业务上可以给反馈不断改进。

2.2 识别过程中需要解决的问题

三、OCR算法详解

3.1 算法概述——分享原则


大家一定要自己弄细节,读代码、甚至自己动手撸,自己训练,调参,排错,才能有真正的体会和理解,只讲我认为每个算法里面不太好理解,重点,以及容易忽略的点,跟同行一起交流,沟通。

一个模型,要全面深入了解,需要:

  • 目标、目的、意义是啥?

  • 网络结构啥样?

  • loss是啥?

  • 样本咋做?

  • 后处理干了啥

3.2 算法概述——三大板块

  • 文字检测:把文字框住,缩小到最小范围内,从而降低识别难度。

  • 文字识别:检测出文字后,就可以通过识别工具(算法)来识别出文字,如中间图。

  • 版面分析:当文字识别出来后,我们得出的是文字和相应的坐标,可是当真正业务中要得到的不仅仅是这个,需要有一个结构,如何通过识别出的文字排版成为一个有逻辑结构的单据或者内容,这个工作也超级复杂。关于版面分析这方面,后面会有团队里面经验非常丰富的伙伴和大家分享。

3.3 算法概述——检测算法

  • 表中从下往上的检测算法排序按照效果:越来越好

  • 从anchorbased(也就是右边所示的最下面的那张图),现在逐渐转向pixel-based(像素级别)(右边所示的中间的那张图),主要是语义分割的技术效果实在是太好了。

CTPN:找框的一个算法。

预测最终结果是:10个anchor的y坐标偏移,和高度的调整值,还有它是不是前景的概率。输出是前后景概率[N,10,2],y、w调整值[N,10,2]。它只适合横向,或者纵向,不能同时。

  • 一个模型主要从以下几个方面理解

  • 亮点和核心思路是:预测框和文本线构造算法

  • loss是啥(损失函数):anchor前后景概率、y、w调整

  • label怎么做:大框,弄成小框,然后正负样本均衡

  • 后处理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MwO5jxOA-1595920223326)(http://college.creditease.cn/resources/upload/image/20200728/1595918423412087628.png)]

  • 算法被命名为EAST(Efficient and Accuracy Scene Text),因为它是一个高效和准确的场景文本检测pipeline。

  • 首先,将图像送到FCN网络结构中并且生成单通道像素级的文本分数特征图和多通道几何图形特征图。文本区域采用了两种几何形状:旋转框(RBOX)和水平(QUAD),并为每个几何形状设计了不同的损失函数;然后,将阈值应用于每个预测区域,其中评分超过预定阈值的几何形状被认为是有效的,并且保存以用于随后的非极大抑制。NMS之后的结果被认为是pipeline的最终结果。

  • 最后预测:scoremap,textbox,textrotation

  • 标注是:一个蒙版mask,一个4张图,上下左右的距离,还有个角度:一共3个。

  • 对应就可以出loss了。每个点预测出来,加上角度,就是1个框,太多了框,所以要做LANMS(合并算法)的合并。为何不直接用socremap,我认为是置信度不够,所以要再加上bbox来加强验证。

PSENet是一种新的实例分割网络,它有两方面的优势。首先,psenet作为一种基于分割的方法,能够对任意形状的文本进行定位.其次,该模型提出了一种渐进的尺度扩展算法,该算法可以成功地识别相邻文本实例。

  • FPN,左面用resnet50。为何是resnet50,原因是效果不错,参数适中。

  • 论文里是6个尺度,一个不行么?我理解是彻底分开不同行,逐渐扩大,渐进尺度可以防止彼此交叉哈

  • FPN和UNET都是concat,FCN是add,这个细节。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3EpYto8-1595920223328)(http://college.creditease.cn/resources/upload/image/20200728/1595918508044016080.png)]

  • 使用DB模块之后,二值化操作就变成了可微的,可以加到网络里一起训练。

网络输出

  • probabilitymap,代表像素点是文本的概率

  • thresholdmap,每个像素点的阈值

  • binarymap,由1,2计算得到,计算公式为DB公式

label制作

  • probabilitymap, 按照pse的方式制作即可,收缩比例设置为0.4

  • thresholdmap, 将文本框分别向内向外收缩和扩张d(根据第一步收缩时计算得到)个像素,然后计算收缩框和扩张框之间差集部分里每个像素点到原始图像边界的归一化距离。

3.4 算法概述——识别算法

  • Atttenion:Attention-basedExtraction of Structured Information from Street View Imagery-2017最早的尝试

非常经典的算法,主要的核心是CTC算法:Connectionist Temporal Classification (CTC)适合那种不知道输入输出是否对齐的情况使用的算法,所以CTC适合语音识别和手写字符识别的任务。

缺点:不能精确地联系特征向量与输入图像中对应的目标区域,这种现象称为attention drift。

Muturaltraining:

  • 我们知道什么?什么字符,第几个?这个信息!

  • 哪个字符?找到那个字符,第几个?然后和样本里的顺序比

  • 第几个是啥字符?和对应位置的字符比

  • 所以样本中不能存在重复字符。

四、我们的实践

4.1 实践之路

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qV8f9rz1-1595920223336)(http://college.creditease.cn/resources/upload/image/20200728/1595918625180077019.png)]

  • 非单据:宽高比,白像素比例等

  • 旋转角整:前面讲过了,通过旋转模型,以及投影分布

  • 多单据:多张单据在一起,通过投影,阈值超参配置

  • 表格识别:采用mask-rcnn的方法,来找出大表边缘

  • 后处理:通过NLP纠错,后面会详细的讲

4.2 实践之路——旋转模型

#####大方向判断

第一版:

  • VGG做backbone,全连接,四分类

  • 样本:人工标注、增强

  • 正确率90%

第二版:

  • 做切割,256x256

  • 使用MSER找备选

  • 训练小图

  • 众数选出最可能方向

  • 正确率99.7%

微调

  • 每旋转1°做纵向投影

  • 方差最大的角度为微调角度

4.3 我们遇到的坑

  • 把crnn论文论文中的自定义cnn网络,换成resnet,但是resnet是缩小32倍,所以要拉长一些,到512。

  • 首先是:样本集是1000万 (50万张,置信度单字95%+)100万真实 +100万常用字(造) + 200万数字时间英文(造)+ 600万其他汉字(造)大概需要3-4天

  • 接下来进行训练:Resnet50,5-6天;Resize扩大,1024,=>512x8,256x8

过程中需要对greedy算法进行改进:

    =>beam_search/merge_repeated=True单独测是有问题,但是在置信度很高的情况下,两者差距很小,但是得到了极大的速度改进,28秒=>10秒,batch=128,size是512x32

  • 因为有crnn的prob,所以纠错就有的放矢,把怀疑的字,替换成某个字,

  • Prob有个细节,如果是挨着的字,“__ 我 我 __”,就取最大的prob,

  • 是根据一个字画相近度,对怀疑字替换的原则,是和原来识别字笔画最相近的,又是通过编辑距离。

4.4 我们的经验

1、 开发经验

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9OR7gNUX-1595920223344)(http://college.creditease.cn/resources/upload/image/20200728/1595918801795086816.png)]

2、生产经验

Tensorflow容器

  • 模型部署使用官方推荐的tensorflowserving,容器方式

  • 没有开启Batching,自己控制batch

  • 宿主机只需要显卡驱动•容器内包含CUDA、cuDNN,免去版本适配

服务容器:

  • 自己定义了Web容器基础镜像

  • 自动构建容器、动态编排

本文作者:宜信技术学院 刘创

宜信OCR技术探索与实践​|直播速记相关推荐

  1. 数据中台:宜信敏捷数据中台建设实践|分享实录

    2019独角兽企业重金招聘Python工程师标准>>> 内容来源:宜信技术学院第2期技术沙龙-线上直播|宜信敏捷数据中台建设实践 分享嘉宾:宜信数据中台平台团队负责人 卢山巍 导读: ...

  2. 宜信敏捷数据中台建设实践|分享实录

    内容来源:宜信技术学院第2期技术沙龙-线上直播|宜信敏捷数据中台建设实践 分享嘉宾:宜信数据中台平台团队负责人 卢山巍 导读:宜信于2017年推出了一系列大数据开源工具,包括大家熟悉的DBus.Wor ...

  3. 数据中台:宜信敏捷数据中台建设实践

    2019独角兽企业重金招聘Python工程师标准>>> [宜信技术沙龙]是由宜信技术学院主办的系列技术分享活动,活动包括线上和线下两种形式,每期技术沙龙都将邀请宜信及其他互联网公司的 ...

  4. 嘉宾PPT分享|泛娱乐领域音视频技术探索与实践

    2021·MCtalk 5G 技术大带宽.低延时.海量连接的特点,让短视频.直播购物.游戏.音视频社交等变得更加简单,同时,互联网的发展带来了泛娱乐领域的多样化体验,让大众对于 AI 以及音视频的体验 ...

  5. 视频通信关键技术探索及实践

    导读:2021年10月21日,「QCon 全球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发起了「AI 时代下的融合通信技术」专场,邀请到多位技术专家与大家一起分享相关技术话题. 我们 ...

  6. 【语音之家】AI产业沙龙—火山语音在AI视频译制方向的技术探索与实践

    由CCF语音对话与听觉专委会 .中国人工智能产业发展联盟(AIIA)评估组.火山语音.语音之家.希尔贝壳共同主办的[语音之家]AI产业沙龙-火山语音在AI视频译制方向的技术探索与实践,将于2022年1 ...

  7. 宜信敏捷数据中台建设实践

    目前"中台"的概念很火,包括数据中台.AI中台.业务中台.技术中台等.宜信技术学院第一期技术沙龙,井玉欣博士分享了宜信的AI中台,本期技术沙龙,由我来为大家分享<宜信敏捷数据 ...

  8. 【语音之家】AI产业沙龙—京东在AI语音方向的技术探索与实践

    由CCF语音对话与听觉专委会 .中国人工智能产业发展联盟(AIIA)评估组.京东科技.语音之家.希尔贝壳共同主办的[语音之家]AI产业沙龙-京东在AI语音方向的技术探索与实践,将于2022年11月29 ...

  9. 腾讯董志强:基建、研发、安全——云安全前沿技术探索和实践

    产业互联网飞速发展,各行各业加速"上云",相应的云上安全需求也正持续升温. 11月4日,2021腾讯数字生态大会·Techo Day技术峰会在武汉召开.Techo Day上,腾讯安 ...

最新文章

  1. 为什么基本类型可以调用方法——以字符串为例
  2. CompactExifLib:访问JPEG文件中的EXIF标签
  3. (转)Faster R-CNN的训练过程的理解
  4. 杭电 hdu 3343
  5. 用友NC删除会计科目的前后台操作
  6. C语言二级考试都是从题库抽取吗,c語言二級考試題庫_全國計算機等級考試二級C語言的考試題目都是從《C語言題庫》裡面抽取的題目嗎_淘題吧...
  7. Python 面向对象 —— 特殊函数(setattr、getattr、hasattr)
  8. android4.4.2 以太网代理,Android2.3.4系统添加Ethernet框架支持
  9. 应聘引擎程序需做哪些准备
  10. 读书笔记——戴尔·卡耐基(美)《人性的弱点》
  11. 自编码神经网络相似图片检索
  12. 用计算机模拟沉船,古希腊沉船的宝物 安提凯希拉被称为古老的计算器
  13. 禅道api调用(爬虫方式)
  14. PPTV多屏互动服务器可以看文档吗,电脑pptv播放器多屏互动服务器是什么?
  15. 自制蹭网工具(全套-修改电脑MAC地址、IP、获取局域网内别人的MAC和IP)
  16. Nginx安装配置(lua全模块、GEOIP、加入系统服务)---无坑安装
  17. 邮件内容以html形式,如何以邮件的形式发送HTML文件?
  18. AIX中经常使用的SMIT 的使用
  19. 关于“Multimedia Tools and Applications”sci-4投稿那些事
  20. ChatGPT写论文能发表吗?权威期刊回应了!

热门文章

  1. zip密码忘记怎么办?手把手教你几行Python代码来解决,操作简单有手就行
  2. RFID防伪设计(物联网工程课程设计)DAY1---开题报告
  3. 水利管理类毕业论文文献包含哪些?
  4. TP6 腾讯云发送短信验证码配置详解
  5. Notion,牛逼。
  6. k线图怎么看止损位置
  7. 第 14 章 指针三剑客之二:树
  8. CentOS Linux 8 - AppStream 错误
  9. 电脑重装系统后如何查看电脑内存信息的方法
  10. 芯片方案设计——充压枪打气泵方案开发