1.3 文字识别
文字识别的目标是对定位好的文字区域进行识别,主要解决的是将一串文字图片转录为对应的字符的问题。深度学习和文字识别有很深的渊源。在深度学习还未成为热门研究对象之前,文字识别技术就一直在使用卷积神经网络和循环神经网络。比如在深度学习体系中占据重要地位的LeNet5网络就应用在OCR上,序列化模型LSTM、BLSTM和CTC Loss[15-16]也很早就被应用在手写英文的识别中。随着2012年深度学习大发展,各种新的深度学习技术也促进了文字识别技术的发展。
常用的文字识别框架主要有两个,即CNN+RNN+CTC[8][13]和CNN+Seq2Seq+Attention,如图1-8所示。
图1-8 CRNN和CNN+Seq2Seq+Attention方法
注意:CRN N[13](Convolutio nal Recurrent Neural Network)是白翔教授等提出的端到端方法,是目前主流的图文识别模型,可以识别比较长的文本序列,包含CNN特征提取层和BLSTM序列特征提取层,能够进行端到端的联合训练。同时,CRNN利用Bi-LSTM和CTC Loss学习文字的上下文关系,从而提升了文字的识别率,使得模型更加健壮。CNN+Seq2Seq+Attention相较于CRNN的区别是,其主要使用Seq2Seq+Attention,可以用于解决多对多的映射,同时利用最新的Attention技术,提升了文字的识别率。Attention在英文识别上的效果非常好,但是在中文识别上的效果不稳定且算力开销大,所以工业界还是使用CTC居多。
二者的结构差不多,前面的编码器CNN主要用于编码提取特征,后续的解码器RNN+CTC以及Seq2Seq+Attention有所区别。近年来,文字识别研究热点也慢慢朝更难的弯曲文本转移。针对弯曲文本,有的方法从矫正的角度处理,例如STN矫正方法[11]、TP S[12]变换找控制点方法等,还有的方法直接从2D的角度直接解析,例如2D的CTC、Attention等。除此之外,针对类别多的问题也有一些新的方法,比如张建树博士[14]提出的基于偏旁部首的方法。当然还有很多其他算法,在后续章节中笔者会对一些经典方法做更详细的介绍。大致梳理的文字识别方法分布如图1-9所示。
图1-9 文字识别方法