深度实践OCR:基于深度学习的文字识别(txt+pdf+epub+mobi电子书下载)


发布时间:2020-08-07 08:02:44

点击下载

作者:刘树春

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

深度实践OCR:基于深度学习的文字识别

深度实践OCR:基于深度学习的文字识别试读:

前言

文字作为人类传播文明、传递信息、记录思想的重要载体,在我们的生活中占据着举足轻重的地位,所以文字识别是目前最受关注的AI技术之一。OCR技术应用非常广泛,相较于图像,文字作为抽象的符号,承载着大量的信息,所以识别文字有非常大的价值。从历史角度看,文字识别是一门古老的技术,但是从实验室走出来,走进人们的生活,也只是近些年才发生的事情。特别是在深度学习应用于文字识别领域后,文字识别精度逼近人工水平,发展出非常多的应用。

笔者作为机器视觉方面的从业者,在刚开始将最新的深度学习技术应用到文字识别时遇到很多困难,常常苦恼于市面上鲜有全面介绍文字识别实现原理和方法的资料,特别是中文书籍,即使有,所介绍的技术也非常落后,远远脱离产业以及学术前沿。随着自己不断地学习和尝试,在反复试错以及与同行交流后,慢慢掌握了其中的方法。为了帮助更多与我有相似经历的人,我们几位同事把基于深度学习的OCR方法整理出来,希望能帮助更多相关从业人员。

本书从OCR的出现讲到中间经历的传统技术,再到最新的基于深度学习的技术,同时根据OCR常用技术流程——从数据、模型对文字的定位、识别到后处理等,对OCR技术做了一个深度梳理,带领读者进入一个引人入胜的文字识别智能世界,领略各种神经网络的魅力及挑战。

全书总共有10章,逻辑上分为四个部分。

第一部分(第1~3章),主要介绍传统OCR技术。

第二部分(第4~6章),主要介绍OCR中一些基础的组件和方法。

第三部分(第7~8章),主要跟踪前沿的文字检测和文字识别技术。

第四部分(第9~10章),主要介绍一些常用的后处理方法和版面分析方法。

本书在内容上尽可能涵盖了OCR领域的基础知识,在合著伙伴的组成上,有学术界第一梯队的青年学者,同时也有产业界一线从业者,希望尽可能实现理论与实践并重。写作分工

刘树春编写第1章、第5章、第6章、第10章。

贺盼编写第7章。

马建奇编写第8章。

王佳军编写第9章。

谢雨飞编写第3章。

陈明曦编写第2章、第4章。本书特点

本书具有如下特点:

1.作者有学术界的OCR研究者,也有工作在一线的OCR从业者,试图做到理论与实践结合。

2.涵盖的知识面比较全,包括传统的OCR方法以及最新的基于深度学习的OCR方法。

3.强化了对代码的梳理,方便读者实战运行。本书读者

本书可作为OCR从业人士或者研究生的参考资料或者入门教程,用来了解OCR相关前沿技术。感谢

本书在后期修订中得到了邵蔚元、张飞云、刘树芳、龙力等同仁的帮助。他们抽出宝贵的时间帮忙审阅,并提出了中肯的意见和建议。

感谢阿里巴巴本地生活研究院提供的支持与帮助,特别是李佩博士与何田院士对我们工作的鼎力支持。

感谢机械工业出版社的编辑杨福川、张锡鹏和董惠芝,没有他们的努力就没有本书的顺利出版。

最后,感谢各位读者朋友。读者服务

由于OCR领域的发展日新月异,本书无法做到在所有细分领域面面俱到。而且笔者笔力有限,书中会有很多不足的地方,还望读者能够帮忙指正,不胜感激,日后定将勤加修订升级。

