Press "Enter" to skip to content

OCR – 关于OCR技术体系的发展的了解

一、光学字符识别(OCR)

 

光学字符识别(Optical Character Recognition, OCR)这一概念,最早由德国科学家Tausheck在1929年提出。

 

汉字识别最早是由IBM公司的工程师Casey与Nagy实现的,他们在1966年发表了首篇汉字识别相关的文章,采用的是模板匹配的方式,可以识别1000个印刷体汉字。与此同时,东芝、三洋、松下、富士通等公司也各自在研制印刷体的识别系统。这些系统大多使用基于K-L数字变换的匹配方案,需要大量的专业硬件设备,体积庞大,造价昂贵,所以使用相对有限。

 

到了20世纪90年代,LeNet5网络的出现开创了深度学习的新纪元,并且在OCR的应用中达到了商用的水平,之后由于种种原因,沉寂了10年。直到2012年,AlexNet网络的出现使得视觉相关的技术进入爆发期,加之此后识别网络和物体检测框架的革新也间接地促进了OCR技术的发展。文字检测领域借鉴了物体检测的经典网络Faster RCNN系列、Yolo系列,发展出一系列文字专用检测技术,如CTPN、TextBox系列、DenseBox等。文字识别领域借鉴了识别网络和序列化网络,演变出以CNN+RNN+CTC以及CNN+RNN+Attention为主流的识别方式。此后,人们逐渐摒弃了传统的字符切割识别方式。

 

OCR相关着名的会议有:ICDAR(文档分析与识别国际会议)、DAS(文档分析系统国际研讨会)、DPR(文档识别与检索国际会议)、ICPR(模式识别国际会议)、ICFHR(手写识别国际前沿会议)等。除了相关性比较高的、通用类别的视觉三大会议——CVPR(国际计算机视觉与模式识别会议)、ECCV(欧洲计算机视觉国际会议)、ICCV(国际计算机视觉大会),相关的人工智能会议如AAAI(人工智能促进协会)等都经常发表一些高质量的OCR领域的论文。

 

OCR技术可以隐约分为两个发展阶段:传统OCR、基于深度学习的OCR。

 

OCR密切相关的专有名词——DAR和STR。其中,DAR(Document Analysis and Recognition,文档图像分析和识别)是文档图像处理领域的一个宽泛的概念;STR(Scene Text Recognition,场景文字识别)主要针对自然场景中文字的检测与识别,是OCR的一个重要分支。

 

二、传统OCR方法概述

 

切分到基本单元的方法在深度学习之前的几十年是通用方法。

 

 

在实际操作中,还会增加一些预处理。

 

 

除了上面所说比较通用的流程外,传统的OCR方法也在随着图像处理和模式识别的发展,演变出很多方法。例如,基于传统的手工设计特征(Handcraft Features),包括基于连通域的方式、投影分析,以及基于HOG的检测框描述。例如,MSER(Maximally Stable Extremal Regions)方法是首先得到字符候选集,并且将文字候选区域看作连通图的顶点,然后将文本行的寻找过程视为Clustering过程(因为来自相通文本行的文本通常具有相似性),之后的识别则是基于统计机器学习方法(Adaboost、SVM等),如下图。

 

 

三、基于深度学习OCR方法概述

 

相较而言,以往OCR的概念更多的是限定为针对文档的识别,之后OCR的概念被逐步拓宽为通用的文字图像识别,主要是自然场景文字图像识别。自然场景图像的信息更加丰富,鉴于其极大的多样性和复杂性,自然场景图像中文字检测和识别的难度大于扫描图像中的文字。比如说,文字可能来自不同的语言,在每一种语言下,可能还包含多种字母。每种字母又可以有不同的大小、字体、颜色、亮度、对比度等。同时,文字的排列和对齐方式也不尽相同,横向、竖向、弯曲的情况都有可能。图像的非文字区域可能有与文字区域相似的纹理,比如窗户、树叶、栅栏、砖墙等。因为拍摄角度的问题,图像文字还存在形变问题(透视变换、仿射变换等)。此外,光照、低对比度、模糊断裂、残缺文字等也提升了文本检测和识别的难度。

 

