基于Adaboost的档案扫描原文识别研究(第十九次论文评选二等奖)

湖南省档案局 hnsdaj.hunan.gov.cn 时间:2011-12-31 【字体:
  
基于Adaboost的档案扫描原文识别研究
   
郭华庚 
(长沙市档案局,湖南 长沙 410013)
  
  摘要:本文针对档案数字化建设过程中扫描档案原文不能直接匹配检索的问题,首先通过对扫描原文组成的PDF文档进行解析,然后应用基于Adaboost的档案扫描原文识别手法,对扫描原文图片的内容进行识别,以达到全文检索的目的,为档案数字化建设的进一步深入开展提供了动力。
  
  关键词:档案  汉字识别 Adaboost
  
  自1946年2月15日第一台计算机在在美国宾夕法尼亚大学诞生,到今天的微型计算机遍布全球,人们的社会生活环境发生了翻天覆地的变化。档案工作作为一项社会性、服务性工作,也随着发生了巨大的改变。从最早的甲骨档案到到如今的电子文件,随着数字化的浪潮席卷全球,档案工作也走上了全面数字化的道路。如今,越来越多的档案馆已经实现了档案目录的数字化录入,档案原文的数字化扫描,大力推进着档案数字化建设的进程。
  然而在对以往历史积累的纸质档案原文进行扫描时,我们扫描所得到的往往是一张张的图片,虽然经过PDF合成,可以形成一个完整的PDF文档,但其内容始终还是图片,这尽管在档案纸质原件的保管方面起到了很大的作用,但是档案的保管毕竟还是为利用服务的,因此通过图像识别技术来识别扫描档案原文的内容,实现全文检索,降低用户检索的难度,增加检全率对于档案数字化建设的进一步发展有着不可忽视的意义。本文正是鉴于此提出了基于Adaboost的档案扫描原文识别研究。
  一、PDF文档解析
  档案原文扫描后,进而将扫描所得图片组织起来生成的PDF文档从根本上来说是一个8字节序,但其实PDF格式和我们已经熟知的HTML,XML等结构化的文件格式一样,包含有关键字、分隔符和数据等等内容。不同的是PDF文件是按照二进制流的方式保存的,而html文件则是文本方式保存的,是可读的,所以我们打开一个HTML文件就能知道所有显示在浏览器里的文字。 具体来说, 一个PDF文件从大的方面来说可以分为4个部分: 
  (1)文件头,指明了该文件所遵从的PDF规范的版本号,它出现在PDF文件的第一行。 
  (2)文件体,PDF文件的主要部分,由一系列对象组成。 
  (3)交叉引用表,为了能对间接对象进行随机存取而设立的一个间接对象的地址索引表。 
  (4)文件尾,声明了交叉引用表的地址,即指明了文件体的根对象(Catalog),从而能够找到PDF文件中各个对象体的位置,达到随机访问。另外还保存了PDF文件的加密等安全信息。 
  如下图1所示: 
  
  图1  PDF结构图
  而具体到每一部分又都是由一些对象所构成的,主要包括:文件描述对象、组对象、页对象、活动对象、字体对象、流对象等,而所有的二进制内容都是存在流对象里面。下面我们就以最简单的Hello World的文件分析来阐述具体的解析过程:
  文件的部分具体内容如下,其中/*……*/部分为注释分析内容。
  %PDF-1.0         /* 文件头,说明符合PDF1.0规范 */
  1 0 obj 
  << 
  /Type /Catalog 
  /Pages 3 0 R 
  /Outlines 2 0 R 
  >> 
  endobj        /*Catalog对象(根对象) */
  2 0 obj 
  << 
  /Type /Outlines 
  /Count 0 
  >> 
  endobj       /*outline对象(此处它的计数为0,说明没有书签)  */
  3 0 obj 
  << 
  /Type /Pages 
  /Count 1 
  /Kids [4 0 R] 
  >> 
  endobj 
  

