✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。
💙个人主页: GoAI |💚 公众号: GoAI的学习小屋 | 💛交流群: 704932595 |💜个人简介 : 掘金签约作者、百度飞桨PPDE、领航团团长、开源特训营导师、CSDN、阿里云社区人工智能领域博客专家、新星计划计算机视觉方向导师等,专注大数据与人工智能知识分享。
💻文章目录
《深入浅出OCR》前言知识(一):机器学习基础总结 (✨文末机器学习总结导图)
《深入浅出OCR》前言知识(二):深度学习基础总结 (✨文末深度学习总结导图)
《深入浅出OCR》第四章:OCR文字识别 (本篇)
👨💻本篇导读:
在上一章我们介绍到OCR文字检测,
本篇为 【《深入浅出OCR》第四章:OCR文字识别】,主要对深度学习OCR文字识别方法进行介绍,本人将从经典算法结构、代码、论文解读等角度展开,配合作者总结的思维导图,深入浅出OCR知识。
《深入浅出OCR》第四章:OCR文字识别
一、OCR文字识别概念
光学字符识别(OCR)是一项在计算机视觉中非常重要的应用,它的任务是识别出图片中的文字内容。一般来说,输入是通过文本检测获得的文本框,然后将图像中的文字区域截取出来。OCR文字识别的作用非常广泛,它不仅可以将大量非结构化数据转换为结构化数据,也可以将图片中的文本转换为可编辑的文本。它在各种场景中都有广泛的应用,例如文字识别、文档识别、车牌识别等场景。
二、OCR场景分类
首先,本人总结影响文字识别效果的因素有 1.文字的应用场景、2.文字的形成方式、3.文字的字体。 其次,依据不同OCR场景,这里我将其分为三类,分别为DAR、STR、HCR。
- DAR(Document Analysis & Recognition)是针对文档图像分析与识别。如在我们日常生活中较为常见打印文件、票据等。同时除文字外,还以有表格、柱状图、饼状图、印章等场景。
- STR (Scene Text Recognition)为场景文字检测与识别,是我们看到的在自然场景当中的文字,例如街景,实拍的商品标签等。
- HCR(Online Handwritten Character Recognition)即在线文字识别,如常见的手写的输入法、手写签名等。
场景文字检测与识别介绍:
场景文本识别的目标是从自然图像中提取出文字,并将其转化为数字字符序列。该序列传达了对场景理解至关重要的高级语义,其识别重点会偏向于带背景的文字图片。
同时,目前的很多文字识别都带有文本变形,字体,遮挡,混乱的背景,因此,复杂场景文字识别任务具有极强的挑战性,
场景文本识别主要挑战性因素如下:
1.复杂的背景及与文本类似的背景
2.不规则的字体、大小与方向
3.因噪声干扰而失真,例如照明不均匀,分辨率低和运动模糊。
4.随机捕捉的文本难以识别字符和预测文本字符串
场景检测与识别经典论文
手写体识别方法
三、OCR文字识别发展趋势
四、OCR文字识别导图:
OCR在不同识别场景分为多种方式,大致如下:
- 按方法可分为传统OCR和深度学习OCR。
- 按数据集可分为规则文本识别(ctc、attention seq2seq)和不规则文本识别(校正、attention、分割、transformer等)。
注:下图目前仅列举部分算法,并非所有识别算法,最新算法介绍请看下面对应介绍。
五、深度学习OCR流程
深度学习中卷积神经网络在OCR中发挥重要作用,通过训练大量样本来识别和理解不同字体和大小的字符,从而实现高精度的光学字符识别。本章主要对深度学习OCR技术展开介绍,OCR流程大致如下:
从上图文字识别流程可以看出,文本识别的主流算法有两种,分别是基于 CTC (Conectionist Temporal Classification) 的算法和 Sequence2Sequence 算法,区别主要在解码阶段。
(1)基于 CTC 的算法是将编码产生的序列接入 CTC 进行解码;
(2)基于 Sequence2Sequence 的方法则是把序列接入循环神经网络(Recurrent Neural Network, RNN)模块进行循环解码,两种方式都验证有效也是主流的两大做法。
同时,除规则方法外,针对不规则文本识别的方法也逐渐发展完善,其可以分为基于校正纠错的方法、基于分割的方法和基于注意力的编解码器方法。
- 基于校正纠错的方法
基于校正方法是一种在进行文本识别之前对不规则的图像进行纠正的方法。它通过一系列基于可学习的TPS(Thin-Plate Spline)变换的技术,如STN(Spatial Transformer Network),RARE(Recognize-And-REctify),ASTER(Attentional Scene Text Recognizer),STAR-NET(Spatial Transformer-based Attention Network for Scene Text Recognition),S-cRN(Sequence-transformer based Cascade Regression Network)等,来实现对图像的校正。
- 基于分割的方法
基于分割方法是一种用于解决不规则文本布局问题的技术。它通过将每个字符进行单独的分割来避免不规则布局带来的困扰。例如使用全卷积网络来检测和识别每个单独的字符,并最后将它们组合在一起。然而,获取字符级别的标注并不容易,这就导致了一个问题。为了解决这个问题,可以采用半监督学习的方法。首先,在合成数据集上进行字符检测的学习,然后将学习到的知识迁移到真实数据集上。
- 基于注意力的编解码器方法
现有多数不规则文本识别方法都使用具有注意机制的encode-decode编解码器框架。同时,存在许多变体,比如FAN引入了一个焦点网络来抑制注意力漂移问题。SAR使用2D attention机制。同时还有引入transformer结构来捕获长时上下文,如DAN采用解耦注意力来缓解对齐漂移问题。
六、深度学习OCR算法分类
(1)规则文本识别方法
规则文本识别的主要深度学习算法通常分为基于CTC和Sequence2Sequence的方法。这两种方法的区别在于解码阶段的处理方式。基于CTC的算法通过将编码生成的序列输入CTC模块进行解码。而Sequence2Sequence算法则将序列输入循环神经网络模块进行逐步解码。这两种方法的具体对比可以参考提供的图示。
1.基于CTC代表算法
CTC学习参考:CTC Algorithm :Training the Network(CTC算法详解之训练篇)
连接时序分类(CTC)机制通常用于在预测阶段将卷积神经网络(CNN)或循环神经网络(RNN)输出的特征转换为字符串序列。在文本识别中,CTC的应用可以解决时序类文本的对齐问题。这意味着它确保了预测的文本序列与实际的文本序列在顺序和长度上保持一致。
这里作者总结比较经典的文字识别算法,如下所示:
CRNN
CRNN(Convolutional Recurrent Neural Network)是主流的文本识别模型之一,采用CNN+双向LSTM+CTC框架,可以识别不定长文本序列。如下图所示,主要网络结构包含三个部分,从下到上依次为:
1.卷积层: 使用CNN从输入图像中提取特征序列;
2.循环层: 用BiLSTM将特征向量进行融合以提取字符序列的上下文特征,然后得到每列特征的概率分布;
3.转录层: 使用CTC把从BiLSTM获取的标签分布通过去重整合等操作转换成最终的识别结果。
参考学习: zhuanlan.zhihu.com/p/266556888
CTC :blog.csdn.net/u011622208/…
STN-OCR
STN-OCR是一种集成图像文本检测和识别的可学习模型,实现了端到端的文本处理。该模型的架构如图所示,检测部分使用了一个称为空间变换网络(STN)的组件,用于对原始输入图像进行仿射变换。利用这个空间变换网络,可以对检测到的多个文本块进行旋转、缩放和倾斜等图形矫正操作,从而提高后续文本识别的准确性。
在训练方面,它采用了半监督学习的方法,只需要提供文本内容的标注,而不需要提供文本定位的信息。作者也指出,从头开始训练模型的收敛速度较慢,因此建议逐步增加训练的难度。STN-OCR还提供了工程源代码和预训练模型的开放,方便用户进行使用和扩展。
简而言之,STN-OCR是一种图像文本处理模型,通过空间变换网络进行文本检测和校正,能够以较高的准确度识别不同角度和形状的文本。
ACE
论文地址: Aggregation Cross-Entropy for Sequence Recognition
ACE loss的出发点是觉得计算CTC loss的过程计算消耗大, 提出了一种简单的近似算法来优化后验概率矩阵来替代CTC loss。ACE算法只要计算单词出现频率, 与标签的真实频率求交叉熵损失, 通过这个去优化概率矩阵. 并且这样的算法, 可以直接用于2D概率矩阵优化, 2D概率矩阵的优点和2D-CTC类似, 更适合含有背景的不规则图像。
ACE与基于CTC和Attention识别方法对比:
MORAN
论文地址:A Multi-Object Rectified Attention Network for Scene Text Recognition
Moran的结构结合两个网络。第一个检测网络MORN在第二个检测网络ASRN读取文本之前对文本框进行了修正(与Textsnake一样,但并非一切的检测网络都是这样做的)。
- MORN首要处理输入图画(即文本框),用CNN对图画进行校对。为此,它的输出图为图画的每个对应区域指定在x和y方向(即2个输出映射)上应该移动的像素数,以拉直文本。
- ASRN运用注意力RNN来解码文本。天然图画中大量的噪声经常误导网络聚集在图画的过错部分。ASRN经过一种称为分部拾取的正则化办法克服了这个问题。它由随机混合附近输入的注意力权重的分数组成。
MORAN的一个显著特点是它只需求弱标签,即输出文本。事实上,网络是用单一的损失函数端到端练习的。经过向后传达解码过错,MORN能够学会纠正图画。
SRN
Towards Accurate Scene Text Recognition with Semantic Reasoning Networks
简介:
由于基于循环神经网络(RNN)的方法存在一些问题,比如解码方式的时间相关性以及语义上下文的单向串行传输,这些问题大大限制了语义信息的利用和计算效率。为了解决这些问题,提出了一种新颖的端到端可训练框架,叫做语义推理网络(SRN),用于精确地识别场景文本。这个框架引入了全局语义推理模块(GSRM),通过多路并行传播来捕获全局语义上下文。最新的七个公共基准测试结果(包括常规文本、不规则文本和非拉丁长文本)验证了这种方法的有效性和鲁棒性。此外,与基于RNN的方法相比,SRN的速度也更快,证明了它在实际应用中的价值。
详细介绍:
SRN模型包括以下4个模块:骨干网络、并行视觉注意模块(PVAM)、全局语义推理模块(GSRM)、视觉-语义融合解码器(VSFD)。 首先使用主干网络提取二维特征V。然后,使用PVAM生成N个对齐的一维特征G,其中每个特征对应于文本中的一个字符,并捕获对齐的视觉信息。然后将这N个1-d特征G输入GSRM以获取语义信息S,最后将对齐的视觉特征G和语义信息S融合,用VSFD来预测N个字符。.对于小于N的文本字符串,将填充“EOS”。
骨干网络:使用ResNet50+FPN。
PVAM:PVAM输入为二维特征,通过注意力机制,为每个字符输出一个特征图。
GSRM:结构由两个关键部分组成:视觉到语义的嵌入块和语义推理块。GSRM遵循了多路并行传输的思想,从而克服了单向语义上下文传递的缺点。使用与时间无关的e‘来代替e,这样可以进行多路并行传输,e’由视觉到语义的嵌入块生成,如下图所示。
VSFD:图像特征G和语义特征S属于不同的领域,它们在不同情况下对最终序列识别的权重应该是不同的。VSFD使用可训练的单元,利用权重来平衡在VSFD中来自不同领域的特征的贡献。
实验证明,与基于RNN的方法相比,SRN的速度具有明显的优势,证明了其在实际使用中的价值。SRN支持弯曲文本识别,同时也支持中文识别。
参考学习:zhuanlan.zhihu.com/p/138784723
GTC:
论文地址: GTC: Guided Training of CTC Towards Efficient and Accurate Scene Text Recognition
主要思路: 将attention和ctc两种方式进行融合,利用attention对ctc的对齐进行监督和引导,同时,在ctc分支中加入GCN图卷积神经网络提高模型表达能力。
简介:为了克服CTC的局限性,我们必须两个动机:(1)学习更好的特征表示从更有效的引导和(2)建立label和局部特征的联系。
模型结构
总结
- 利用attention分支对矫正网络和特征提取网络进行一定的监督作用
- 在crrn分支中加入GCN,加强序列特征局部的学习。
SVTR
论文地址: SVTR: Scene Text Recognition with a Single Visual Model
参考代码: github.com/PaddlePaddl…
SVTR是一种在2022年提出的端到端文字识别模型,它通过一个单一的视觉模型来同时完成特征提取和文本转录两个任务。这证实了单一的视觉模型在文字识别任务中比使用视觉-语言模型更有效,并且能够保证更快的推理速度。这种改进的模型版本也被应用于PaddleOCRV3中,进一步提升了文字识别的性能和效率。
- 特征提取模块:采用单视觉模型(类似ViT),基于patch-wise image tokenization框架,引入Mixing Block获取多粒度特征
SVTR的总体架构如上图所示,主要由三阶段图像高度逐级递减的的Mixing Block组成。首先,输入一个尺寸为 H∗W∗3 的图像,通过一个Patch Embedding打成 H4∗W4 的patches,这里的Patch Embedding在ViT的基础上进行了改进,通过两个Conv+BN的操作来获得递进式的一种overlapping的效果。
参考学习:zhuanlan.zhihu.com/p/530670563
2.基于(seqence2sequence结构)
Sequence2Sequence 算法主要采用编码-解码网络结构,该模型由编码器Encoder 把所有的输入序列都编码成一个统一的语义向量,解码器 Decoder 解码的过程中,不断将前一个时刻的输出作为后一个时刻的输入。其主要输入图像经过卷积神经网络,用循环神经网络进行序列处理。
总结:以上两种算法在规则文本上都有很不错的效果,但由于网络设计的局限性,这类方法很难解决弯曲和旋转的不规则文本识别任务。为了解决这类问题,部分算法研究人员在以上两类算法的基础上提出一系列改进算法,提出不规则文本是被方法。
(2)不规则文本识别方法
不规则文本指的是文本往往不在水平位置,且存在弯曲、遮挡、模糊等问题。因此,不规则文本场景识别具有很大的挑战性,也是目前文本识别领域的主要研究方
向。不规则文本识别算法可以被分为基于 Attention 的方法、基于分割的方法及基于Transformer 的方法。
3. 基于Attention注意力机制方法
基于Attention的方法中,编码器的输出由一个不定长序列组成。通常会与循环神经网络(RNN)结合作为预测模块。这种方法通过给目标数据和相关数据赋予更大的权重,使得解码器能够将注意力更集中地放在目标数据上,并获得更多的细节信息。同时,它能够学习到对较长的输入序列进行合理的向量表示。
以下为参考开源资料的基于Attention注意力机制方法总结:
RARE
论文地址:Robust Scene Text Recognition with Automatic Rectification
- 主要结构为:空间变换网络STN和Seq2seq网络字组成,其中,STN网络用于校正弯曲、透射变换的文本,可以处理不规则文本。
RARE(Robust text renognizer with Automatic Rectification)在识别变形的图像文本时效果很好。网络流程如下图所示,针对输入图像,模型首先对其进行空间变换网络处理达到矫正的目的,随后将矫正过的图像送入序列识别网络中得到文本预测结果。
其中,空间变换网络结构如下图所示。空间变换网络是一个包含定位网络、网格生成器和采样器的结构,用于动态生成空间变换网格,并在原始图像中采样获得一个矩形的文本图像。经过训练后,它可以根据输入图像的特征图自动生成适应性的变换网格。在RARE中,支持一种称为TPS(thin-plate splines)的空间变换方法,它可以比较准确地识别透视变换过的文本,包括弯曲的文本。
ASTER
RobustScanner
代码参考:aistudio.baidu.com/aistudio/pr…
RobRobstScanner是一个具有注意力机制的编解码器框架,在研究了编码器-解码器解码方式后发现,在解码过程中除了依赖语义信息外,还需要依赖位置信息。现有的方法大多过于依赖语义信息,在处理没有或者弱语义信息的文本时效果不佳,会出现严重的注意力偏移问题。因此,作者认为在处理缺乏语义信息的文本时,增加位置信息可以提高字符定位的准确性。该论文通过规则和不规则文本识别基准测试,取得了当时最先进的结果,并且在无上下文基准测试中没有显著性能下降,证明了其在上下文和无上下文应用场景中的鲁棒性。其网络结构如下图所示。
SAR
SAR是一个seq2seq模型, 不同于R^2AM直接用CNN抽取图像的一维特征, SAR先用CNN抽取一个feature map, 再将feature map一列一列送入LSTM encoder,可以看作引入了文本横向阅读的先验知识, 并且feature map保留了图像的空间信息。注意力更合理,最终得到一维特征再进行解码, 解码过程依靠原来的feature map做attention。
MASTER
论文地址:Multi-Aspect Non-local Network for Scene Text Recognition
简介:
-
提出Global Context(GC)block,Multi-Aspect GCAttention两个模块。
-
推理阶段提出基于缓存(memery-cache)的解码策略对解码过程加速。
-
在正常文本,弯曲文本上都取得了最好的效果。
从上述结构网络整体结构可以看出,整体分为Encoding部分,Decoder部分。
-
Encoding部分由4个block的残差模块组成。网络输入图片大小为481601(实际图片的狂傲比大于160/48,就直接resize为48160,其他情况,将高度resize为48,等比例缩放宽度,然后再补边),Encoding部分输出特征为640*512。
-
transformer的解码与lstm的解码类似,用encoder部分的输出计算注意力权重,并对输入向量重新分配,获得当前时刻的输入。在解码阶段首先用multi-head attention计算当前时刻的输入编码,得到tmp_feature,相当于LSTM中将时刻t-1的输出输入到模型中,随后获取encoder部分的输出,分别作为Key和quary,计算获得注意力权重,并利用该权重对tmp_feature(value)重新分配,得到当前时刻的特征结果。
网络参数配置如下:
参考链接:文本识别之MASTER
4.基于分割方法
Mask TextSpotter
TextScanner
Reading Characters in Order for Robust Scene Text Recognition
这篇文章采用分割的思路,利用像素级别和多通道的分割图来预测类别,位置和顺序。然后利用rnn进行解码。
5.基于Transformers
Text Spotting Transformers
文章地址:Text Spotting Transformers CVPR2022
Text Spotting Transformers是受DETR系列模型启发提出的,TESTR由一个编码器和两个解码器构成,用于文本框控制点回归和字符识别,其是一个端到端模型,避免许多现有文本检测方法中所需的启发式设计和中间阶段。
在TESTR中主要有三个创新点:
-
将Multi-Scale Deformable Attention引入text spotting,使模型不必使用FPN结构就能捕捉多尺度的信息,而且Deformable Attention使得模型并不需要关注全图,训练速度更快;
-
引入组合query的思想,每个文本实例对应一个控制点query,一个字符query,控制点query中包含N个subquery用于预测N个控制点,字符query中包含M个subquery用于预测M个字符,同时使用factorized self-attention融合组内和组间信息,能够降低模型复杂度;
-
引入由粗到精的边界框回归过程,首先生成粗的矩形框,然后将矩形框的顶点当作Multi-Scale Deformable Attention的参考点,用bounding box的信息指导多角度的检测,最终预测出控制点的坐标。
参考:zhuanlan.zhihu.com/p/561376987
七、文本识别论文代码下载:
八、OCR识别论文总结:
本篇文章最后,免费分享博主本人参考开源资料整理的OCR相关论文汇总,将其按年份、数据集、所属方法及代码等信息进行全面分类总结,最近几年论文正在整理中,欢迎大家持续关注和学习交流!另外,文中如有错误,欢迎指正!
九、总结
本篇为 【《深入浅出OCR》第四章:OCR文字识别】,主要对深度学习OCR文字识别方法进行介绍,本人将从经典算法结构、代码、论文解读等角度展开,配合作者总结的思维导图,深入浅出OCR知识,下一篇将对OCR文字识别技术进行实战讲解。