OCR技术简介

光学字符识别(Optical Character Recognition, OCR)是指对文本资料的图像文件进行分析识别处理,获取文字及版面信息的过程。亦即将图像中的文字进行识别,并以文本的形式返回。

OCR的应用场景

根据识别场景,可大致将OCR分为识别特定场景的专用OCR和识别多种场景的通用OCR。比如现今方兴未艾的证件识别和车牌识别就是专用OCR的典型实例。通用OCR可以用于更复杂的场景,也具有更大的应用潜力。但由于通用图片的场景不固定,文字布局多样,因此难度更高。根据所识别图片的内容,可将场景分为清晰且具有固定模式的简单场景和更为复杂的自然场景。自然场景文本识别的难度极高,原因包括:图片背景极为丰富,经常面临低亮度、低对比度、光照不均、透视变形和残缺遮挡等问题,而且文本的布局可能存在扭曲、褶皱、换向等问题,其中的文字也可能字体多样、字号字重颜色不一的问题。因此自然场景中的文字识别技术,也经常被单列为场景文字识别技术(Scene Text Recognition, STR),相关内容可回顾往期SigAI的文章。

OCR的技术路线

典型的OCR的技术路线如下图所示

其中影响识别准确率的技术瓶颈是文字检测和文本识别,而这两部分也是OCR技术的重中之重。

在传统OCR技术中,图像预处理通常是针对图像的成像问题进行修正。常见的预处理过程包括:几何变换(透视、扭曲、旋转等)、畸变校正、去除模糊、图像增强和光线校正等

文字检测即检测文本的所在位置和范围及其布局。通常也包括版面分析和文字行检测等。文字检测主要解决的问题是哪里有文字,文字的范围有多大。

文本识别是在文本检测的基础上,对文本内容进行识别,将图像中的文本信息转化为文本信息。文字识别主要解决的问题是每个文字是什么。识别出的文本通常需要再次核对以保证其正确性。文本校正也被认为属于这一环节。而其中当识别的内容是由词库中的词汇组成时,我们称作有词典识别(Lexicon-based),反之称作无词典识别(Lexicon-free)

图像预处理

传统OCR基于数字图像处理和传统机器学习等方法对图像进行处理和特征提取。常用的二值化处理有利于增强简单场景的文本信息,但对于复杂背景二值化的收效甚微。

传统方法上采用HoG对图像进行特征提取,然而HoG对于图像模糊、扭曲等问题鲁棒性很差,对于复杂场景泛化能力不佳。由于深度学习的飞速发展,现在普遍使用基于CNN的神经网络作为特征提取手段。得益于CNN强大的学习能力,配合大量的数据可以增强特征提取的鲁棒性,面临模糊、扭曲、畸变、复杂背景和光线不清等图像问题均可以表现良好的鲁棒性。[1]

基于CNN(LeNet-5)的文字识别[1]

文字检测

对于文字检测任务,很自然地可以想到套用图像检测的方法来框选出图像中的文本区域。常见的一些物体检测方法如下:

Faster R-CNN Faster R-CNN采用辅助生成样本的RPN(Region Proposal Networks)网络,将算法结构分为两个部分,先由RPN 网络判断候选框是否为目标,再经分类定位的多任务损失判断目标类型,整个网络流程都能共享卷积神经网络提取的的特征信息,节约计算成本,且解决Fast R-CNN 算法生成正负样本候选框速度慢的问题,同时避免候选框提取过多导致算法准确率下降。对于受限场景的文字检测,Faster R-CNN的表现较为出色。可以通过多次检测确定不同粒度的文本区域。[2]

Faster R-CNN的网络结构[2]

FCN 相较于Faster R-CNN 算法只能计算ROI pooling 层之前的卷积网络特征参数,R-FCN 算法提出一种位置敏感分布的卷积网络代替ROI pooling 层之后的全连接网络,解决了Faster R-CNN 由于ROI Pooling 层后面的结构需要对每一个样本区域跑一次而耗时比较大的问题,使得特征共享在整个网络内得以实现,解决物体分类要求有平移不变性和物体检测要求有平移变化的矛盾,但是没有考虑到候选区域的全局信息和语义信息。[3]所以当面对自然场景的通用OCR,适于多尺度检测的FCN较之Faster R-CNN有着更好的表现。当采用FCN时,输出的掩膜可以作为前景文字的二值图像进行输出。