/* pages对象(页面组对象),/Type /Pages 说明自身的属性,对象的类型为页码,/Count 1说明页码数量为1,/Kids [4 0 R]说明页的对象为4, 这里要说明的是如果有多个页面,就多个页面直接连续下去,比如说/Kids [4 0 R 10 0 R], 就说明该PDF的第一页的对象号是4,第二页的对象号是10。 */

  4 0 obj 

  << 

  /Type /Page 

  /Parent 3 0 R 

  /Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R >> 

  /MediaBox [0 0 612 792] 

  /Contents 5 0 R 

  >> 

  endobj 

  /*页对象,/Parent 3 0 R说明其父对象的对象号为3,/Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R >>说明该页所要包含的资源,包括字体和内容的类型,/MediaBox [0 0 612 792]说明页面的显示大小(以象素为单位),/Contents 5 0 R说明页面内容对象的对象号为5。 */

  5 0 obj 

  << /Length 44 >> 

  stream 

  BT 

  /F1 24 Tf 

  100 100 Td (Hello World) Tj 

  ET 

  endstream 

  endobj 

  /*  << /Length 44 >>说明stream对象为字节数,从BT开始,ET结束,包括中间的行结束符。 Stream说明一个流对象的开始。 BT说明一个文字对象的开始。 /F1 24 Tf,Tf说明True font对象,字体明为F1,大小为24个象素。 100 150 Td (Hello World) Tj,100 100 说明这一行文字放置的位置,对于Td, 我们可以这样理解,我们的当前X,Y坐标分别加上100和150就是文本的位置,因为在该例子中只有一个对象,那么它的位置就是(100,150), 如果下个对象位置信息为100, 50 Td, 那么它的位置应该就是(100+100, 150+50)也就是(200,200)。(Hello World) Tj说明文本的内容,当然,如果这里是文本的内容可以写成16进制,用<>包含。 ET说明文字对象的结束 ,endstream流对象的结束 */

  6 0 obj 
  [/PDF /Text] 
  Endobj   
  /*  [/PDF /Text]说明PDF的内容类型仅仅为文本,如果有图片则为[/PDF /Image]  */
  后面还有字体对象以及交叉引用表等内容,由于与本文不具有直接相关性故略去。从上面的分析我们可以看出,由于PDF文件自身良好的结构性,使得我们可以首先定位到stream对象,然后通过判断其内容类型为[/PDF /Text]或者为[/PDF /Image] 来确定其具体内容为文本或者是图片。对于内容为文本的PDF文档,我们则可以直接采用已有的字符串匹配的方式来进行检索。而如果内容为图片,则利用Adaboost算法对其进行汉字识别后再进行匹配检索。
  二、汉字识别简介
  针对图片格式的扫描原文,我们首先需要对图片中的汉字进行识别,然后才行进行相应的匹配检索。由于汉字数量众多,汉字识别问题属于超多类模式集合的分类问题。汉字识别技术可以分为印刷体识别及手写体识别技术。从识别技术的难度来说,手写体识别的难度高于印刷体识别。
  印刷体汉字的识别最早可以追溯到上个世纪60年代。1966年,ibm公司的casey和nagy发表了第一篇关于印刷体汉字识别的论文,在这篇论文中他们利用简单的模板匹配法识别了1,000个印刷体汉字。70年代以来,日本学者做了许多工作,其中有代表性的系统有1977年东芝综合研究所研制的可以识别2000汉字的单体印刷汉字识别系统;80年代初期,日本武藏野电气研究所研制的可以识别2300个多体汉字的印刷体汉字识别系统,代表了当时汉字识别的最高水平。此外,日本的三洋、松下、理光和富士等公司也有其研制的印刷汉字识别系统。这些系统在方法上,大都采用基于k-l数字变换的匹配方案,使用了大量专用硬件,其设备有的相当于小型机甚至大型机,价格极其昂贵,没有得到广泛应用。
  从识别方式来看,目前印刷体汉字的识别中使用得较多的依旧是统计和结构两大类方法,并表现出将两种方法结合起来的倾向。随着人工智能的发展,文献[1]指出人工智能将是印刷体汉字识别的一个发展方向,并提出了基于人工神经网络的印刷体汉字识别。同时,近年来人工智能领域的神经网络和机器学习在手写体汉字识别中取得了非常大的进展[2],虽然以往都是将印刷体汉字识别领域取得比较好效果的算法引入手写体汉字的识别中,但如前面所述,手写体识别的难度本身要高于印刷体识别,故本文沿着文献[1]的思路,反其道而将目前手写体领域效果较好的算法引入印刷体汉字的识别当中。将近年来手写体汉字识别领域中机器学习方法中倍受关注的Adaboost算法应用于扫描原文的识别中,取得了良好的效果。