本书通过GitHub(https://github.com/ocrbook/ocrinaction)进行各种资源的交互,以及信息的反馈。

谢谢大家!刘树春第1章 绪论

财务人员通过财务OCR系统,可及时获取发票上的公司抬头、金额、编号等信息,无须人工录入,直接导入数据库;把手机摄像头对焦到名片上,即可实时导入客户的信息,免去打字输入的烦恼;拍摄路边的招牌信息,从中提取文字标识,综合当前GPS定位,即可直接匹配到该店面的评价页面,免去手动输入关键字搜索的麻烦;对图书馆的古籍进行文字识别,将其转化为文字编码信息,可减轻古籍工作者誊抄的工作量。所有这些场景背后都用到一项重要技术——光学字符识别(Optical Character Recognition,OCR)。1.1 人工智能大潮中的OCR发展史

在上古时代,人们就有一个梦想——创造能像我们人类一样,具有独立思考和推理能力的智能体。例如,古籍《列子》记载,偃师为周穆王造仿的真人,能歌善舞,且能够执行人类发出的指令。《荷马史诗》也描述过赫菲斯托斯在山上,与仆人熔化链条制作兵器和各种机械人的故事。

直到20世纪50年代,一群怀揣梦想的科学家在美国的达特茅斯学院才正式提出人工智能(Artificial Intelligence)概念,从此开启了人工智能的新纪元。此后,无数科学家投入人工智能领域。随后的几十年里,人工智能三起三落,技术不断推陈出新。其发展脉络如图1-1所示。

与此同时,作为人工智能领域一个非常小的技术,OCR也随着人工智能的发展起起落落。

光学字符识别(OCR)这一概念,最早由德国科学家Tausheck[1]在1929年提出。几年后,美国科学家Handel也提出了文字识别的想法,当然直到计算机的出现,这一想法才得以慢慢实现。汉字识别最早是由IBM公司的工程师Casey与Nagy实现的,他们在1966年发表了首篇汉字识别相关的文章,采用的是模板匹配的方式,可以识别1000个印刷体汉字。之后,OCR技术得到大量研究,经过近60年的发展,并且随着相关技术以及算力的提升,现在已经广泛应用在各个领域。图1-1 人工智能发展脉络

相较于印刷体西班牙语的识别,印刷体汉字的识别要更难(中文汉字类别多,字体风格也多变)。最早可以追溯的汉字识别,是IBM的基于模板匹配的方法。20世纪70年代,日本东芝综合研究所研制出可以识别2000个单体印刷汉字的识别系统,代表了当时汉字识别的最高水准。与此同时,三洋、松下、富士通等公司也各自在研制印刷体的识别系统。这些系统大多使用基于K-L数字变换的匹配方案,需要大量的专业硬件设备,体积庞大,造价昂贵,所以使用相对有限。

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

与发达国家相比,我国的OCR技术研究起步较晚,直到20世纪70年代才开始,所以一直处于后继追赶的状态。但是,随着深度学习逐渐变成研究热点,我国迅速走在世界前列。这主要是由于国内出现了一大批富有实干精神的青年研究学者,代表有华中科技大学白翔教授组、华南理工大学金连文教授组、中国科学院深圳先进技术研究院的乔宇教授组、中科院自动化所刘成林教授组、清华大学丁晓青教授组、北京大学高良才教授组、北京科技大学殷绪成教授组,以及澳洲阿德莱德大学的沈春华教授组等。同时,在工业界,大量公司走在世界前列,例如阿里巴巴、腾讯、百度、商汤、旷视、华为、云从、依图、海康威视、科大讯飞等。当然,发达国家也有很多相关的研究机构,例如牛津大学VGG视觉组,以及Google、Facebook、Adobe等公司。

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

根据OCR技术的发展过程,本书将OCR技术大概划分为两个发展阶段:传统OCR技术方法和基于深度学习的OCR技术方法。除了OCR以外,通常还有另外两个相关的专有名词——DAR和STR。其中,DAR(Document Analysis and Recognition,文档图像分析和识别)是文档图像处理领域的一个更宽泛的概念;STR(Scene Text Recognition,场景文字识别)主要针对自然场景中文字的检测与识别,是OCR的一个重要分支。过去,OCR的定义为将印刷体中的字符从纸质文档中识别出来。随着技术的发展,OCR的内涵已经发生了变化,不再局限于识别印刷体中的文字。可见,随着技术的发展,OCR的内涵在不断拓宽。[1] Liao M,Shi B,Bai X,Wang X,Liu W.Textboxes:a Fast Text Detector With A Single Deep Neural Network[J].the Thirty-first AAAI Conference on Artificial Intelligence,2017.1.1.1 传统OCR方法一般流程

文字识别从本质上可以归类为序列化标注问题,主要目标是寻找文本串图像到文本串内容的映射,这一点与自然语言处理中的一些任务非常类似。当然,与自然语言处理相比,文字识别又有不小的区别,因为其具有一些独特性。首先是局部特性,文本串中的局部会直接体现在整个识别目标当中;其次是组合特性,文本串的内容组合千变万化,例如,常用的英文单词有几万个,而汉字的组合就更多了,因为汉字的组成单元常用的有6000多个,加上繁体字和生僻字足有10000个,组合出来的情况千变万化。基于上面的考量,一种直接的方法是先将其切分成单字,然后识别单字的类别,之后将结果串起来。这种切分到基本单元的方法在深度学习之前的几十年是通用方法,其流程如图1-2所示。图1-2 垂直投影分割法

当然,在实际操作中,还会增加一些预处理。一般分解流程如图1-3所示。

1)图像输入:对于不同的图像来说,因为有着不同的格式和压缩方式,所以需要使用不同的方法进行解码。