FCN的网络结构[3]

但是与其他日常场景的物体检测所不同的是,文字图像的分布更接近于均匀分布而非正态分布,即文字总体的均值图像并不能体现文字这一抽象概念的特征。除此之外,文字的长宽比与物体的长宽比不同,导致候选锚定框不适用;文字的方向仍然不能确定,对非垂直的文字方向表现佳;自然场景中常出现一些结构与文字非常接近,导致假阳性率升高。因此需要对现有模型进行调整。

一种常见的做法是调整候选锚定框,例如

RRPN (Rotation Region Proposal Networks)在faster R-CNN的基础上,将垂直的候选锚定框进行旋转满足非垂直文本的检测,这样一来就可以满足非垂直文字的检测需求。[4]

RRPN的网络结构[4]

TextBoxes是基于SSD改进的一个算法。调整了锚定框的长宽比,以适应文字的高长宽比。输出层也利用了利用非标准的卷积核。更适应文字细长的宽高比这一特点。[5]而

TextBoxes的网络结构[5]

DMPNet (Deep Matching Prior Network)采用非矩形四边形的候选锚定框进行检测。通过Monte-Carlo方法计算标注区域与矩形候选框和旋转候选框的重合度后重新计算顶点坐标,得到非矩形四边形的顶点坐标。[6]

DMPNet生成候选锚定框的示意图[6]

另一种改进的方法是通过自底向顶的方法,检测细粒度文本后将其连接成更粗粒度的文本

CTPN(Connectionist Text Proposal Network)是目前应用最广的文本检测模型之一。其基本假设是单个字符相较于异质化程度更高的文本行更容易被检测,因此先对单个字符进行类似R-CNN的检测。之后又在检测网络中加入了双向LSTM,使检测结果形成序列提供了文本的上下文特征,便可以将多个字符进行合并得到文本行。[7]

CTPN的网络结构[7]

SegLink则是在SSD的启发下得出的。采用临近连接的方法对上下文进行连接。并且通过将连接参数的学习整合进了神经网络的学习过程,使得模型更容易训练。[8]

SegLink的网络结构[8]

有一些研究引入了注意力机制,如下图模型采用Dense Attention模型来对图像的权重进行评估。这样有利于将前景图像和背景图像分离,对于文本内容较之背景图像有着更高的注意力,使检测结果更准确。[9]

基于注意力机制文本检测的网络结构[9]

文本识别

文本识别在传统技术中采用模板匹配的方式进行分类。但是对于文字行,只能通过识别出每一个字符来确定最终文字行从内容。因此可以对文字行进行字符切分,以得到单个文字。这种方式中,过分割-动态规划是最常见的切分方法。由于单个字符可能会由于切分位置的原因产生多个识别结果,例如“如”字在切分不当时会被切分成“女_口”,因此需要对候选字符进行过分割,使其足够破碎,之后通过动态规划合并分割碎片,得到最优组合,这一过程需要人工设计损失函数。还有另一种方法是通过滑动窗口对每一个可能的字符进行匹配,这种方法的准确率依赖于滑动窗口的滑动窗尺寸,如果滑动窗尺寸过大会造成信息丢失,而太小则会使计算力需求大幅增加。

以上的传统方法通过识别每个单字符以实现全文的识别,这一过程导致了上下文信息的丢失,对于单个字符有较高的识别正确率,其条目识别正确率也难以保证。以身份证识别为例,识别18位的身份号的场景下,即使单字符识别正确率高达99%,其条目正确率只能到0.9918=83%,如果切分也存在1%的损失(即正确率99%),条目正确率则只有(0.99*0.99)18=70%。

