OCR字符识别

前言

    最简单的Lenet网络使用的是多层卷积+softmax,存在不足:输入图像是分割好的单个字符,更理想的形式是将分割与识别组合为端到端的网络。且使用softmax的机制意味着分割后子图的数量决定了输出字符串的长度。

    当前OCR的问题在于对倾斜文本、弯曲文本、二维文本的识别效果不佳,且在ASTER方法中,预测时会出现某个字识别错误后后面全错的问题。

CTC

CNN+RNN+CTC(CRNN+CTC)

CTC:联结主义时间分类

简单来说,CNN获取特征图,对特征图按列切分,输入BLSTM网路提取文字序列特征,BLSTM网路的输出尺寸为识别的最长字符串长度,使用空白字符blank机制(增加空字符‘-)、β变换(去冗余)及CTC损失,实现不定长文本的识别。

同一目标输出,可由多条不同路径经β变换获得

CTC的训练目的为输入图像x,输出目标字符串的概率最大p(l |x)

CTC借用了HMM的“向前—向后”(forward-backward)算法来计算 p(l |x),涉及前向递推概率和、反向递推概率和。目标输出CAT,某一条正确的路径,t时刻为A,则t-1时刻只能为C、A或-,t+1时刻只能为A、T、-,式中求积代表某条子路径的概率,求和代表多条子路径的概率和。

CTC损失为负的最大似然,预测结果正确率越高,损失越小。

前向推断时,可采取前缀搜索算法解码(输出序列的每一步中选择最可能的单词)或约束解码算法(束搜索:在每一步中,每个候选序列都被扩展为所有可能的后续步骤。每个候选步骤的分数通过概率相乘得到。选择具有最大概率的k个序列,并删去其他候选项,然后重复该过程直到序列结束。)

参考文献:

一文读懂CRNN+CTC文字识别 - 知乎

Attention

CNN+Seq2Seq+Attention

“在Seq2Seq结构中,编码器Encoder把所有的输入序列都编码成一个统一的语义向量Context,然后再由解码器Decoder解码。在解码器Decoder解码的过程中,不断地将前一个时刻的输出作为后一个时刻的输入,循环解码,直到输出停止符为止。”

复用编码器前几个隐藏层状态(类似残差网络的思想),提高信息利用率,当输出较长时更为明显,解决语义向量Context长度限制问题。由于w不同,形成了一种对编码器不同输入对应的注意力机制(权重越大注意力越强)。与前一个状态拼接在一起形成一个新的向量输入到隐藏层计算结果。

缺陷:前一时刻作为会作为后一个时刻的输入,因此,前一时刻的输出错误会导致下一时刻的输出错误,影响训练,为了解决这个问题,提出了Scheduled Sampling(即在训练中xt按照一定概率选择输入y(t-1)或t-1时刻对应的真实值,即标签.,既能加快训练速度,也能提高训练精度。

参考文献:

完全解析RNN, Seq2Seq, Attention注意力机制 - 知乎

ASTER

将字符区域矫正后识别,ASTER = 矫正网络 + Attention

Localization Network:检测控制点

Grid Generator:生成映射关系,传统方法,非DL

Sampler V:在原图中采样,生成矫正后图像

1058268-20180716011111146-1703456502.png

缺陷:矫正网络能力有限,若矫正不佳,影响图像质量,更不利于识别。

参考文献:

论文阅读(XiangBai——【PAMI2018】ASTER_An Attentional Scene Text Recognizer with Flexible Rectification )..._weixin_30457065的博客-CSDN博客

ACE

将图像分割为多个子区域后(子区域数量与特征图尺寸有关),识别子区域的字符。

ACE用了近似计算的思想,如标签为CATCAT,按照CTC的思想,输出目标为第一个字符为C,第二个为A。。。,按照CTC的思路,目标物2个C,2个A,2个T。

缺陷:特征图的尺寸限制了所能预测的字符串的长度。最长目标字符串长度越长,输入网络的图像需要越大,而对于中英文及标点而言,宽度不同,这个网络对于真实的文本,需要的输入非常大。

参考文献:

序列识别问题的聚合交叉熵损失函数(ACE损失函数)_CHEN666CONG的博客-CSDN博客

MASKTEXTSPOTTER


在整张图像上检测单个字符,并拼接起来

RPN:候选区域网络,生成候选文本区域
ROI Align: 提取候选区域特征
Fast R-CNN : 生成更准确的回归框
Mask branch:全局文本分割 +字符分割 

缺陷:

1)标注量剧增

2)对于英文和数字来说,类别只有26*2+10,如果用来提取中文,类别暴增,每个字符训练一个通道不太现实

3)CTW和totaltext数据集的图像旋转不会太厉害,对旋转角度超过90的估计不好处理

参考文献:

文本检测+识别之Mask TextSpotter_watersink的博客-CSDN博客_mask text

ABCNet 2020

        文本行上下两条曲线的检测,每条曲线使用一个三阶贝塞尔曲线拟合。提出特征对齐层—BezierAlign—来精确计算弯曲形状文本实例的卷积特征。BezierAlign可以将曲线文本转为直线,b站有个视频讲解。

PGNet 百度

      把文字检测和识别归为四个任务:文本中心线检测、文本边框偏移、文本方向偏移、文本字符分类map。和Mask-TextSpotter一样存在中文场景字符多的问题。

TrOCR 2021

        基于Transformer 编解码结构,ViT 初始化编码器提取图像特征(实验验证了Beit比Deit效果好),RoBERTa初始化解码器生成wordpiece序列(注意这里的输出不是字符级)。Transformer 解码器替代了 CTC 解码器。

beit>deit>vit

Vit:需要大型数据来进行训练

deit:在vit中class token基础上增加了一个distillation token进行蒸馏损失学习,用cnn作为teacher,用蒸馏学习的训练技巧训练deit

beit(Bidirectional Encoder representation from Image Transformers):基于MLM图像重建的预训练方法。图像有2种token,包括图像块patch及离散的视觉token(数字),对图像进行mask,编码器学习tokenize,基于词汇表获得mask处的token数字(即其视觉token表达)

来也科技 印章文本识别

来也智能文档处理系统中的印章识别实践-来也科技

      这篇文章比较了beam search 和greedy贪婪模式的区别,greedy模式快性能下降0.4%但速度快。采用yolov5+ TrOCR 准确率在68%左右,做的是2dOCR。考虑了两种阅读情况,从上到下阅读顺序,从右至左阅读顺序。设置了两种不同的特殊符号“$$”和“**”代表两种不同阅读顺序的换行符。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值