OCR包括text detector和识别两个部分。文字检测又分基于经验的和深度学习的(我们这里探讨后者)。识别部分分单个字单个字识别和一连串文字的识别,它们各有优缺点,我们也讨论后者。
文字检测算法:
深度卷积神经网络是一个多层级网络结构,浅层特征图具有高分辨率及小感受野,深层特征图具有低分辨率及大感受野。具有小感受野的浅层特征点对于小目标比较敏感,适合于小目标检测,但是浅层特征具有较少的语义信息,与深层特征相比具有较弱的辨别力,导致小文本定位的性能较差。另一方面,场景文字总是具有夸张的长宽比(例如一个很长的英文单词或者一条中文长句)以及旋转角度(例如基于美学考虑),通用物体检测框架如Faster RCNN和SSD是无法回归较大长宽比的矩形和旋转矩形。
围绕上面描述的两个问题,主要做了以下事情:
-
为了处理不同尺度的文本,借鉴特征金字塔网络思路,将具有较强判别能力的深层特征与浅层特征相结合,实现在各个层面都具有丰富语义的特征金字塔。另外,当较深层中的小对象丢失时,特征金字塔网络仍可能无法检测到小对象,深层的上下文信息无法增强浅层特征。我们额外扩大了深层的特征图,以更准确地识别小文本。
-
我们不直接回归文本行,而是将文本行分解为较小的局部可检测的文字片段,并通过深度卷积网络进行学习,最后将所有文字片段连接起来生成最终的文本行。
现有方法
最新的基于深度神经网络的文本定位算法大致可以分为两大类:(1)基于分割的文本定位;(2)基于回归的文本定位。
(1) 基于分割的文本定位
当前基于分割的文本定位方法大都受到完全卷积网络(FCN [2])的启发。全卷积网络(FCN, fully convolutional network), 是去除了全连接(fc)层的基础网络,最初是用于实现语义分割任务。由于FCN网络最后一层特征图的像素分辨率较高,而图文识别任务中需要依赖清晰的文字笔画来区分不同字符(特别是汉字),所以FCN网络很适合用来提取文本特征。当FCN被用于图文识别任务时,最后一层特征图中每个像素将被分成文字行(前景)和非文字行(背景)两个类别。
(2) 基于回归的文本定位
Textboxes [3] 是经典的也是最常用的基于回归的文本定位方法,它基于SSD框架,训练方式是端到端,运行速度也较快。为了适应文本行细长型特点,特征层也用长条形卷积核代替了其他模型中常见的正方形卷积核。为了防止漏检文本行,还在垂直方向增加了候选框数量。为了检测大小不同的字符块,在多个尺度的特征图上并行预测文本框, 然后对预测结果做NMS过滤。
美团的实现方法:ICDAR 2019论文:自然场景文字定位技术详解 - 美团技术团队
CTPN:在FasterRCNN基础上,通过宽度相等,高度不等的方式来确定图片中文字的位置
DBNET :DBNet论文详解_Michael’s Blog-CSDN博客_db net
YOLO:
Mask RCNN:
FCN:fully convolutional network全卷积网络 基于分割的文本定位
Textboxes: 基于回归的文本定位
文字识别算法:
CRNN:对宽度大于高度的文字图片进行卷积特征提取,然后进行BiLSTM和CTC提取文字
ASTER:包括 文字矫正部分(倾斜或弯曲的文字可以进行矫正),和识别部分(基于seq2seq的attention机制做的)
HGA-STR更接近原有的Transformer的结构,使用了和Transformer类似的解码结构,而SRN则是使用了Transformer unit进行特征提取,并采用该文作者提出的并行解码器,整个模型拥有更好的可并行性。