因此引入上下文的信息,成为了提升条目准确率的关键。从深度学习的角度出发,要引入上下文这样的序列信息,RNN和LSTM等依赖于时序关系的神经网络是最理想的选择。

CNN+Softmax CNN+RNN+CTC CNN+RNN+Attention机制

几种典型的文本识别网络结构

常见的一种做法是利用CRNN模型。以CNN特征作为输入,双向LSTM进行序列处理使得文字识别的效率大幅提升,也提升了模型的泛化能力。先由分类方法得到特征图,之后通过CTC对结果进行翻译得到输出结果。[10]

CRNN的网络结构[10]

另一种方法是引入注意力机制。以CNN特征作为输入,通过注意力模型对RNN的状态和上一状态的注意力权重计算出新一状态的注意力权重。之后将CNN特征和权重输入RNN,通过编码和解码得到结果。[11]

Attention OCR的网络结构[11]

端到端的OCR

与检测-识别的多阶段OCR不同,深度学习使端到端的OCR成为可能,将文本的检测和识别统一到同一个工作流中。目前比较受到瞩目的一种端到端框架叫做FOTS(Fast Oriented Text Spotting)。FOTS的检测任务和识别任务共享卷积特征图。一方面利用卷积特征进行检测,另一方面引入了RoIRotate,一种用于提取定向文本区域的算符。得到文本候选特征后,将其输入到RNN编码器和CTC解码器中进行识别。同时,由于所有算符都是可微的,因此端到端的网络训练成为可能。由于简化了工作流,网络可以在极低运算开销下进行验证,达到实时速度。[12]

FOTS的总体结构[12]

总结

尽管基于深度学习的OCR表现相较于传统方法更为出色,但是深度学习技术仍需要在OCR领域进行特化,而其中的关键正式传统OCR方法的精髓。因此我们仍需要从传统方法中汲取经验,使其与深度学习有机结合进一步提升OCR的性能表现。另一方面,作为深度学习的推动力,数据起到了至关重要的作用,因此收集广泛而优质的数据也是现阶段OCR性能的重要举措之一。

参考文献

[1] Lécun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998,86(11):2278-2324.

[2] Ren S, Girshick R, Girshick R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Trans Pattern Anal Mach Intell, 2015,39(6):1137-1149.

[3] Lin T Y, Dollar P, Girshick R, et al. Feature Pyramid Networks for Object Detection[J]. 2016:936-944.

[4] Ma J, Shao W, Ye H, et al. Arbitrary-Oriented Scene Text Detection via Rotation Proposals[J]. IEEE Transactions on Multimedia, 2017,PP(99):1.

[5] Liao M, Shi B, Bai X, et al. TextBoxes: A Fast Text Detector with a Single Deep Neural Network[J]. 2016.

[6] Liu Y, Jin L. Deep Matching Prior Network: Toward Tighter Multi-oriented Text Detection[C]//: IEEE Conference on Computer Vision and Pattern Recognition, 2017.

[7] Tian Z, Huang W, He T, et al. Detecting Text in Natural Image with Connectionist Text Proposal Network[C]//: European Conference on Computer Vision, 2016.

[8] Shi B, Bai X, Belongie S. Detecting Oriented Text in Natural Images by Linking Segments[J]. 2017:3482-3490.

[9] Gao Y, Chen Y, Wang J, et al. Reading Scene Text with Attention Convolutional Sequence Modeling[J]. 2017.

[10] Shi B, Bai X, Yao C. An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2016,39(11):2298-2304.

[11] Wojna Z, Gorban A N, Lee D S, et al. Attention-Based Extraction of Structured Information from Street View Imagery[J]. 2017:844-850.

[12] Liu X, Liang D, Yan S, et al. FOTS: Fast Oriented Text Spotting with a Unified Network[J]. 2018.

推荐阅读

[1]机器学习-波澜壮阔40年【获取码】SIGAI0413.

[2]学好机器学习需要哪些数学知识?【获取码】SIGAI0417.

[3] 人脸识别算法演化史【获取码】SIGAI0420.

