一 OCR文字识别简介
1.1 什么是OCR
OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。-摘自百度百科。
1.2 OCR技术的发展现状
在一些简单环境下OCR的准确度已经比较高了(比如电子文档),但是在一些复杂环境下的字符识别,在当今还没有人敢说自己能做的很好。现在大家都很少会把目光还放在如何对电子文档的文字识别该怎么进一步提高准确率了,因为他们把目光放在更有挑战性的领域。OCR传统方法在应对复杂图文场景的文字识别显得力不从心,越来越多人把精力都放在研究如何把文字在复杂场景读出来,并且读得准确作为研究课题,用学界术语来说,就是场景文本识别(文字检测+文字识别)。
1.3 OCR文字识别技术的应用领域和价值
- 证件识别、车牌识别
- 智慧医疗
- pdf文档转换为Word
- 拍照识别、截图识别、网络图片识别
- 无人驾驶
- 无纸化办公、稿件编辑校对
- 物流分拣
- 舆情监控
- 文档检索
- 字幕识别
- 文献资料检索等
1.4 OCR文字识别分类
OCR文字识别主要可以分为:印刷体文字识别和手写体文字识别。
1.5 文字识别的一般流程
目前,OCR文字识别技术的手段多种多样,各个识别过程也是不尽相同,这里简要介绍文字识别方法的一般流程。
- 识别出文字区域(通过滑动窗口算法,遍历整个图片,有监督的标记训练样本特征进行判断,找到目标图片进行矩形化摘取出来)
- 对文字区域矩形分割,拆分成不同的字符(在矩形中做一维滑动窗口移动,判断字符间间距,对字符进行划分)
- 字符分类(对划分好的字符根据监督算法,对字符进行预测)
- 识别出文字(最终识别出整个字符)
-
后处理识别矫正,对识别出的文字进行后续处理和校正。比如,考虑单词Because,我们设计的识别模型把它识别为8ecause,那么我们就可以用语法检测器去纠正这种拼写错误,并用B代替8并完成识别矫正。这样子,整个OCR流程就走完了。
下面就具体谈谈印刷体文字识别和手写体文字识别的方法。
二 印刷体文字识别
OCR技术的兴起便是从印刷体识别开始的,印刷体识别的成功为后来手写体的发展奠定了坚实的基础。印刷体识别的主要流程大致分为以下几个部分:图像预处理;版面处理;图像切分;特征提取及模型训练;识别后处理。
2.1 图像预处理
由于纸张的厚薄、光洁度和印刷质量都会造成文字畸变,产生断笔、粘连和污点等干扰,所以在进行文字识别之前,要对带有噪声的文字图像进行处理。预处理一般包括灰度化、二值化,倾斜检测与校正,行、字切分,图像平滑,规范化等等。
2.1.1 灰度化
通过外设采集的图像通常为彩色图像,彩色图像会夹杂一些干扰信息,灰度化处理的主要目的就是滤除这些信息,灰度化的实质其实就是将原本由三维描述的像素点,映射为一维描述的像素点。转换的方式、工具和规则有很多,在这里不详细介绍。
2.1.2 二值化
经过灰度处理的彩色图像还需经过二值化处理将文字与背景进一步分离开,所谓二值化,就是将灰度值(或者彩色值)图像信号转化成只有黑(l)和白(0)的二值图像信号。二值化效果的好坏,会直接影响灰度文本图像的识别率。二值化方法大致可以分为局部阈值二值化和整体阈值二值化。
2.1.3 倾斜检测与校正
印刷体文本资料大多是由平行于页面边缘的水平(或者垂直)的文本行(或者列)组成的,即倾斜角度为零度。然而在文本页面扫描过程中,不论是手工扫描还是机器扫描,都不可避免地会出现图像倾斜现象。而倾斜的文档图像对后期的字符分割、识别和图像压缩等工作将产生很大影响。为了保证后续处理的正确性,对文本图像进行倾斜检测和校正是十分必要的。
文本图像的倾斜校正分为手动校正和自动校正两种。
手动校正,是指识别系统提供某种人机交互手段,实现文本图像的倾斜校正。
自动校正,是指由计算机自动分析文本图像的版面特征,估计图像的倾斜角度,并根据倾斜角度对文本图像进行校正。
目前,文本图像的倾斜检测方法有许多种,主要可以划分为以下五类:基于投影图的方法,基于Houhg变换的方法,基于交叉相关性的方法,基于Fourier变换的方法和基于最近邻聚类方法。
- 最简单的基于投影图的方法是将文本图像沿不同方向进行投影。当投影方向和文字行方向一致时,文字行在投影图上的峰值最大,并且投影图存在明显的峰谷,此时的投影方向就是倾斜角度。
- 基于Houhg变换的方法也是一种最常用的倾斜检测方法,它是利用Hough变换的特性,将图像中的前景像素映射到极坐标空间,通过统计极坐标空间各点的累加值得到文档图像的倾斜角度。
- 基于Fourier变换的方法是利用页面倾角对应于使Fourier空间密度最大的方向角的特性,将文档图像的所有像素点进行Fourier变换。这种方法的计算量非常大,目前很少采用。
- 基于最近邻聚类方法,取文本图像的某个子区域中字符连通域的中心点作为特征点,利用基线上的点的连续性,计算出对应的文本行的方向角,从而得到整个页面的倾斜角。
2.1.4 图像平滑
文本图像经过平滑处理之后,能够去掉笔划上的孤立白点和笔划外部的孤立黑点,以及笔划边缘的凹凸点,使得笔划边缘变得平滑。一种简单的平滑处理方法如下。采用NxN窗口(N一般为3,如图2-1所示是一个3X3窗口),依次在二值文字点阵中进行扫描,根据窗口中黑白像素的分布情况,使处于窗口中心的被平滑像素X。,从“0”变成“1”或者从“l”变成“0”。
该方法是按以下规则对文字轮廓边缘进行平滑的。
规则1如果满足图2-2中(a),(b),(c),(d)四种情况中的任何一种,则中心点应该由“0”变成“l”。
规则2如果满足图2-2中(e),(f),(g),(h)四种情况中的任何一种,则中心点应该由“1”变成“0”。
2.1.5 规范化
规范化操作就是将输入的任意尺寸的文字都处理成统一尺寸的标准文字,以便与己经预先存储在字典中的参考模板相匹配。规范化操作包括1211:位置规范化、大小规范化以及笔划粗细规范化。在这里只讨论位置规范化和大小规范化。
为了消除文字点阵位置上的偏差,需要把整个文字点阵图移动到规定的位置上,这个过程被称为位置规范化。常用的位置规范化操作有两种,一种是基于质心的位置规范化,另一种是基于文字外边框的位置规范化。基于文字外边框的位置规范化需要首先计算文字的外边框,并找出中心,然后把文字中心移动到指定的位置上来。基于质心的位置规范化方法抗干扰能力比基于文字外边框的位置规范化方法要强。
使用基于文字外边框的位置规范化方法对文字进行位置规范化的操作结果,如下图所示。
对不同大小的文字做变换,使之成为同一尺寸大小,这个过程被称为大小规范化。很多已有的多字号印刷体识别系统都是通过大小规范化来识别不同字号的文字。常用的大小规范化操作也有两种,一种是将文字的外边框按比例线性放大或缩小成规定尺寸的文字,另一种是根据水平和垂直两个方向上文字黑像素的分布情况进行大小规范化。
使用根据水平和垂直两个方向上文字黑像素的分布情况方法对文字进行大小规范化操作的效果,如下图所示。
2.2 版面处理
版面处理通常可以分为三个主要部分,版面分析、版面理解、版面重构。
2.2.1版面分析
将文本图像分割为不同部分,并标定各部分属性,如:文本、图像、表格。目前在版面分析方面的工作核心思想都是基于连通域分析法,后衍生出的基于神经网络的版面分析法等也都是以连通域为基础进行的。连通域是指将图像经过二值化后转为的二值矩阵中任选一个像素点,若包围其的所有像素点中存在相同像素值的像素点则视为两点连通,以此类推,这样的像素点构成的一个集合在图像中所在的区域即一个连通域。根据连通域大小或像素点分布等特征可以将连通域的属性标记出来,用作进一步处理的依据。
2.2.2版面理解
获取文章逻辑结构,包括各区域的逻辑属性、文章的层次关系和阅读顺序。根据版面分析时记载的连通域位置信息,确定连通域归属序列。
2.2.3版面重构
根据版面分析和OCR的结果,重构出包含文字信息和版面信息的电子文档。
2.3 图像切分
图像切分大致可以分为两个个主要类别,行(列)切分和字切分。经过切分处理后,才能方便对单个文字进行识别处理。如下图所示。
2.3.1 行列切分
由于印刷体文字图像行列间距.、字间距大致相等,且几乎不存在粘连现象,所以可以采用投影法对图像进行切分,得到每列(行)在坐标轴的像素值投影曲线是一个不平滑的曲线,通过高斯平滑后的曲线在每个波谷位置间的区域即为要的一行(列)。
2.3.2 字切分
字切分对于不同的文种存在着比较明显的差异,通常意义下,字切分是指将整行或整列文字切分成独立的一个个文字,而实际上根据文种差异,可能还需需要将单个文字进行进一步切分。而因为文种不同,构词法或钩字法也有所不同,所以切分方法的难度差别也是天壤之别。例如将汉字“屋”切分开的难度和将英文“house”切分开的难度差别就很大,因此在识别模式上,也会根据文种特性,设计不同的识别方法。
2.4 特征提取及模型训练
在深度学习广泛应用于图像识别领域之前,模板匹配是较为常见的一种识别方式,之后由于神经网络的复苏,基于反馈的神经网络给OCR领域带来了又一春。现在随着计算机硬件算力的提升,利用大批数据训练深度神经网络在图像识别方面取得了傲人的成绩。
2.4.1 特征提取及匹配
特征提取是从单个字符图像上提取统计特征或结构特征的过程。所提取的特征的稳定性及有效性,决定了识别的性能。对于统计特征的提取,可利用统计模式识别中的特征提取方法,而对结构特征的提取,应根据具体文字所确定的识别基元确定相应的特征提取方法。在相当长的文字识别的研究过程中,是利用人们的经验知识,指导文字特征的提取。例如边缘特征、变换特征、穿透特征、网格特征、特征点特征、方向线素特征等等。
特征匹配是从已有的特征库中找到与待识别文字相似度最高的文字的过程。当待识别文字提取完特征之后,不管使用的是统计特征,还是结构特征,都需要有一个特征库来进行比对,特征库中应包含欲识别字符集中所有文字的特征。特征匹配的方法有很多,比较常用的有:欧式空间的比对法、松弛比对法、动态程序比对法以及HMM(HiddneMarkovModel)法等等。在神经网络出现之前以及之后很长一段时间,在汉字OCR领域,一直采用的就是这种模板匹配的方法。
2.4.2 模型训练
人工神经网络经过一段时间的发展在OCR中主要充当了分类器的作用,网络的输入为文字特征向量,输出是类编码,在识别类型较少且结构区分较为明显的文字识别中,特征向量通常为字符图像像素点的矩阵,这样特征提取相当于是一个黑盒的操作,对于原理的解释有很多,这里不做详细介绍。深度学习已经成功应用于OCR领域,深度学习的发展替代了繁重的特征工程,从大量标记预料中自动学习出图像的特征,其中CNN(卷积神经网络)尤为抢眼,除了省去人工特征提取的流程外,共享权值的方式也减少了权值数量,大幅减少了计算开销,它的两大优势使得CNN在OCR领域表现十分卓越。
2.4.3 识别方式
随着用户数量及需求的增加,识别效率也成为OCR工程化的一项重要指标。传统方法,会对服务器性能要求较高,这样使得投入成本较高且不易扩展;在Hadoop出现之后,该问题得到了较好的改善,通过MapReduce编程框架,使得企业需要为之投入的硬件成本大幅减少,对OCR的发展提供了有力的推动作用。
2.5 识别后处理
识别后处理主要应用于两个方面分别是版面恢复及识别校正。版面恢复在版面处理章节已经讲过,这里不再赘述。识别校正,主要方式是在识别结果基础上根据语种的语言模型进行,当然在单语种识别中相对容易一些,而在多语种则较为复杂。
三 手写体文字识别
手写体识别较印刷体识别难度较高,而在手写体识别中脱机手写体识别难度又比联机手写体识别高。这也是脱机手写体识别还未成功应用的主要原因。
联机手写体文字识别(on-line handwritten character recognition)又被称为实时(或者在线)手写体识别,即:人在书写文字的同时,机器根据所书写文字的笔划、笔顺等特征进行识别。联机手写体文字识别是依靠电磁式或压电式等手写输入板来完成的,当用户使用光笔在输入板上写字的时候,光笔在板上的运动轨迹(板上的坐标)会被转化为一系列的电信号,这些电信号能够串行地输入到计算机中,从这些电信号我们可以比较容易地抽取笔划和笔顺的信息,从而进行文字识别。从上世纪90年代以来,联机手写体文字识别正逐步走向实用。中国的科研工作者推出了多个联机手写体汉字识别系统,国外的一些大公司也开始进入这一市场。这一技术也迎合了PDA(Personal Digital Assistant)的发展潮流。
脱机手写体文字识别(off-line handwritten character recognition)又被称为离线手写体文字识别:由书写者预先将文字写在纸上,然后通过扫描仪转换成文字图像,再由计算机识别成相应文字。由于每个人书写习惯的不同,所以脱机手写体文字的类型是多种多样的,而且既便同一个人在不同情况下写出来的文字也会有变化,这些都给脱机手写体文字识别带来了巨大的困难。对于脱机手写体文字识别而言,如果对文字的书写不加以任何限制(即自由手写体文字),则识别难度相当大。
对于脱机手写体文字识别处理流程和技术手段大致和印刷体识别相似,但是由于手写体随意性较大,因此对文字图像的行列切分、字切分带来了较大的困难,根据文种不同,切分的方法也有所不同,例如:在手写体蒙古文字中内蒙古大学的研究学者采用了一种基于字符外接多边形的寻找切分点的字切分算法,取得了不错的切分效果。
对于联机手写体识别的处理流程,主要是利用笔划顺序作为序列模型,加上字符结构特征、笔顺方向特征、笔画数量特征作为空间模型的组合式模型,完成识别任务。
参考文献
机器学习(第十一周)--图片OCR算法
文字识别总结(OCR)
声明:本文只是个人学习总结,部分内容来自于网络,不做任何商用!!!