在一些背景稍微复杂或者变体文字的情况下,传统方法基本会失效,模型的泛化性偏弱。版面分析(连通域方式)以及投影变换(行切分)的方式只能限定处理相对简单的场景,一旦场景变为自然场景(例如,街拍、复杂的广告、菜单等),基本上就会失效。

 

基于深度学习的OCR方法将一些繁杂的流程分成两个主要步骤,一个是文本检测(主要用于定位文本的位置),另一个是文本识别(主要用于识别文本的具体内容)。

 

 

四、文字检测

 

在深度学习方法尚未占据主导地位之前,文字检测主要还是以手动提取特征为主,比较经典的方法有之前提到的SWT、MSER、HOG等。传统的方式是先对图像设置特征金字塔,然后使用滑动窗口进行扫描,之后进入手动提取特征阶段(SWT、MSER、HOG等),再通过滑动窗口提取分类,最后汇总为文本区域。

 

深度学习中物体检测领域的框架体系,要包含:基于候选框(Anchor)的文本检测、基于语义分割(Segmentation)的文本检测,以及基于两种方法的混合方法(Hybrid)。

 

 

五、文字识别

 

文字识别的目标是对定位好的文字区域进行识别,主要解决的是将一串文字图片转录为对应的字符的问题。深度学习和文字识别有很深的渊源。在深度学习还未成为热门研究对象之前,文字识别技术就一直在使用卷积神经网络和循环神经网络。比如在深度学习体系中占据重要地位的LeNet5网络就应用在OCR上,序列化模型LSTM、BLSTM和CTC Loss也很早就被应用在手写英文的识别中。随着2012年深度学习大发展,各种新的深度学习技术也促进了文字识别技术的发展。

 

常用的文字识别框架主要有两个,即CNN+RNN+CTC和CNN+Seq2Seq+Attention,如下图所示。

 

 

注意:CRNN(Convolutio nal Recurrent Neural Network)是端到端方法,是目前主流的图文识别模型,可以识别比较长的文本序列,包含CNN特征提取层和BLSTM序列特征提取层,能够进行端到端的联合训练。同时,CRNN利用Bi-LSTM和CTC Loss学习文字的上下文关系,从而提升了文字的识别率,使得模型更加健壮。CNN+Seq2Seq+Attention相较于CRNN的区别是,其主要使用Seq2Seq+Attention,可以用于解决多对多的映射,同时利用最新的Attention技术,提升了文字的识别率。Attention在英文识别上的效果非常好,但是在中文识别上的效果不稳定且算力开销大,所以工业界还是使用CTC居多。

 

最近开源比较火的EasyOCR采用的是None-VGG-BiLSTM-CTC网络架构。BiLSTM是一种循环神经网络,主要用于自然语言处理。 与标准 LSTM 不同,输入双向流动,并且能够利用来自双方的信息。

 

二个主流框架的结构差不多,前面的编码器CNN主要用于编码提取特征,后续的解码器RNN+CTC以及Seq2Seq+Attention有所区别。近年来,文字识别研究热点也慢慢朝更难的弯曲文本转移。针对弯曲文本,有的方法从矫正的角度处理,例如STN矫正方法、TPS变换找控制点方法等,还有的方法直接从2D的角度直接解析,例如2D的CTC、Attention等。除此之外,针对类别多的问题也有一些新的方法,比如基于偏旁部首的方法。大致的文字识别方法分布如下图所示。

 

 

六、产业应用现状

 

OCR技术作为机器视觉领域一个非常重要的研究方向,涉及的应用领域多种多样。各应用领域已经出现了非常多的产品。

 

卡片证件类识别:身份证识别、银行卡识别、驾驶证识别、行驶证识别、港澳通行证识别、护照识别、户口簿识别、营业执照识别等。

 

票据类识别:增值税发票识别、支票识别、承兑汇票识别、银行票据识别、营业执照识别、物流快递单识别等。

 

文字信息结构化视频类识别:主要有字幕识别和文字跟踪等。

 

其他识别:二维码识别、一维码识别、车牌识别、数学公式识别、物理化学符号识别、音乐符号识别、工程图识别、流程图识别、古迹文献识别、手写输入识别等。

 

除此之外,还有通用自然场景下的文字识别、菜单识别、横幅检测识别、图章检测识别、广告类图文识别等围绕审核相关的业务应用。

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注