[4]基于深度学习的目标检测算法综述 【获取码】SIGAI0424.

[5]卷积神经网络为什么能够称霸计算机视觉领域?【获取码】SIGAI0426.

[6] 用一张图理解SVM的脉络【获取码】SIGAI0428.

[7] 人脸检测算法综述【获取码】SIGAI0503.

[8] 理解神经网络的激活函数 【获取码】SIGAI2018.5.5.

[9] 深度卷积神经网络演化历史及结构改进脉络-40页长文全面解读【获取码】SIGAI0508.

[10] 理解梯度下降法【获取码】SIGAI0511.

[11] 循环神经网络综述—语音识别与自然语言处理的利器【获取码】SIGAI0515

[12] 理解凸优化 【获取码】 SIGAI0518

[13] 【实验】理解SVM的核函数和参数 【获取码】SIGAI0522

[14]【SIGAI综述】行人检测算法 【获取码】SIGAI0525

[15] 机器学习在自动驾驶中的应用—以百度阿波罗平台为例(上)【获取码】SIGAI0529

[16]理解牛顿法【获取码】SIGAI0531

[17] 【群话题精华】5月集锦—机器学习和深度学习中一些值得思考的问题【获取码】SIGAI 0601

[18] 大话Adaboost算法 【获取码】SIGAI0602

[19] FlowNet到FlowNet2.0:基于卷积神经网络的光流预测算法【获取码】SIGAI0604

[20] 理解主成分分析(PCA)【获取码】SIGAI0606

[21] 人体骨骼关键点检测综述 【获取码】SIGAI0608

[22]理解决策树 【获取码】SIGAI0611

[23] 用一句话总结常用的机器学习算法【获取码】SIGAI0611

[24] 目标检测算法之YOLO 【获取码】SIGAI0615

[25] 理解过拟合 【获取码】SIGAI0618

[26]理解计算:从√2到AlphaGo ——第1季 从√2谈起 【获取码】SIGAI0620

[27] 场景文本检测——CTPN算法介绍 【获取码】SIGAI0622

[28] 卷积神经网络的压缩和加速 【获取码】SIGAI0625

[29] k近邻算法 【获取码】SIGAI0627

[30]自然场景文本检测识别技术综述 【获取码】SIGAI0627

[31] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0704

[32] 机器学习算法地图【获取码】SIGAI0706

[33] 反向传播算法推导-全连接神经网络【获取码】SIGAI0709

[34] 生成式对抗网络模型综述【获取码】SIGAI0709.

[35]怎样成为一名优秀的算法工程师【获取码】SIGAI0711.

[36] 理解计算:从根号2到AlphaGo——第三季 神经网络的数学模型【获取码】SIGAI0716

[37]【技术短文】人脸检测算法之S3FD 【获取码】SIGAI0716

[38] 基于深度负相关学习的人群计数方法【获取码】SIGAI0718

[39] 流形学习概述【获取码】SIGAI0723

[40] 关于感受野的总结 【获取码】SIGAI0723

[41] 随机森林概述 【获取码】SIGAI0725

[42] 基于内容的图像检索技术综述——传统经典方法【获取码】SIGAI0727

[43] 神经网络的激活函数总结【获取码】SIGAI0730

[44] 机器学习和深度学习中值得弄清楚的一些问题【获取码】SIGAI0802

[45] 基于深度神经网络的自动问答系统概述【获取码】SIGAI0803

[46] 反向传播算法推导——卷积神经网络 【获取码】SIGAI0806

[47] 机器学习与深度学习核心知识点总结 写在校园招聘即将开始时 【获取 码】SIGAI0808

[48] 理解Spatial Transformer Networks【获取码】SIGAI0810

[49]AI时代大点兵-国内外知名AI公司2018年最新盘点【获取码】SIGAI0813

[50] 理解计算:从√2到AlphaGo ——第2季 神经计算的历史背景 【获取码】SIGAI0815

[51] 基于内容的图像检索技术综述--CNN方法 【获取码】SIGAI0817

