宜信OCR技术探索与实践|直播速记

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

宜信OCR技术探索与实践|完整视频回放


​分享实录html

1、OCR概述

1.1 OCR技术演进

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

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

  • 信号处理、频域分析以及各种算法:SIFT、HOG、HOUGH、Harris、Canny…都很赞。
  • 从2016年之后业界基本上都已经转向深度了,由于效果然的特别好。

1.2 OCR技术商业服务

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

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

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

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

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

2、咱们的业务场景

2.1 业务需求

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

知足业务是第一须要,不一样于大厂,对外服务API,要求大并发那么强,多样性品类完备,咱们更强调单品要作到尽可能达到业务要求,更强调定制化,能够分布走,业务上能够给反馈不断改进。函数

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

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

3、OCR算法详解

3.1 算法概述——分享原则

宜信OCR技术探索与实践​|直播速记
你们必定要本身弄细节,读代码、甚至本身动手撸,本身训练,调参,排错,才能有真正的体会和理解,只讲我认为每一个算法里面不太好理解,重点,以及容易忽略的点,跟同行一块儿交流,沟通。工具

一个模型,要全面深刻了解,须要:设计

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

  • 网络结构啥样?code

  • loss是啥?

  • 样本咋作?

  • 后处理干了啥

3.2 算法概述——三大板块

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

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

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

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

3.3 算法概述——检测算法

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

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

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

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

CTPN:找框的一个算法。

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

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

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

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

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

  • 后处理

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

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

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

  • 最后预测:scoremap,textbox,textrotation

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

  • 对应就能够出loss了。每一个点预测出来,加上角度,就是1个框,太多了框,因此要作LANMS(合并算法)的合并。为什么不直接用socremap,我认为是置信度不够,因此要再加上bbox来增强验证。

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

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

  • FPN,左面用resnet50。为什么是resnet50,缘由是效果不错,参数适中。

  • 论文里是6个尺度,一个不行么?我理解是完全分开不一样行,逐渐扩大,渐进尺度能够防止彼此交叉哈

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

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

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

网络输出

  • probabilitymap,表明像素点是文本的几率
  • thresholdmap,每一个像素点的阈值

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

label制做

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

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

3.4 算法概述——识别算法

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

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

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

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

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

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

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

Muturaltraining:

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

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

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

  • 因此样本中不能存在重复字符。

4、咱们的实践

4.1 实践之路

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

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

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

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

  • 多单据:多张单据在一块儿,经过投影,阈值超参配置

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

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

4.2 实践之路——旋转模型

大方向判断

初版:

  • VGG作backbone,全链接,四分类

  • 样本:人工标注、加强

  • 正确率90%

第二版:

  • 作切割,256x256

  • 使用MSER找备选

  • 训练小图

  • 众数选出最可能方向

  • 正确率99.7%

微调

  • 每旋转1°作纵向投影

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

4.3 咱们遇到的坑

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

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

  • 把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

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

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

  • 由于有crnn的prob,因此纠错就有的放矢,把怀疑的字,替换成某个字,

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

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

4.4 咱们的经验

一、 开发经验

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

二、生产经验

Tensorflow容器

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

  • 没有开启Batching,本身控制batch

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

服务容器:

  • 本身定义了Web容器基础镜像

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

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