2)图像预处理:主要包括二值化、去噪声、倾斜较正等,具体操作说明如下。图1-3 传统OCR识别流程

·二值化:摄像头采集到的图像,一般都是彩色图像。彩色图像所含信息量巨大,常含有很多与文字无关的信息,所以对于图像的内容,需要进行简单的前景与背景分离,即先对彩色图像进行处理,使图像只包含前景信息与背景信息。简单地将前景信息定义为黑色,背景信息定义为白色,这就是二值化图。

·去噪:对于不同场景下的文字,我们对噪声的定义也是不同的,需要根据噪声的特征进行去噪。

·倾斜较正:很多情况下,获得的文字都是比较随意的,不可避免地会产生倾斜,这就需要在识别之前先对相关的内容进行校正。

3)版面分析:对文档图片分段落、分行的过程,称为版面分析。由于实际文档的多样性、复杂性,目前还没有一个固定、统一的切割模型。

4)字符切割:因为需要对每个字做识别,所以需要将版式的文字切割成一个个单字,以用于后续识别器的识别。

5)字符识别:该研究在比较早的时期就有模板匹配,后来以特征提取为主。文字的位移,笔画的粗细、断笔、粘连、旋转等因素极大地增加了特征提取的难度。

6)版面恢复:人们希望识别后的文字,仍然像原文档图片那样排列着,段落、位置和顺序都不变地输出到Word文档和PDF文档等。

7)后处理:根据语言模型,对识别的结果进行语义校正。

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

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

上面提到的传统的OCR处理方法,使用了大量的图像处理的相关知识,而且基本上是合乎人类视觉处理逻辑的。首先是数据的预处理,然后是数据的特征提取、特征降维等,之后送入一些典型的分类器(例如SVM、Softmax等)进行分类,最后通过后处理进行数据结构化。这样处理似乎是合理的,其实引入了很多问题。首先,整个处理流程的工序太多,而且是串行的,导致错误不断被传递放大,例如,每一步都是90%的正确率,正确率看似很高,但是经过五步的错误叠5加之后为0.9=0.59049,结果就已经不及格。其次,整个过程涉及太多的人工设计,而人工设计并不一定能够抓住问题的本质。例如文字的二值化这一预处理,参与过实际调整二值化参数项目的人深有感触,这个阈值在一些情况下很难调整好,甚至在很多情况下还是自相矛盾的。因为本质上模型的复杂度较低且无法充分拟合数据分布,因此难免会出现“按下葫芦浮起瓢”的现象。实际处理过程中会过滤掉很多有用的信息。然后,在一些背景稍微复杂或者变体文字的情况下,传统方法基本会失效,模型的泛化性偏弱。版面分析(连通域方式)以及投影变换(行切分)的方式只能限定处理相对简单的场景,一旦场景变为自然场景(例如,街拍、复杂的广告、菜单等),基本上就会失效。最后,传统方法对单字的识别完全没有考虑到上下文的语义关联信息(局部和整体是相关的)。为了解决上述问题,传统方法进行了很多组合,例如,对识别的结果进行动态路径搜索,搜索最优的路径。路径寻优过程中,经常需要结合文字的外观特征以及语言模型进行处理,这里的前后处理存在非常多的耦合,导致实际系统中的识别模块往往需要堆砌非常多的算法。即使如此,传统方法也存在很多完全无法处理的问题,例如手写字体、验证码等存在非常多的粘连,根本无法进行切分。而深度学习的自适应学习驱动方式,能够很好地应对这些问题,因为要做的参数预处理的流程基本上少了很多,而且基本上做到了端到端的处理。

如图1-5所示,基于深度学习的OCR方法将一些繁杂的流程分成两个主要步骤,一个是文本检测(主要用于定位文本的位置),另一个是文本识别(主要用于识别文本的具体内容)。图1-5 传统OCR方法向基于深度学习方法的OCR方法演进1.2 文字检测

文字检测方法分布如图1-6所示。

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

深度学习的发展,特别是物体检测领域的发展,极大地促进了文本检测的发展,当然文字检测相较于一般的物体检测而言具有其特殊性,具体说明如下。

1)背景多样化。自然场景下,文本行的背景可以为任意背景,同时会受一些纹理结构相近的背景影响。

2)文本行形状和方向的多样化。如水平、垂直、倾斜、曲线等。

3)文本行颜色、字体、尺度的多样化(文本的长度变化多样,长宽比可以达到1:100,甚至更高)。

