3 汉字光符阅读器——印刷汉字识别
3.1 从超市收款机说起
“光符阅读器”全称是光学字符阅读器,其英文缩写是OCR (Optical Character Reader,简记为OCR)。它是指将印写在纸上的字符借助光学方法变换为电信号后,用计算机进行自动识别(阅读)的装置。
光符阅读器的类型很多,用途也很广,和我们每个人的日常生活与工作都有直接或间接的、千丝万缕的关系。到超市购物,付款时收款员把货物在收款台上一个发亮的小窗口照一照,或者用一支手提扫描仪在货物上“扫”一下,随着“吱”的一声,货物上的“条码”便被光符阅读器所识别,把品名、价格和其他数据记录下来。这种用于识别条码的装置叫做“条码识别器”。显然,这种收款方式十分方便、快捷、准确。收款员可以不必牢记成千上百种货物的名称和价格,也不必敲键盘,既减轻了负担,又提高了效率。可以毫不夸张地说,如果没有这种自动记账收款的光符阅读器,巨型的超级市场是难以在商场上生存的。还值得指出的是:如果把光符阅读器输入的销售数据再用计算机进行统计、分析,则不但可以迅速得出有关营业额的各种数据,有时还可能获得意想不到的结果。读者会记得本书第1章谈论过轰动国际棋坛的“人机大战”。棋王卡斯帕洛夫战败后很不服气,多次希望能跟“深蓝”计算机再做另一次决斗。但是“深蓝”负责人谭崇仁和许峰雄两位工程师明确表示,他们研究“深蓝”的真正目的不是为了下棋,而是探索如何利用“并行处理”方法解决复杂问题。他们举了一个浅显而有趣的例子来说明“并行处理技术”在处理大量数据时的强大功能。这个例子说的是“一家超市的分析员用电脑分析超市产品搭配出售的规律,其中有一个结果竟是:顾客在买尿布的同时有极大的几率买啤酒。继续分析发现,这种现象大多发生在晚上6点钟前后。分析员对这种情况茫然不解,反复思索无法得出合理解释,最后亲自跑到超市观察,结果发现,原因是有一些家庭,妻子在家发现小孩的尿布不够了,请丈夫下班回家顺便到超市买,丈夫则顺便买了一些啤酒回家。从此,这家超市的尿布区总摆一些啤酒,方便买尿布的先生们”。谭崇仁工程师举这个例子是为了说明具有并行处理功能的大型计算机在处理大量数据时比人脑好使。但它也表明:收款机的条码识别器也是处理系统的一个重要环节,计算机要先输入大量的数据,才能进行处理,否则就成为无米之炊。
印刷汉字识别系统是光符阅读器的一种。它的用途也是借光学方法把方块汉字图形变换为电信号、经识别后自动地录入计算机,为后者提供进一步处理的资料。
汉字录入原来是中文信息处理的瓶颈,曾经是计算机能否在我国广泛应用的“拦路虎”。20世纪80年代以后汉字键入和笔输入(联机手写汉字识别系统)研制成功并付诸实用,汉字录入问题在一定程度上得到解决。但是这两种方法都是人工录入,费时费力,对于已写好的手稿或印刷材料,特别是大量报刊及古往今来的典籍,人工录入不但速度慢、效率低,而且要花费大量人力。利用脱机汉字识别系统(即光符阅读器)自动录取,可以得到事半功倍的效果。就如超市收款员用“条码识别器”那样,只需“举手之劳”,就可以把大量的汉文信息录入计算机,然后按需要进行相应的中文信息处理,如机器翻译、摘要提取、建立中文数据库,以及在网上发布信息等等。这种类似的装置也可用于邮局信函自动分拣,或用于银行的统计作业等方面,既节省大量人力,也提高处理速度。它是现代信息领域具有广泛应用价值的技术装备之一。
3.2 脱机汉字识别的困难
脱机汉字识别的工作原理大体上和收款机的条码识别器相同,都是先把印在纸上或货物上的符号变换为电图像信号,再进行处理、识别。但是汉字识别的识别对象种类(字量)更多,结构也更复杂,因而识别系统必须考虑的问题更多,困难更大,曾经被认为是模式识别领域最为困难的问题之一。经过国内外科技工作者30多年的艰苦努力,近几年来才得到较好的解决。
首要的问题是:汉字识别的对象是几千个(种)方块汉字。从模式识别的观点上说,这是一种超多类的模式集合,已有的适用于模式类别较少的识别方法和理论已不完全适用。具体地说,计算机认某汉字时应把这个汉字跟字典中每个标准汉字逐个比较,找出其中最相似的字作为识别结果,汉字字量越多,认字的速度越慢。如果识别速度过低,不能满足实际应用的要求,使用价值就不大。这是超多类模式识别的重要问题之一。通常这个问题可以采用多级分类的办法来解决:先按某种准则把所有汉字分成若干个子类(叫做候选类),再把待识汉字跟它所属子类中的每个标准汉字匹配比较,求得最相似的标准汉字。由于各个子类中的汉字字数较少,识别速度可以提高。这种方法和通常查字典相似:先按部首分类,再找所需的单字,而不必从头到尾把整个字典查一遍。
但是,上述先粗分类的办法在汉字识别中也有困难。原因是:如果粗分类发生错误,就一定得不到正确的结果。这和查字典的道理也是一样的。通常汉字的部首也很难找,部首找不到或者找错了,要查的字就难以找到。识别速度和识别率(质量)是一对天生的矛盾,速度提高了,质量很容易受到影响。在类别很多的汉字识别系统中这个问题尤为突出
汉字识别中遇到的另一个困难是字体多。其实对于人来说,字体不同,特别是印刷字体不同,对认字似乎并没有什么影响。因为不同字体的同一个印刷汉字,其拓扑结构绝大多数是相同的,只是笔画粗细、形态、长短及位置略有差异而已。但是,现代计算机的智能并不高,还没有“去粗存精、去伪存真”的能力,往往把不同字体的同一个汉字看做是不同的字。在汉字识别系统中为了解决这个问题,不得不在字典中采用多模板的方法,把不同字体的同一个汉字用几种标准模板来代表;对某个汉字进行识别时,只要其中一种标准模板和待识字最相似,就判决为所需的汉字。显然这是一种比较笨拙的办法,其影响是增加了字典中的模板数量,这相当于增加了识别系统的字数。既增加了系统的复杂性,又降低了识别速度。汉字识别系统所应识别的字数本来就很多,由于字体不同使实际的识别字典容量成倍地增加,困难很大。显然解决这个问题的较好方法是努力提高计算机的“智能”,精心选择用于识别的特征,使其适用于多字体的汉字识别。这是本书将要讨论的主要问题之一。
汉字识别的另一个突出困难是:结构复杂,相似字又很多,这也是一对矛盾,已有的结构识别法和统计识别法都难以很好地解决所有汉字的识别问题。采用结构法可以照顾到汉字字形中的细微结构,有利于相似字的识别,但它却容易受干扰的影响,即抗干扰性能差。统计法的特点与此相反。
手写字的字形问题更多,本书第2章“笔输入”对此已有.所论述。但脱机手写汉字识别的问题跟联机识别不完全一样,后者在输入汉字字形时已由书写板在书写过程中将各笔画逐一分开,脱机手写汉字识别的识别对象仍是方块汉字的二维图形,同一个字不但字形不尽相同,拓扑结构也可能不一样(参看图2.2),因而困难更大。为了区分手写汉字的工整程度,目前我们把它分为两种类型,一种叫做“限制性手写汉字”,要求用户书写工整,尽量做到笔画横平竖直,不连笔。另一种是“非限制性手写汉字”,用户可以按自己的习惯书写,不受限制或少受限制。这种字体大体上相当于行书和草书。日常生活中有的人书写相当潦草,有的字甚至很有文化素养的人也不一定能看懂,让计算机识别就更是难之又难。因此当前联机手写汉字识别研究,还限于对“限制性手写汉字”的研究。此外,所谓“限制性”的提法过于笼统。为了研究工作的需要,国内外有关单位编制了一些“手写汉字库”,这一问题在第4章“脱机手写汉字识别”中再作讨论。
汉字识别还有一些其他的问题。第一,我国的出版物虽然以汉字为主,但经常也有西文、日文和各种数码符号。不同文字符号混排在同一页面上,必定会使识别难度大大增加。其次,印刷质量对识别结果也有直接影响。实践证明,好纸铅印的书刊,其识别率大都可以在99%以上,印刷质量差的文件识别率显著下降。目前由于传真机广泛使用,对识别传真材料的要求越来越迫切,但传真文件的质量较低,识别率很难提高。这是我们进一步扩大脱机印刷汉字识别的应用领域所必须解决的另一课题。
汉字识别的研究范围及其困难程度可以用图3.1的三维空间来表示。图中三个坐标分别是文字数量、文字类型和版面质量。三维空间上的每一点代表该处的识别难度。显然离开原点越远,研究难度越大。例如版面质量差的脱机手写汉字识别难度最大,因此我们将专辟一章来讨论这个问题。
3.3 汉字OCR系统的构成
第1章中我们简要地介绍了汉字OCR的工作原理。作为一个实用的汉字识别系统,应该考虑的问题还很多。这些问题主要有:如何把印(写)在纸上的方块汉字送入计算机?计算机能否同时识别印在同一页面上的成百上千个大小不同的汉字?如果不能,必须怎样处理?更重要的问题是:怎样建立识别字典?在建立好字典之后,怎样利用它来进行识别?识别结果如何输出?如果识别中有错误,能否自动纠正,如何纠正?等等。
上面列举的问题非常具体,也十分重要。但是在这一章中我们还不能全面、详尽地给予回答,只能进行一些原则性的讨论,使读者对汉字OCR的基本构成和工作原理有进一步的了解。
按照上面所列举的问题,一个汉字识别系统大体上可分为输入、预处理、识别、后处理和输出共五个部分,如图3.2的框图所示。本章着重讨论预处理,识别和后处理三部分的作用和工作原理。
1)预处理模块
脱机汉字识别系统的对象是印(写)在纸上的文字。它的输入装置可以是扫描仪、传真机、一般摄像机或数字相机等。这些输入装置通常把印在纸上的图文整页地输入计算机。“预处理”的主要作用不但要把页面上的图文分开,还必须把所有文字逐个分离。图文分离的问题留在第5章去讨论,这里先讨论行、字切割。
我们曾反复指出:计算机的主要特点是处理速度快,但智能不高。它“阅读”书面材料不能“一目十行”,只能一个字一个字地辨认,因而对输入计算机的文本需进行“行切割”和“字切割”。
图3.3和图3.4分别给出行切割和字切割方法的示意。图3.3(b)是被识别的文字片段,共八行,图3.3(a)是各行文字在水平方向的投影。在正常情况下,各行文字的投影之间有一空隙。利用这些间隔可以实现行切割,把各行文字分开。同理把每一行文字向垂直方向投影也可以得到如图3.4的投影图。汉字通常是矩形,彼此间有间隔,因此利用各行的垂直投影进行字切割也不困难。但是如果汉字和数码、特别是和西文拼音文字混排时,汉字和它们的切分就比较麻烦。这个问题以后将再讨论。
应该指出:在同一页面上的印刷汉字可能有大小不同的字号,其点阵图像的大小也不相同。归一化模块的作用就是使它们大小划一。通常归一化为128×128,96×96,64×64点阵等等。如果归一化的方法不够好,归一化后的点阵图形将有失真,对识别性能将有影响。字、行切割和归一化等处理属于识别系统的预处理工作,经预处理得到各个单字之后,才可以进行识别。
2)识别模块
前面讲过,正确识别率、识别速度和设备复杂性是汉字识别系统的三个基本指标,它们有着彼此相关但互相矛盾的联系。当前计算机的“智能”不高,识别方法还较“笨拙”。对某一待识字进行识别时,一般必须将该字按一定准则,与存储在机内的每一个标准汉字模板逐一比较,找出其中最相似的字,作为识别的结果。显然,汉字集合的字量越大,识别速度越低。为了提高识别速度,常采用树分类,即多级识别方法,先进行粗分类,再进行单字识别。因此图3.2中的识别模块包含粗分类和单字识别两部分。粗分类的作用是把整个汉字集合划分为若干个较小的子集,叫做候选集。有时有的候选集中的字数较多,还可以进行第二次粗分类,使候选集的字数进一步减少。这样的识别方法通常叫做树分类法,它好像是一棵树,整个汉字集合是树根;然后有树干和树枝,最后的树叶就是单字(图3.5 )。顺便指出,这种具有多层分类结构的识别方法,对粗分类特征的要求更高,因为如果粗分类错误,影响很大。这和查字典一样,如果部首错了,想查的字一定查不到。这个问题以后还会讲到。
3)后处理模块
后处理模块的作用是对单字识别器的输出进行校对、纠错,以提高整个系统的正确识别率。
后处理纠错方法可以是人工的,也可以是自动的。
人工校对方法一般需对识别输出的文字从头至尾地阅看;检出错识的字,再加以纠正。这样做效率很低;为了提高人工纠错的效率,在输出的显示器中往往把错识可能性较大的单字用特殊颜色加以标示,以引起用户注意,同时把输入文件的相应部分显示在屏幕上,以便用户对照校正。自动检错是理想的方法。这种方法对拼音文字比较适宜。目前的文字处理器一般都附有这种自动检错装置,以校正拼写错误(Spelling Check).汉字识别系统原则上也可以利用汉语的组词规律和上下文关系来发现并纠正识别中的错误。但由于汉语的构词规则相当灵活,很不规范,目前采用这种方法来实现后处理自动纠错还有困难。这个问题在第5章中将再讨论。
上面扼要介绍了脱机汉字识别系统的构成及各模块的作用。下面各节将介绍几种典型的汉字识别系统,着重讨论选择识别特征的原则和提取方法,并比较它们的优劣,最后介绍国内外有关研究工作的进展和我国所做成果和贡献。
3.4 第一个实验性印刷汉字识别系统
印刷汉字识别研究于20世纪60年代逐渐受到人们的重视。较早从事汉字识别研究的是美日等国的一些大学和企业。IBM公司是信息领域的老牌企业,对人机接口问题尤为关注。上一章中我们已经介绍他们研制的一种笔输入——联机手写汉字识别系统;在脱机汉字识别方面他们也早就开展研究工作。国际上第一篇关于印刷汉字识别研究的论文就是该公司两位学者R.Casey和G.Nagy撰写的。1966年他们在IEEE"电子计算机”杂志EC发表了一篇关于印刷汉字识别研究的文章,序言中着重谈论了研究这个问题的原因。他们说:“中国正在迅速发展成为出版大国之一。对于关注中国各种活动的美国翻译人员来说,把中文资料翻译成英文已成为越来越艰巨的任务”。他们接着说:“据审慎估计,1962年的汉英翻译约为350万字,而情报部门当年的预测是3440万字,这个数字今后每年还将以25%的速度递增,即约每三年翻一番”。为了适应这种情况,该公司当时就成立了一个情报小组,专门从事收集、研究中国的出版资料、并制订有关汉字识别和汉英翻译的研究计划。这种深谋远虑的周密安排和对基础研究的重视,是值得我们认真学习的。
Casey等在文章序言中特别强调汉字自动输入的重要性。他们指出,如何把大量的中文资料变换为便于计算机处理的编码是最大的障碍。当时的中文打字机每分钟只能录入12个汉字,远远低于英文打字速度。因此,即使英汉翻译的问题解决了,包括汉字录入在内的整个翻译系统还只是一个有“残疾”的系统。毫无疑问,汉字自动录入是一个极其迫切的必须解决的问题。20世纪60年代那些岁月,我们的矛盾很多,无暇顾及科研的事,有的人甚至对汉字是否有存在的价值也提出疑问。相反,国外不少有识之士对中文及中文信息处理的重要性却十分重视。这种远见卓识,值得我们深思。
书归正传,下面就来介绍IBM研制的印刷汉字识别系统,以及与此有关的一些问题。
Casey等用于汉字识别研究的汉字只有1000个,是纽约一家印刷公司提供的仿宋体(单体)印刷汉字。每个字各有20个样本,其中10个样本用于制作“字典”,叫做“训练样本”;10个用作试验,以评定系统的优劣,叫做“试验样本”。为了提高识别速度,系统采用三级:前两级为粗分类,第三级是单字识别。因此识别系统的字典需要用两种粗分类特征和一种单字识别特征,分别用于第一、第二级粗分类和最后的单字识别。
方块汉字是由笔画组成的象形文字,含有丰富的结构信息。汉字识别研究初期,以笔画为基元的结构识别法是一种较常用的方法。1929年G.Tausher“阅读机”的掩模就是直接根据字符而制成的,也是采用了结构识别法。但是汉字笔画多,结构复杂,字数也很多,直接用汉字的点阵字形(笔画、部首或单字)来制作模板时,字典的数据量将十分庞大,这在当时的技术条件下是难以实现的,必须设法对特征的数据量加以压缩。这个问题,今天仍然存在。和30年前相比,当前计算机的水平虽然已大大提高,存储器的容量也呈数量级地增大,但是在保证识别系统性能要求的条件下,尽量压缩字典的数据量,以降低整个系统的复杂性和成本,并提高识别速度,仍然是应该努力的方向。
如何设计字典的模板是Casey等研究工作重点之一。当时他们所采用的方法在原理上基本跟Tausher阅读机的模板法相同,属于典型的结构识别法。用于第一级粗分类的特征跟一般字典的部首相同,也叫做部首。他们提出一种叫做“窥视孔”的办法来压缩模板的数据量。
其设计方法是:将部首相同的10个标准汉字(训练样本)的点阵图形叠加在一起。假设在同一位置(x,y)上的黑像素数为N,采用其中N值为最大的50个像素点作为该部首的标准模板,图3.6是部首“阝”的模板。第二、第三类模板的设计方法与此相似。在识别时,先用所有粗分类模板逐一跟试验样本的点阵图形进行比较、匹配,以确定该待识汉字属于哪一种候选类。然后再用该候选类的各个单字识别模板,依上法逐字进行匹配,得到最后的单字识别结果。
Casey等设计的字典有三套标准模板。第一套是部首模板,共39种,用来对1000个汉字按部首进行粗分类:最小的候选类有5个汉字,最大的有60个汉字,不属于这39种部首的汉字还约有300个;Casey等用第二套粗分类模板,把这300个字又分为25类。因此1000个汉字可分为64个候选类,每一子类中的汉字都较少、便于提高单字识别速度。第三套模板是单字识别模板,每个汉字各有各的识别模板,共有1000种。单字识别时只需对候选类中的字逐个加以比较匹配,就可以找出相同(或最相似)的字作为识别结果。
Casey等研制的汉字识别系统对1000种汉字(共5000个样本)的试验结果是:正确识别率为91.8%,误识率为1.2%,拒识率为7%,识别速度为3400字/分,这在30年前是相当满意的结果。他们提出的识别系统的构成框架(包括粗分类、单字识别,以及分类模板的提取与匹配、判别等)基本上也是合理的。由于条件限制,他们所用的汉字较少,提取样板的方法也比较烦琐,因此,当字量增大,字体不同或汉字点阵图形有位移时,这种简单的模板匹配法就很难适用。识别字典是所有模式识别系统的核心。近20多年来,我国学者在汉字识别研究工作中取得的成果,主要是我们能更好结合方块汉字的特点,选用一些好的特征(模板),大大提高了识别系统的性能,使它适应实际情况,达到实用化的要求。
IBM公司是信息产业的巨擎,虽然未见有汉字识别的产品问世,但近年来在汉语话音识别方面却已取得突破性的进展,以Via Voice为商标的汉语连续话音识别软件已开发成功,其产品已在我国大量销售。这种软件不但能识别我国的普通话,也能识别上海话、广东话等方言,识别率达90%,是一种较为理想的汉语录入手段。我国研究话音识别的单位为数不少,时间也较长。近年来,在连续话音研究方面有些单位也已取得很好成果,技术上处于国际先进行列,但迟迟未能转化成实用产品。目前我国话音录入市场,几乎由IBM公司所独占。这种情况是令人担心的。
3.5 能识别6763个印刷汉字的系统
1986年11月我们研制成功一个采用结构特征、能识别GB 2312-80《国家标准信息交换编码——基本集》的6763个宋体汉字的实验系统。这是我国在汉字识别研究工作的第一次突破。识别字数多达6763个的情况,当时还无先例。初战告捷,对我们是极大的鼓舞。
日本也是使用汉字的国家,技术发达,对汉字识别的研究较早。1977年东芝公司宣布采用专用大型机,研制成功能识别2000个印刷汉字的系统;1985年8月日本电话电报公司(NTT)又宣布制成4000个多体印刷汉字识别系统,输入样张采用专用OCR纸印刷,售价3550万日元。这大体上代表了当时国际上汉字识别研究的水平。由于日本使用的汉字字量较少(教学用字881个、日常用字为1850个,标准字2669个),他们研制的系统的识别字数不多,适合于他们的需要,却较难直接为我所用。我们必须识别的汉字字量,比日本多2~3倍,是一种超多类模式识别。实践证明,能用于模式类较少的识别特征,不完全适用于我国的情况。更有甚者,当时我们使用的是和IBM-XT差不多的长城0520机,内存小、速度低,跟日本的专用大型机相比,真是大巫小巫之别。“杀牛只有鸡刀”,似乎难于想象。但是,我们是汉字的祖国,对它最为了解,应该最有责任和能力解决汉字识别以及各种中文信息处理的问题。事实也证明我们能够解决这些问题。经过短短几年的努力,1986年我们终于研制成功一个能识别6763个汉字(国标GB2312-80的两级汉字)的系统。在此期间,哈工大、清华计算机系和沈阳自动化所也分别研制成功国标一级3755个汉字的识别系统,总参通信部和中科院自动化所合作研制的联机手写汉字识别系统也宣告成功,并付诸应用。从此我国汉字识别研究终于在国际上占有一席之地,为境内外同行所瞩目。
6763个单体印刷汉字识别系统研制成功,在我国汉字识别研究的发展历程中具有一定的代表性。图3.7是该系统的框图。待识别文件逐页由扫描仪输入计算机,然后,用投影法确定每一行和每个字的位置,进行“行分离”和“字分离”。这种方法用于方块汉字识别比较简单,文件页面发生倾斜时所产生的旋转失真也很容易校正。
本系统采用结构识别方法,其原理图如图3.7所示。系统共有三级,前两级为预分类,第一级按汉字边框特征把6763个字分成21大类,第二级按汉字局部特征把每一大类分别再分为若干小类。每一小类的字数较少,便于提高单字匹配、识别的速度。
单字识别特征库中存储着每个汉字的端结点特征(单字识别模板)。当待识字X的特征F和参考模板S的相似度为最大时,即判定X为模板S所对应的字。识别结果可打印输出,或以指定的编码存储在计算机中。待识字的图形和识别结果分别显示在屏幕上,两相对照,可立即判定识别是否正确。
如何选择识别特征,使系统在以0520机为主机的条件下,具有较高的识别率和识别速度,是我们研制工作成败的关键。
为此,我们在借鉴国内外已有识别方法的同时,特别注意研究方块汉字的结构,力求从中取得较好的特征。我们认为:其一,采用部首(边框)特征把6763个汉字的集合先粗分为若干个较小的候选集是较好的方法,但Casey等所用的部首较少,提取也很麻烦,必须加以改进。其二,由于本系统的汉字字量多达6763个,经第一次粗分类后各子类的字数仍然较多,必须加以细分,使候选类字数进一步减小,才能保证识别速度进一步提高。其三,利用端结点进行单字识别,虽然前人已证明是一种较好的方法,但仍须进行大量优化工作,以减小特征库的容量。基于上述三点,经过分析试验,我们提出三种反映汉字结构规律的特征来实现汉字的预分类和单字识别:
1)边框特征(部首)及第一级预分类
人认字的过程大体上是由外及里,从粗到细,逐步分析、
比较、鉴别,然后确认待识的字。例如对“回、四、囚、围”、“队、限、除、陪”、“艾、芝、若、苹”、“邓、那、邯、部”等字,一般是先找出它们“边框”的偏旁、部首,再区分它们的局部结构和细节。根据这种想法,我们选择反映汉字四边结构的边框特征,作为第一级预分类的参量。利用部首把众多的汉字加以预分类,便于检索查找,是一种传统的、行之有效的提高查字速度的方法。但是我国字典的部首很多,有的比较简单,有的非常复杂,规律性也不强,直接采用一般字典的部首作为特征是不合适的。我们在对边框结构进行仔细分析之后,定义了20种适用于第一级预分类的“部首”。这些“部首”可以分为三种类型。一种跟字典的部首相同,如“亻”、“土”、“艹”等;另一种则跟字典部首相似,如“礻”、“衤”合并为一种部首,不加区分;第三种“部首”则是将字典的部首简化,去掉其中影响不大的笔画,或只取具有特点的部分,例如把原来的“雨”、“西”等部首简化为“一”部。
按照上述办法选取的边框特征,不但提取方便,而且可靠性和稳定性都很好,预分类所有各子类的字数分布也比较均匀。但第一级分类后,每一大类的字数仍有几百个,这是超多类模式识别共同的困难问题。这个问题需再用第二级预分类加以解决。
2)局部特征和第二级预分类
如何选用第二级分类的特征是一个困难的问题。经过对方块汉字结构进行细致的研究,我们发现,汉字有一些局部结构,可以作为第二级分类的特征,这种特征是由横竖笔画组成的简单图形,如“口、日、汗、田”等,共8种。
利用局部特征进行第二级分类,可以把不同部首的每一类汉字,再细分为若干小类,每一小类的字数大大减少。其中最大一个小类的字数有177个,最小的是4个,这是相当满意的结果。
3)端点、结点特征和单字识别
本系统的第三级是单字识别。按照“从粗到细”的认字过程,我们选择反映汉字细节结构的笔画端结点作为识别匹配的参量。这种端结点共13种。每个字的笔画及相互关系,都可以用这些端结点来表示。在设计单字识别模块时,对这些端结点应加以优选,在保证足够高的正确率条件下,尽量减少其数目,以减少特征库的容量和匹配的计算量。
本系统端结点特征库的容量约为500kB,比6763个汉字(每个字为40×40点阵)的库容量约少2/3。
采用上述结构特征研制成功的汉字识别系统,能识别国标6763个宋体印刷汉字,正确识别率达98%;对一些字形相似的字,如“巳已己”等,也能正确识别;但识别速度还较慢,用长城0520计算机作为主机时,每分钟只能识别30个字左右,低于当时用键盘输入的速度。但是,无论如何,这是我们第一个研究成果,而且是一个识别字数达6700多个汉字、接近实用化的成果,这大大加强我们的信心。之后,又经过三年的努力,终于使我们研制的产品达到实用要求,初步解决了把汉字印刷文件自动、高速地输入计算机的难题,成为“建立汉字数据库三大技术装备之一”;再后,又经过几年的艰苦奋斗,以TH-OCR为注册商标的印刷汉字识别系统被评为1994年全国十大电子科技成果之一。其产品远销海内外,包括美欧各国。我们为中国在信息科技领域中占领汉字识别这一阵地争得了一份荣誉。
3.6 让汉字光符阅读器变得更聪明—关于多体汉字识别
上两节介绍的汉字OCR采用的都是“结构识别法”。这种方法的工作原理简明易懂,也反映了方块汉字的特点。但汉字结构复杂,脱机识别时笔画提取很不容易,抗干扰性差;当质量较差的印刷品中的汉字出现笔画粘连或断裂时,容易造成笔画提取错误;由于采用按层次顺序串行的判决方法,依次对各个子任务进行认别,故任何一次误判都将把整个判决引入歧途,造成识别错误。这是结构法主要缺点之一。
1986年我们研制成功能识别6763个宋体汉字识别系统之后,就发现这一系统很难推广用于其他的字体,特别是楷体的识别。它似乎还比较“笨”,不能“举一反三”。用于识别楷体印刷汉字时,识别率显著下降,只有80%左右。对这个问题我们曾反复进行分析研究,终于对问题有所认识。一方面,原来用于识别6763个汉字的系统是针对宋体汉字的字形进行训练的,识别特征的选择与优化较适合于宋体的情况。楷体汉字的拓扑结构虽然和宋体相同,但它们的形态有较大差异:宋体字的笔画横平竖直,楷书笔画则具有一定的弧度,笔画提取比较困难。
怎样才能使汉字OCR变得更“聪明”,能“去粗存精,去伪存真”,既能识别宋体字,也能认识其他字体的汉字呢?从技术上说,识别系统能否只用一个“字典”就可以识别几种不同字体的汉字呢?在20世纪80年代这是一个有争论的、困扰我们的难题,是汉字OCR走向实用化道路上的巨大障碍。如果这个问题不能很好解决,那么汉字OCR就很难在实际上推广应用。
当时解决这个问题有两种截然不同的策略。
一种想法是:在一个汉字OCR中设置若干个字典,分别用于识别不同字体的单字。因此对文件中的文字进行识别时,要先识别待识汉字的字体,再调用相应的字典对它进行识别。这种方法曾用于某些英文OCR,取得较好的效果。据说英文字母的字体有1700余种、各种字体的差别也较大。有大写与小写,拉丁体与希腊体等等。字体不同的字母,不但笔画形态不同,其拓扑结构也不一样,因而英文OCR系统采用先识别字体、再用相应的字典来识别字母的方法是合适的。汉字的情况不太一样。我国主要的印刷字体有宋、仿宋、黑和楷体四种,它们的拓扑结构是相同的,只是笔画粗细和形态等不太一样而已。因此不但汉字字体的识别相当困难,从设备复杂性的观点看也不恰当,采用多字典识别方案时,每种字体都需用一套识别字典和相应的匹配判决机构,这显然是很不合算的。
解决这一问题的另一途径是:采用单一字典来识别多种字体的汉字。我们提出这种策略是有根据的,也是可行的。这是因为,前面多次提到:各种字体同一个印刷汉字的拓扑结构是相同的,只是笔画的形态、粗细、长短和位置略有差别而已。只要我们能够找出这些细小差异的变化规律,建立相应的方块汉字图形的模型,并找出描述该模型的特征,就能够制成可以识别多体汉字的字典,并保证识别系统具有足够高的识别率。
基于这种思想,我们把形态多变的汉字笔画分为形态基本不变的笔段(叫做结构元),每一笔画由若干结构元组成。在单字中各结构元之间有一定的统计关系:同一笔画的结构元彼此的相关性最强,部首相同但笔画不同的结构元的相关性次之,不同部首中的结构元的相关性最小。这些关系可以由实验方法求得,并以相关系数来表示。这样,方块汉字的图形便可以用结构元及其统计关系来描述。
上述方法较好地描述方块汉字图形的结构,特别是汉字内部的结构。但是实践表明,只用一种特征来识别印刷汉字的识别率还不高。这是因为,只用一种特征很难全面反映所有汉字的特点,它所能利用的汉字信息量还有限。任何一种特征都有一些识别“死角”,即利用该特征仍难区分的汉字。解决这个问题的办法是选择另一种特征,其识别能力恰好和前一种特征“互补”。在我们的识别系统中我们发现,方块汉字的周边包含有很丰富的信息,可以用来作为识别的特征。基于这一概念,我们提出一种由“微结构特征”和“周边结构特征”组成的新特征,加以优化,并把它叫做“组合优化特征”。采用这种组合特征,顺利地解决了多体汉字识别问题,即只用一个特征库就可以识别多体汉字。在工作中我们进一步认识到:不同字体的汉字图形有所不同,实质上可以认为相当于某种字体的图形加上一定的干扰。从这一观点出发,我们又进一步加以深入研究,调整特征库的特征,使识别系统在能够识别多体汉字的同时,还具有更高的抗干扰能力。从某种意义上说,经过改进后的识别系统的“智能”有所提高,在一定程度上能够“去粗存精、去伪存真”,变得更为“聪明”了。
技术上精益求精、系统性能不断改进完善,使其更满足实际应用的要求,是我们科技人员努力的标的;对于汉字识别来说,力争这方面的研究工作由中国人自己更好、更快地完成,更是我们的职责。多体汉字识别问题虽然解决了,但摆在我们面前的问题还很多,中西文混排识别就是突出问题之一。随着信息技术的发展,不同语言文化的交流日益增加,这个问题将越来越为突出。经过努力,中西文混排识别问题基本上解决了。我们利用汉字和拼音字母在字形上的差异,不但把它们相互分开,而且可以判定哪一个是汉字,哪一个是英文字母,然后用不同的字典,分别加以识别。图3.8是汉英混排文字切分的例子。其中下面加圆圈字符被确定为英文并加以识别。
目前我国的汉字OCR技术已基本成熟。以清华大学电子工程系研制的“清华文通”公司出品的THOCR 7.5版本为例,其主要性能指标如下:
识别字体 简/繁体汉字的宋体、仿宋体、黑体、楷体、魏碑、小姚等及其变体;十多种流行的英文字体以及数字与标点符号等。
识别字量 简体3755个汉字,繁体5401个汉字及几百个非常用汉字。
识别精度 质量好的简体汉字99.17%;繁体字98.5%;日文98.3%。
识别字号 7号以上。
识别速度 大于100字/秒(主机为PⅡ/233)。
3.7 “研”以致用——把“智能”更高的汉字OCR投入市场
把性能更好的汉字OCR投入市场,实现印刷文件自动、快速地输入计算机是我们始终不渝、为之奋斗的目标。经过约20年的努力这个目标基本上达到了。
我国的汉字OCR研究约始于20世纪70年代末。20年来的研究工作大致上可分为三个阶段。
1)探索阶段(1978~1985)
这一阶段主要是学习和探索。日本也是使用汉字的国家,60年代以后他们在汉字识别方法研究方面做了很多工作,提出了多种识别方法和特征,如粗网格特征、外围特征,笔画复杂指数特征与四周面积编码特征、基于笔画方向的统计特征,以及笔画密度特征等等;1985年以前日本也研制成功几种OCR产品,但是系统容量只有2000个汉字,所采用的是专用计算机,价格昂贵,很难在我国推广应用,他们所提出的特征和识别方法也很难搬用来识别我国的印刷文件。因而在这一历史阶段中,我国科技工作者除了借鉴国外的研究成果之外,主要研究如何根据我国情况,研究适合我国汉字字量更多,字体差别更大的识别方法。在这一历史阶段中,沈阳自动化所,清华大学计算机系、北京信息工程学院郑州解放军工程学院、河北大学、邮电科学研究院、南通电子技术应用研究所和哈尔滨工业大学等单位,都做了很多工作,发表了一些论文,研制了几种模拟识别软件或系统。这些奠基性的研究工作,揭开了我国汉字识别的序幕,为近10多年来的迅速发展打下了很好的基础。
2)发展阶段(1986~1990)
这是我国印刷汉字OCR技术发展的高潮期。在这几年中,我国有11个单位研制的印刷汉字识别系统通过了技术鉴定,提出了多种较适用于我国印刷文件的识别方法和特征,如汉字特征点特征、周边特征、脱壳透视分类法、汉字微结构特征、组合优化特征等等;有的试验系统,能够识别宋、仿宋、黑和楷体,识别字数最多达到6763个汉字、字号从3号到5号,对训练样张的识别率高达98.5%,采用286微机时识别速度达到10~14字/秒。但是这些成果绝大多数仍属于实验室的样品,还不能在市场上付诸应用。特别是对真实文本识别率明显降低,也不能适应实际文件中经常出现的各种不利因素,如印刷质量较差、笔画粘连、断笔、黑白不均、油墨反透等。应该强调指出的是:在这种情况下,有关领导单位的支持和应用部门的合作是极其重要的。1992年原国家科委组织清华大学电子工程系成立了“文通公司”,专门从事汉字OCR的销售工作,有力地把汉字OCR推向市场;同样重要的是,很多用户在我国汉字OCR技术还不过关,其产品仍有不少问题时,积极购买、使用OCR来输入汉字,并经常把工作中的问题向研制单位提出,共同研究改进提高的方法。如果没有上面的领导和应用部门的支持,我国的汉字OCR技术是很难很快发展起来的。
3)走向成熟(1991~)
从90年代开始,汉字OCR技术进入一个关键的阶段:将实验室研究成果推向市场(表3.1列出了当时我国市场销售的主要中文印刷体OCR系统),以更高质量在更宽的领域中推广应用。能否实现这个目标取决于两个重要因素。
其一,作为一个实用系统必须解决诸多实用中必不可少的问题,如版面的自动分析与理解,行、字的正确切分(包括汉西文字的切分),表格处理、后处理纠错,以及良好的人机界面等等。进入90年代以后,在不同的研究单位中对这些问题做了不少研究工作,取得不少进展,在市场中初步形成几种优选的系统,如清华大学电子系的TH-OCR、北京电信工程学院的BI-OCR和沈阳中科院自动化所的SY-OCR等。
其二,是如何进一步提高识别系统的正确识别率。这是问题的核心。当时国内几个单位研制的汉字OCR对实际文本的识别率大多在98%左右,误识率在2%上下,离理想要求10-4~10-5的误识率相差1~2个数量级,如何进一步提高系统性能成为当时各方面关注的焦点。
当时解决这个问题有两种方案。一是采用多系统集成的方法。1993年有关部门将THOCR-94、BI-4F、SY-OCR三个系统集成在一起,构成一个称为“集成OCR”(型号为NI-OCR)的系统,它采用简单的表决方案来确定整个系统的识别结果。实验表明,集成OCR系统的正确识别率有所提高,误识率有所下降,但改善程度只有1%的量级,很难达到表3.1 我国市场销售的主要中文印刷体OCR系统误识率降低至10-3~10-4的目标。更突出问题是:这种方法是以成倍地增加系统复杂性为代价的。从性能/价格比角度看,采用这种集成方案,特别是简单的“投票”方法是不太可行的。
进一步提高识别率的另一种方案是继续在改进识别方法和识别特征方面下功夫,使系统具有足够高的“鲁棒性”,能够在使用环境较差条件下(如印刷质量较低、干扰较大、版面排版较为复杂等)保持高的正确识别率。这些要求早期通过技术鉴定的一些识别系统大都不能满足。很多实验系统在实验室内或在应用范围较窄的情况下可以获得较好的效果,但在面对更宽阔的应用领域中千变万化的问题时就暴露出弱点,识别率难以满足要求。通过对实际问题的深入研究,我们发觉由于汉字结构特别复杂,只采用一种类型的识别特征往往顾此失彼,难以含有足够的充分反映所有方块汉字的信息。因此,采用若干种类型不同的识别特征组成综合特征,使它们在对汉字集合各个汉字识别时具有互补的作用,达到提高识别率的目的。从某种意义上说:这也是一种多识别方法的集成,只不过是采用特征综合的方法,而不是把几个识别“引擎”集成起来,从而可大大减小整个系统的复杂性。
经过20世纪90年代近10年的艰苦努力,不断改进,现在我国的汉字OCR技术已日渐成熟,在境内外中文信息处理方面得到广泛应用。但是应该强调指出,所汉字OCR不只是指印刷汉字文件的识别,还应包括手写汉字文稿的识别。这个问题目前还没有解决。在印刷汉字识别方面也还存在一些问题。例如:对质量差的印刷资料(包括传真资料等)识别,错识率还较高,人机界面还不完善,这方面仍有很多工作要做。百尺竿头,更进一步,我们仍需努力。