三、         Adaboost算法

1、Adaboost算法的提出背景

  一个关于Adaboost的经典例子就是赛马策略问题:一个赛马的赌徒,为了使其赌赢的机会最大化,决定开发一个电脑程序,系统能通过分析一些比赛的常规数据(比如近期获胜马匹的编号,每匹马的优势等)来精确的预测比赛的结果。为了开发这样一套程序,他向一位非常成功的赌马专家咨询他的赌马策略,当然,这位专家可能无法凭空说出选择马匹的一系列的规则,但是如果能向这位专家提供一些特定的比赛数据,专家可能很容易就能得出一个针对这一系列比赛的一个优势策略(如押注在最近赢得最多的马匹身上,或者押注在最具有优势的马匹身上等)。尽管这样得到的一个最优策略很明显是非常粗糙和不精确的,但是不管怎么说,它始终还是要优于我们随机的猜测。同时,通过反复向专家咨询多场比赛的意见,赌徒还可以从中抽取出许多的优势策略。
  为了能利用这些优势策略来获得最大的实际优势,赌徒还需要解决两个问题:一是为了使专家给出的优势策略最有用,赌徒应该如何去选择比赛数据的问题;另一个是在收集到了许多优势策略之后如何将这些策略合并成一个高度精确的实际的预测规则。而Adaboost算法就正是这样一种将多个粗糙和不精确的优势策略合并为一个高度精确的实际预测规则的有效方式。
  2、改型的Adaboost算法及流程
  以往,Adaboost算法常应用在两类分类问题中。由于汉字数量庞大,也即类别非常之多,属于典型的多类分类问题,本文采用基于描述性模型的多类分类器(modified quadratic discriminant function ,MQDF) 作为基元分类器[5],并利用广义置信度作为权重更新的依据,由此将Adaboost算法改型后,来进行基于图片流PDF印刷体汉字识别。它与传统多类Adaboost算法比较具有以下两个优势:
  使用了不同种类的基元分类器: 传统的Adaboost算法在处理多类问题时常将多类问题转换为多个两类问题来实现,采用线性分类器之类的基于鉴别性模型的分类器来做为其基元分类器,算法复杂度非常高。而如果利用基于描述性模型的多类分类器MQDF作为基元分类器则可以对问题直接进行多类分类,不需要进行多类问题与多个两类问题之间的转换,进而降低了训练的复杂度。
  使用了不同的样本权重更新方式:基于描述性模型的多类分类器MQDF在分类性能方面较传统的Adaboost算法中的弱分类器得到了很大提高,但通常还需要对样本识别的后验概率进行评估,而后验概率的评估往往不容易获得,计算的复杂度较高。因此我们采用简易可行的广义置信度作为识别结果好坏的评价标准,并将广义置信度作为对样本权重进行更新的依据。
  其具体流程如下[6]
  首先设t次的基元分类器记为
  用 表示 的识别结果,如果用C表示汉字识别中汉字的个数,那么
  用 表示某一基元分类器的广义置信度,则可得如下流程:
  (1)初始化:t=1;对样本赋初始权重 。
  (2)对于t=1,2,…,T,在样本分布 下训练得到第t个基元分类器 。更新样本权重:
  (一)
  上式中 是归一化因子,它使得 是一个概率分布,即满足
  =1
  对于待测样本 ,将累计广义置信度最大的类别作为其识别结果:
  (二)
  四、基于改型Adaboost算法的字符识别
  考虑到本文处理的图像是扫描图像,所以进行文字切分时采用下述方法:首先将图像二值化,然后行投影得到每行文字的高度,再根据汉字宽高一致的特性,切分出每行中的每一个汉字图像块;
  要识别汉字,合理的特征描述是前提条件。本文采用一种简化了的SIFT特征描述[7]:梯度方向直方图。其计算方法为:首先用双线性插值将汉字图像块宽高调整为64×64,然后用3×3的高斯滤波器对图像进行平滑。接着,用水平和垂直两方向的Sobel算子[8]和图像卷积得到水平和垂直两方向的梯度,基于这两种梯度,可计算出每像素的方向角。而后,将原图像等分成64个8×8的子块。对每一个子块进行如下操作,即对该字块中的每个像素的方向角进行统计,投影到一个8维的直方图中([0, 2*pi/8], [2*pi/8, 4*pi/8], [4*pi/8, 6*pi/8], [6*pi/8, 8*pi/8], [8*pi/8, 10*pi/8], [10*pi/8, 12*pi/8], [12*pi/8, 14*pi/8], [14*pi/8, 16*pi/8]),并将得到的每个子块的直方图归一化。于是,对每个汉字块图像,可得到一个d=64×8=512维的特征描述。
  在进行了上述文字的切分得到分离的文字图像块之后,将每一文字图像块规整到64×64的高宽,接着提取相应的梯度方向直方图特征。在此基础上,根据Adaboost算法进行汉字的分类识别。首先通过匹配“目录”两个字符来确认目录的起始位置,然后通过判断接下来的连续的页面中是否包含“……”字符来确认目录是否结束,并最终锁定目录的范围,在锁定了目录的范围后,对整幅目录图像中的所有文字块都进行一个识别过程后,即可得到所有的汉字。
  本文使用的数据集包含了150000个汉字样本图像,选自GB2312一级汉字中的1500个,每个汉字有宋体和黑体两种字体,对应每种字体有50幅64×64的图像。这些图像在不同的印刷情况下采集得到,图2为一个示例。
  
  
  
  图2  训练数据集示例
  利用上述汉字样本集,按照如下过程训练出所需要的分类器:在每一次迭代中,依据当前的样本分布,可得到LDA的降维矩阵和MQDF分类器;而后,按照广义置信度更新样本权重;接着,在更新的样本权重下进行下一次迭代。本文实验中共循环迭代了28次,即T=28。在识别过程中,对每一样本需要识别T次,其中第t次识别步骤为:应用第t个降维矩阵对原始方向直方图特征进行压缩得到特征向量,而后使用第t个MQDF分类器识别特征向量,得到相应的识别结果和广义置信度。在T个这样的结果的基础上,按照最大的累计广义置信度来赋予相应的类别,也即得到相应的汉字。
  上述训练及识别过程可概括为图3所示。
  
  图3  训练及识别过程
  五、总结与展望
  在数字化、网络化环境下催生的数字信息逐步成为信息资源的主流的今天,档案原文的扫描已经成为档案数字化建设的重要组成部分,但对扫描原文的识别问题依然未能得到很好的解决,本文提出的Adaboost算法虽然能对扫描原文进行识别,但识别效率仍有待改进,同时本文所针对的识别对象仍局限于印刷体汉字,对于手写体汉字的识别还有待进一步的研究。
  参考文献
  [1] 刘长松,郭繁夏. 印刷汉字识别方法综述.人工智能网.2010(3).
  [2] 丁晓青, 付 强. 一种适用于超多类手写汉字识别的新改型Adaboost算法[J]. 中国工程科学. 2009(10):19-31.
  [3] Yoav Freund and Robert E. Schapire. A decision-theoretic generalization of on-line      learning     and an application to boosting. Journal of Computer and System Sciences, 55(1): 119�C139,     August 1997.
  [4] 贾慧星,章毓晋.基于动态权重裁剪的快速Adaboost 训练算法[J]. 计算机学报,2009(2):336-341.
  [5] Liu C. L., Fujisawa H. Classification and learning for character recognition: comparison of methods and remaining problems.2005.
  [6] Kimura F, Takashina K, Tsuruoka S, etc. Modified quadratic discriminant functions and its application to Chinese character recognition [J]. IEEE Trans on Pattern Analysis and Machine Intelligence, 1987(1):149 �C 153.
  [7] D. G. Lowe. Distinctive image features from scaleinvariant keypoints. Int. Journal of Computer Vision, 60(2): 91�C110 , 2004.
    [8] 章毓晋.图像工程(中册)―图像分析. 北京:清华大学出版社,2007.

基于Adaboost的档案扫描原文识别研究(第十九次论文评选二等奖)

10446631