4)不同程度的透视变换。

5)恶劣的光照条件和不同程度的遮挡。

慢慢地,文本检测也衍生出了独有的方法,但都在物体检测的框架体系之内,主要包含:基于候选框(Anchor)的文本检测、基于语义分割(Segmentation)的文本检测,以及基于两种方法的混合方法(Hybrid)。基于候选框的方式是首先预生成若干候选框,然后回归坐标和分类,最后经过NMS得到最终的检测结果。基于语义分割的基本方式是通过FPN直接进行像素级别的语义分割,然后进行后处理得到相关的坐标即可。当然,这两种方式各有利弊,因此最后产生了混合方式。除此之外,还有将识别网络和检测网络一起进行端到端训[6][7]练的方式,例如FOTS、TextSpotter等,因为识别网络可以帮助检测网络去除一些非文字的候选区域。图1-7展示的是一些文字检测的示例。图1-6 文字检测脑图图1-7 一些文字检测的例子1.3 文字识别

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

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

注意:CRN N(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有所区别。近年来,文字识别研究热点也慢慢朝更难的弯曲文本转移。针对弯曲文本,[11][12]有的方法从矫正的角度处理,例如STN矫正方法、TP S变换找控制点方法等,还有的方法直接从2D的角度直接解析,例如2D的CTC、Attention等。除此之外,针对类别多的问题也有一些新的方法,[14]比如张建树博士提出的基于偏旁部首的方法。当然还有很多其他算法,在后续章节中笔者会对一些经典方法做更详细的介绍。大致梳理的文字识别方法分布如图1-9所示。图1-8 CRNN和CNN+Seq2Seq+Attention方法图1-9 文字识别方法[1] 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 and Machine Intelligence,2016.1.4 产业应用现状

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

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

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

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

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

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

图1-10到图1-13分别展示了一些使用案例,大家可以简单感受一下。图1-10 表格识别案例图1-11 票据识别

国内在做通用OCR技术的公司有阿里巴巴、腾讯、百度、旷视科技、科大讯飞、饿了么、商汤科技、旷视科技、云从科技、码隆科技、七牛云、美团外卖、搜狗、合合信息、汉王科技、文通、易道博识、云脉OCR、灵云OCR等。还有一些公司是围绕相关领域做OCR应用,例如,教育领域有学霸君、猿辅导、好未来、作业盒子等;安防领域有海康威视、大华;物流外卖领域有阿里、饿了么、顺丰、中通等。图1-12 身份证以及银行卡的识别图1-13 机动车登记本+广告图片+街头场景文字识别1.5 本章小结

本章主要介绍OCR技术的发展路径,包括从传统技术到新技术的迭代升级,国内外的研究现状,以及其在工业界的应用现状,同时重点梳理文字检测和文字识别这两个技术的主要方法。当然,还有很多内容尚未涉及,例如数据集、风格迁移等,这些会在后续的章节中详细介绍。1.6 参考文献

[1]霍强.光学字符识别技术:让电脑像人一样阅读[J].科学与现代化,2016.

[2]Matas J,Chum O,Urban M,Pajdla T.Robust Wide-baseline Stereo From Maximally Stable Extremal Regions[J].Image And Vision Computing,2004.

[3]Girshick R.Fast R-cnn[J].In Proceedings of The IEEE International Conference on Computer Vision,2005:1440-1448.

[4]Redmon J,Divvala S,Girshick R,Farhadi A.You Only Look Once:Unified,Real-time Object Detection[J].the Proceedings of The IEEE Conference on Computer Vision and Pattern Recognition,2016:779-788.

[5]Tian Z,Huang W,He T,He P,Qiao Y.Detecting Text in Natural Image with Connectionist Text Proposal Network[J].the European Conference on Computer Vision,2016:56-72.

[6]Liu X,Liang D,Yan S,Chen D,Qiao Y,Yan J.Fots:Fast Oriented Text Spotting with a Unified Network[J].the IEEE Conference on Computer Vision and Pattern Recognition,2018:5676-5685.

[7]Liao M,Shi B,Bai X,Wang X,Liu W.Textboxes:a Fast Text Detector With A Single Deep Neural Network[J].the Thirty-first AAAI Conference on Artificial Intelligence,2017.

[8]He P,et al.Reading Scene Text in Deep Convolutional Sequences[J].Thirtieth AAAI Conference on Artificial Intelligence,2016.

[9]Neumann Lukas,Jiri Matas.a Method for Text Localization and Recognition in Real-world Images[J].Computer Vision-ACCV,2010:770-783.

[10]Neumann LukÁA,JiÍMatas.Real-time Scene Text Localization and Recognition[J].Computer Vision and Pattern Recognition(CVPR),2012.

[11]Bartz C,Yang H,Meinel C.STN-OCR:a Single Neural Network for Text Detection and Text Recognition[J].Arxiv Preprint Arxiv,2017:1707-8831.

[12]Shi B,Wang X,Lyu P,et al.Robust Scene Text Recognition with Automatic Rectification[C].the IEEE Conference on Computer Vision and Pattern Recognition,2016:4168-4176.

[13]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 and Machine Intelligence,2016.

[14]Zhang J,Zhu Y,Du J,et al.Radical Analysis Network for Zero-shot Learning in Printed Chinese Character Recognition[C].IEEE International Conference On Multimedia and Expo(ICME),2018:1-6.

[15]Graves A,FernÁNdez S,Gomez F,et al.Connectionist Temporal Classification:Labelling Unsegmented Sequence Data with Recurrent Neural Networks[C].Proceedings of the 23rd International Conference on Machine Learning.ACM,2006:369-376.

[16]Graves A,Liwicki M,FernÁNdez S,et al.a Novel Connectionist System for Unconstrained Handwriting Recognition[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2008,31(5):855-868.

在kindle搜索B088JTCPLF可直接购买阅读第2章 图像预处理

在文字检测与文字识别中,图像质量的好坏直接关系到检测率与识别率的高低,因此对图像进行预处理是不容忽视的重要环节。本章将重点介绍图像预处理中的二值化、去噪和倾斜角检测校正的常用算法,并于实战部分依据实例对比不同方法的去噪效果。2.1 二值化

图像二值化(Image Binarization)是指将像素点的灰度值设为0或255,使图像呈现明显的黑白效果。二值化一方面减少了数据维度,另一方面通过排除原图中噪声带来的干扰,可以凸显有效区域的轮廓结构。OCR效果很大程度上取决于该步骤,高质量的二值图像可以显著提升识别的准确率。目前,二值化的方法主要分为全局阈值方法(Global Binarization)、局部阈值方法(Local Binarization)、基于深度学习的方法和其他方法。本节将对以上四大类二值化方法依次展开讨论。2.1.1 全局阈值方法

1.固定阈值方法

该方法是对于输入图像中的所有像素点统一使用同一个固定阈值。其基本思想如下:

其中,T为全局阈值。下面我们用一组图(图2-2a到图2-2d)展示不同阈值的设定对输出结果的影响。输入图片如图2-1所示。图2-1 输入图片

如图2-2所示,T=110时,二值化的效果最佳,保留了较为完整的目标区域结构,但同时也暴露了固定阈值方法的主要缺陷:很难为不同的输入图像确定最佳阈值。为解决这一问题,下面介绍的几种方法均采用了根据输入图片计算最佳阈值的思想。图2-2 输出图片

2.Otsu算法[1]

Otsu算法又称最大类间方差法,由日本学者Nobuyuki Otsu于1979年提出,是一种自适应的阈值确定方法。其基本思想说明如下。

将输入图像视为L个灰度级,n表示灰度级为i的像素个数,那么i可知像素总数N=n+n+…+n。为了简化讨论,这里使用归一化的灰12L度直方图,并将其视为输入图像的概率分布:

现假设在第k个灰度级设置阈值,将图像二分为C和C(背景和01目标物体),C表示灰度级为[1,…,k]的像素点,C表示灰度级为[k01+1,…,L]的像素点,那么两类出现的概率以及类内灰度级的均值分别为:

其中,ω(k)和μ(k)分别为灰度级从1到k的累积出现概率和平均灰度级,而μT则是整张图像的平均灰度级。我们很容易就能验证,对于任意k值均有:

这两类的类内方差由以下两个公式给出:

为了评价阈值k的好坏,我们需要引入判别式,根据判别式的标准来进行测量:

其中,

σ、σ、σ、分别为类内方差、类间方差和灰度级的总方差。WBT现在,我们将问题转化为一个优化问题,即找到一个k,使其能够最大化式(2.1)中的目标函数。我们注意到以下关系始终存在:

并且都是k的函数,但却与k无关;我们还注意到是基于二阶统计(类方差),而则是基于一阶统计(类均值)。因此,η是判别k取值好坏的最简单的衡量标准:

至此,我们得到最佳的k值选择,即:

为了更加形象地解释Otsu算法,我们下面先用代码将图2-3a与图2-4a两张输入图像的灰度直方图以及算法得到的结果阈值绘制出来,首先来看代码清单2-1。

代码清单2-1 Otsu Python代码

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载