[52]文本表示简介 【获取码】SIGAI0820

[53]机器学习中的最优化算法总结【获取码】SIGAI0822

[54]【AI就业面面观】如何选择适合自己的舞台?【获取码】SIGAI0823

[55]浓缩就是精华-SIGAI机器学习蓝宝书【获取码】SIGAI0824

[56]DenseNet详解【获取码】SIGAI0827

[57]AI时代大点兵国内外知名AI公司2018年最新盘点【完整版】【获取码】SIGAI0829

[58]理解Adaboost算法【获取码】SIGAI0831

[59]深入浅出聚类算法 【获取码】SIGAI0903

[60]机器学习发展历史回顾【获取码】SIGAI0905

[61] 网络表征学习综述【获取码】SIGAI0907

[62] 视觉多目标跟踪算法综述(上) 【获取码】SIGAI0910

[63] 计算机视觉技术self-attention最新进展 【获取码】SIGAI0912

[64] 理解Logistic回归 【获取码】SIGAI0914

[65] 机器学习中的目标函数总结 【获取码】SIGAI0917

[66] 人脸识别中的活体检测算法综述【获取码】SIGAI0919

[67] 机器学习与深度学习常见面试题(上)【获取码】SIGAI0921

[68] 浅谈动作识别TSN,TRN,ECO 【获取码】SIGAI0924

原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏汪毅雄的专栏

机器学习之回归原理详述(一)

本文用了从数学层面和代码层面,再结合一些通俗易懂的例子,详细地描述了回归主要涉及的原理和知识,希望对于机器学习的初学者或者有兴趣研究模型具体实现的同学带来一点帮...

1.3K3
来自专栏机器人网

知多少:3种机器学习的必备算法详解

假设有一些数据相关的问题亟待你解决。在此之前你听说过机器学习算法可以帮助解决这些问题,于是你想借此机会尝试一番,却苦于在此领域没有任何经验或知识。 你开始谷歌一...

3698
来自专栏AI科技大本营的专栏

Reddit热点 | 想看被打码的羞羞图片怎么办?CNN帮你解决

翻译 | 刘畅 编辑 | Donna,波波 超分辨重构是图像处理领域地一项非常有趣的任务。它可以通过算法将一张低分辨率的图片放大成一张高分辨率地图片。这个事情乍...

5164
来自专栏CVer

[计算机视觉论文速递] 2018-03-20

通知:这篇推文有13篇论文速递信息,涉及图像分割、SLAM、显著性、深度估计、车辆计数等方向 往期回顾 [计算机视觉] 入门学习资料 [计算机视觉论文速递] ...

5488
来自专栏目标检测和深度学习

干货 | 目标检测入门,看这篇就够了(下)

作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回...

5398
来自专栏量化投资与机器学习

量化投资之机器学习应用——基于 SVM 模型的商品期货择时交易策略(提出质疑和讨论)

2016年在东证期货的量化报告里,读到一篇文章,关于量化投资策略之机器学习应用——基于 SVM 模型的期货择时交易策略 。就顺手算了一下,发现了一些问题,因此和...

5089
来自专栏CVer

[计算机视觉论文速递] 2018-03-01

[1]《Stereoscopic Neural Style Transfer》 CVPR 2018 论文首次尝试对3D电影或AR/VR的新需求进行立体神经风格...

4938
来自专栏人人都是极客

干货 | 目标检测入门,看这篇就够了(下)

作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文章将回顾...

4624
来自专栏大数据互联网思维

HDR关键技术:逆色调映射

HDR技术近年来发展迅猛,在未来将会成为图像与视频领域的主流。当前HDR内容非常短缺,限制了HDR视听节目的广泛应用。逆色调映射(Inverse Tone Ma...

2290
来自专栏AI科技大本营的专栏

干货 | 目标检测入门,看这篇就够了(下)

? 作者 | 李家丞( 同济大学数学系本科在读,现格灵深瞳算法部实习生) 近年来,深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法,本系列文...

6427

扫码关注云+社区

领取腾讯云代金券