一、OCR技术的发展历程
自20世纪60年代初期出现第一代OCR产品开始,经过30多年的不断发展改进,包括手写体的各种OCR技术的研究取得了令人瞩目的成果,人们对OCR产品的功能要求也从原来的单纯注重识别率,发展到对整个OCR系统的识别速度、用户界面的友好性、操作的简便性、产品的稳定性、适应性、可靠性和易升级性、售前售后服务质量等各方面提出更高的要求。
IBM公司最早开发了OCR产品,1965年在纽约世界博览会上展出了IBM公司的OCR产品——IBMl287。当时的这款产品只能识别印刷体的数字、英文字母及部分符号,并且必须是指定的字体。20世纪60年代末,日立公司和富士通公司也分别研制出各自的OCR产品。全世界第一个实现手写体邮政编码识别的信函自动分拣系统是由日本东芝公司研制的,两年后NEC公司也推出了同样的系统。到了1974年,信函的自动分拣率达到92%左右,并且广泛地应用在邮政系统中,发挥着较好的作用。1983年日本东芝公司发布了其识别印刷体日文汉字的OCR系统OCRV595,其识别速度为每秒70~100个汉字,识别率为99.5%。其后东芝公司又开始了手写体日文汉字识别的研究工作。
中国在OCR技术方面的研究工作相对起步较晚,在20世纪70年代才开始对数字、英文字母及符号的识别技术进行研究,20世纪70年代末开始进行汉字识别的研究。1986年,国家863计划信息领域课题组织了清华大学、北京信息工程学院、沈阳自动化所三家单位联合进行中文OCR软件的开发工作。至1989年,清华大学率先推出了国内第一套中文OCR软件--清华文通TH-OCR1.0版,至此中文OCR正式从实验室走向了市场。清华OCR印刷体汉字识别软件其后又推出了TH-OCR 92高性能实用简/繁体、多字体、多功能印刷汉字识别系统,使印刷体汉字识别技术又取得重大进展。到1994年推出的TH-OCR
94高性能汉英混排印刷文本识别系统,则被专家鉴定为“是国内外首次推出的汉英混排印刷文本识别系统,总体上居国际领先水平”。上个世纪90年代中后期,清华大学电子工程系提出并进行了汉字识别综合研究,使汉字识别技术在印刷体文本、联机手写汉字识别、脱机手写汉字识别和脱机手写数字符号识别等领域全面地取得了重要成果。具有代表性的成果是TH-OCR 97综合集成汉字识别系统,它可以完成多文种(汉、英、日)印刷文本、联机手写汉字、脱机手写汉字和手写数字的识别输入。几年来,除清华文通TH-OCR外,其它如尚书SH-OCR等各具风格的OCR软件也相继问世,中文OCR市场稳步扩大,用户遍布世界各地。
可以说目前印刷体OCR的识别技术已经达到较高水平。OCR产品已由早期的只能识别指定的印刷体数字、英文字母和部分符号,发展成为可以自动进行版面分析、表格识别,实现混合文字、多字体、多字号、横竖混排识别的强大的计算机信息快速录入工具。对印刷体汉字的识别率达到98%以上,即使对印刷质量较差的文字其识别率也达到95%以上。可识别宋体、黑体、楷体、仿宋体等多种字体的简、繁体,并且可以对多种字体、不同字号混合排版进行识别,对手写体汉字的识别率达到70%以上。特别是我国的汉字OCR技术经过十几年的努力,克服了起步晚、汉字字符集异常庞大等困难,单字的识别速度(指在单位时间内所完成的从特征提取到识别结果输出的字数)可以达到70字/秒以上。由于印刷体OCR汉字识别技术已经比较成熟,所以OCR产品被广泛地应用在新闻、印刷、出版、图书馆、办公自动化等各个行业。
专业型OCR产品多是面向特定的行业,即适用于每天需处理大量表格信息录入的部门,如邮政、税务、海关、统计等等。这种面向特定行业的专业型OCR系统,格式较为固定,识别的字符集相对较小,经常与专用的输入设备结合使用,因此具有速度快、效率高等特点,比如邮件自动分拣系统等。
手写文稿的识别直到1996、1997年才开始有产品问世,而且是作为印刷文稿识别产品的一项附加功能提供的。由于人写字的习惯千差万别,实现自由手写体识别相当困难,所以手写体OCR技术的使用领域是联机手写体识别,即人一边写,计算机一边识别,是一种实时识别方式。
二、OCR的基本原理
简单地说,OCR的基本原理就是通过扫描仪将一份文稿的图像输入给计算机,然后由计算机取出每个文字的图像,并将其转换成汉字的编码。其具体工作过程是,扫描仪将汉字文稿通过电荷耦合器件CCD将文稿的光信号转换为电信号,经过模拟/数字转换器转化为数字信号传输给计算机。计算机接受的是文稿的数字图像,其图像上的汉字可能是印刷汉字,也可能是手写汉字,然后对这些图像中的汉字进行识别。对于印刷体字符,首先采用光学的方式将文档资料转换成原始黑白点阵的图像文件,再通过识别软件将图像中的文字转换成文本格式,以便文字处理软件的进一步加工。其中文字识别是OCR的重要技术。
1.OCR识别的两种方式
与其它信息数据一样,在计算机中所有扫描仪捕捉到的图文信息都是用0、1这两个数字来记录和进行识别的,所有信息都只是以0、1保存的一串串点或样本点。OCR识别程序识别页面上的字符信息,主要通过单元模式匹配法和特征提取法两种方式进行字符识别。
单元模式匹配识别法(Pattern Matching)是将每一个字符与保存有标准字体和字号位图的文件进行不严格的比较。如果应用程序中有一个已保存字符的大数据库,则应用程序会选取合适的字符进行正确的匹配。软件必须使用一些处理技术,找出最相似的匹配,通常是不断试验同一个字符的不同版本来比较。有些软件可以扫描一页文本,并鉴别出定义新字体的每一个字符。有些软件则使用自己的识别技术,尽其所能鉴别页面上的字符,然后将不可识别的字符进行人工选择或直接录入。
特征提取识别法(Feature Extraction)是将每个字符分解为很多个不同的字符特征,包括斜线、水平线和曲线等。然后,又将这些特征与理解(识别)的字符进行匹配。举个简单的例子,应用程序识别到两条水平横线,它就会“认为”该字符可能是“二”。特征提取法的优点是可以识别多种字体,例如中文书法体就是采用特征提取法实现字符识别的。
多数OCR应用软件都加入了语法智能检查功能,这种功能进一步提高了识别率。它主要通过上下文检查法实现拼写和语法的纠正,在文字识别时,OCR应用程序会做多次的上下文衔接性检查,根据程序中已经存在的词组、固定的用词顺序,对应的检查字符串的用词字。比较高级的应用软件会自动用它“认为”正确的词语替换错误词语,纠正语句意思。
2.文字识别的几个步骤
文字识别包括以下几个步骤:图文输入、预处理、单字识别和后处理等。
(1)图文输入
是指通过输入设备将文档输入到计算机中,也就是实现原稿的数字化。现在用得比较普遍的设备是扫描仪。文档图像的扫描质量是OCR软件正确识别的前提条件。恰当地选择扫描分辨率及相关参数,是保证文字清楚、特征不丢失的关键。此外,文档尽可能地放置端正,以保证预处理检测的倾斜角小,在进行倾斜校正后,文字图像的变形就小。这些简单的操作,会使系统的识别正确率有所提高。反之,由于扫描设置不当,文字的断笔过多可能会分检出半个文字的图像。文字断笔和笔画粘连会造成有些特征丢失,在将其特征与特征库比较时,会使其特征距离加大,识别错误率上升。
(2)预处理
扫描一幅简单的印刷文档的图像,将每一个文字图像分检出来交给识别模块识别,这一过程称为图像预处理。预处理是指在进行文字识别之前的一些准备工作,包括图像净化处理,去掉原始图像中的显见噪声(干扰)。主要任务是测量文档放置的倾斜角,对文档进行版面分析,对选出的文字域进行排版确认,对横、竖排版的文字行进行切分,每一行的文字图像的分离,标点符号的判别等。这一阶段的工作非常重要,处理的效果直接影响到文字识别的准确率。
版面分析是对文本图像的总体分析,是将文档中的所有文字块分检出来,区分出文本段落及排版顺序,以及图像、表格的区域。将各文字块的域界(域在图像中的始点、终点坐标),域内的属性(横、竖排版方式)以及各文字块的连接关系作为一种数据结构,提供给识别模块自动识别。对于文本区域直接进行识别处理,对于表格区域进行专用的表格分析及识别处理,对于图像区域进行压缩或简单存储。行字切分是将大幅的图像先切割为行,再从图像行中分离出单个字符的过程。
(3)单字识别
单字识别是体现OCR文字识别的核心技术。从扫描文本中分检出的文字图像,由计算机将其图形、图像转变成文字的标准代码,是让计算机“认字”的关键,也就是所谓的识别技术。就像人脑认识文字是因为在人脑中已经保存了文字的各种特征,如文字的结构、文字的笔画等。要想让计算机来识别文字,也需要先将文字的特征等信息储存到计算机里,但要储存什么样的信息及怎样来获取这些信息是一个很复杂的过程,而且要达到非常高的识别率才能符合要求。通常采用的做法是根据文字的笔画、特征点、投影信息、点的区域分布等进行分析。
中国汉字常用的就有几千,识别技术就是特征比较技术,通过和识别特征库的比较,找到特征最相似的字,提取该文字的标准代码,即为识别结果。比较是人们认识事物的一种基本方法,汉字识别也是通过比较找出汉字之间的相同、相似、相异,把握其量和质的关系,以及时间与空间的关系等。对于大字符集的汉字一般采用多级分类,多特征、全方位动态匹配求相似集,以保证分类率高、适应性强、稳定性好;细分类重点在于对相似集求异匹配、加权处理、结构判别,定量、定性分析,以及前后联接词的关系,最后进行判别。汉字识别实质上是比较科学或认知科学在人工智能方面的应用,其关键技术是识别特征库。计算机有了这样的一个特征库,才能完成认字的功能。
在图像文档的版面中,除了有文字、图片,有时还会有表格存在,为了使识别后的表格数字化,需要在版面分析过程中,对表格域进行特殊的处理,它包括对表格线的结构信息的提取,对表格内文字域的分检,完成对表格线和对文字域的识别,并根据表格线的数字化生成不同的文件格式。由于文档中的表格随意性大,格式多样,有封闭式的,也有开放式的,特别是表格中的斜线,给表格分析造成一定的困难。
(4)后处理
后处理是指对识别出的文字或多个识别结果采用词组方式进行上下匹配,即将单字识别的结果进行分词,与词库中的词组进行比较,以提高系统的识别率,减少误识率。
汉字字符识别是文字识别领域最为困难的问题,它涉及模式识别、图像处理、数字信号处理、自然语言理解、人工智能、模糊数学、信息论、计算机、中文信息处理等学科,是一门综合性技术。近几年来,印刷汉字识别系统的单字识别正确率已经超过95%,为了进一步提高系统的总体识别率,扫描图像、图像的预处理以及识别后处理等方面的技术也都得到了深入的研究,并取得了长足的进展,有效地提高了印刷汉字识别系统的总体性能。清华大学在此方面的研究成果突出,已经成为世界上的最具权威的机构之一。目前,清华紫光的全系列扫描仪中都配装了清华OCR千禧版软件,它在识别率、表格识别甚至规范手写体的识别方面,均达到了较高水平。
三、OCR文字识别技巧
在最近几年中,OCR识别技术随着扫描仪的普及得到了飞速的发展,扫描、识别软件的性能不断强大并向智能化不断升级发展。但是要想快速地获取正确的扫描结果,得到高效率的文字录入,必须认真学习有关知识,结合实践经验,摸索出自己的全套解决方案。有时我们在作文字识别工作时识别率非常低,根本达不到软件所说的95%以上,请先不要责怪硬件或软件,其实这是没有掌握好扫描及OCR识别技巧的原因。
下面是文字识别操作中经常用到了一些方法和技巧。
1.分辨率的设置是文字识别的重要前提。一般来讲,扫描仪提供较多的图像信息,识别软件比较容易得出识别结果。但也不是扫描分辨率设得越高识别正确率就越高。选择300dpi或400dpi分辨率,适合大部分文档扫描。注意文字原稿的扫描识别,设置扫描分辨率时千万不要超过扫描仪的光学分辨率,不然会得不偿失。下面是部分典型设置,仅供参考。
(1)1、2、3号字的文章段,推荐使用200dpi。
(2)4、小4、5号字的文章段,推荐使用300dpl
(3)小5、6号字的文章段,推荐使用400dpl
(4)7、8号字的文章段,推荐使用600dpi。
2. 扫描时适当地调整好亮度和对比度值,使扫描文件黑白分明。这对识别率的影响最为关键,扫描亮度和对比度值的设定以观察扫描后的图像中汉字的笔画较细但又不断开为原则。进行识别前,先看看扫描得到的图像中文字质量如何,如果图像存在黑点或黑斑时或文字线条很粗很黑,分不清笔画时,说明亮度值太小了,应该增加亮度值在试试;如果文字线条凹凸不平,有断线甚至图像中汉字轮廓严重残缺时,说明亮度值太大了,应减小亮度后再试试。
3.选好扫描软件。选一款好的适合自己的OCR软件是作好文字识别工作的基础,一般不要使用扫描仪自带的OEM软件,OEM的OCR软件的功能少、效果差,有的甚至没有中文识别,经过比较,我认为清华紫光OCR2003专业版和尚书OCR6.0文本自动识别输入系统的识别能力与使用功能更突出一些。再选一个图像软件,OCR软件不是有扫描接口吗?为什么还找图像软件?第一,OCR软件不能识别所有的扫描仪;第二,也是最关键的,利用图像软件的扫描接口扫描出来的图像便于处理;一般选用PHOTOSHOP。
4.如果要进行的文本是带有格式的,如粗体、斜体、首行缩进等,部分OCR软件识别不出来,会丢失格式或出现乱码。如果必须扫描带有格式的文本,事先要确保使用的识别软件是否支持文字格式的扫描。也可以关闭样式识别系统,使软件集中注意力查找正确的字符,不再顾及字体和字体格式