前一段时间单位和清华文通公司合作开发扫描识别方面的项目,由此能够获知一些扫描方面的知识,以及能够从清华文通的保存文件格式中窥斑见豹,了解到一些他们是如何进行扫描识别的过程。
    清华文通的保存文件是以mod结尾的文本格式的文件,其中的内容大致上分为如下几个部分:
    1、[Description]
    2、[imageDealt]
    3、[LocationInfo]
    4、[Region]
    5、[Region1]
    6、[Region1.Cell1]
    7、[Region1.Cell1.SubCell1]
    如上就是清华文通mod文件保存的大致内容格式。
    Description是对整张模板的基本情况说明的部分其中包含子项有:Vertion、Type、Name、SourceImage、RegionNumber、CellNumber、SubCellNumber、LineNumber、SaveCellPosition、DatabaseName、XResolution、YRsolution、SavePNT。
    这之中最重要的是Name、SourceImage、CellNumber、SubCellNumber、XResolution、YRsolution这些子项,它们分别标识了模板名字、模板分析时使用的图像名字、区域中需要识别的单元个数,Cell就是识别单元的代号、识别单元中有多少个子单元、扫描的分辨率。
    imageDealt是用于图像处理的参数说明,这里的参数我们一般不需要进行太多的干涉,使用默认值0即可。
    LocationInfo项目中时关于定位信息的设置,这里要说说在扫描之中的参照线的问题,我们是用一张普通的A4纸在扫描仪上扫描,它的边是黑色的这个大家有过扫描经验的人应该都知道吧,那么我们怎么能够对纸上的字进行相对位置的确定呢?扫描后纸边的黑边是有很大一个区域的如果用它来做定位参照,那么其带来的误差将会很大,可能会导致其后的识别的位置错误。所以,我们在需要扫描的纸上人为的作出一个四边形区域,将所有需要识别的文字包括在其中,那么这4条清晰的直线将是我们之后扫描识别的参照线。LocationInfo就是用于设置这4条定位线的信息项。
    Region的一般设置是1,标明这张纸上有多少个需要识别的区域。
    Region1是对Region中标识为1的区域进行说明,其中的子项有TotalCell、TableName、Position、TotalFrameLines、TotalCellGroups。这里因为命名规则我们可以望词见意。
    Region1.Cell1是对Region1中第一个需要识别的单元格进行的说明,其中含有CellAttrib、recognize、CharNum、CellType、CellLines、CellPosition、BorderAllWhite、IsBlocked、Contents、FontType、FontSign、TotalSubCells、FontSubType、FieldName、FieldSign、FieldType、FieldSize这些子属性的设置,这里面以CellPosition、FontType、FontSign、TotalSubCells、FieldName、FieldSign、FieldType为重要属性。
    CellPosition不言而喻是表示这个识别区域在图像上的坐标位置,它的标识标准是(XLeftTop,YLeftTop,XRightButtom,YRitghtButtom)用这么一个对角线就可以表示出这个区域了。
    FontType、FontSign是用于标识识别字体类型的信息,0印刷简体、1印刷繁体、2印刷英文、3日文、4手写汉字、6手写数字、7CheckBox。而FieldType是该识别单元的类型:1—文本,2—整型,3—长整型,4—单精度,5—双精度,6—日期,7—备注,10—chechbox多选
    如果本单元是由多个子单元组成的话,那么我们还需要进行更进一步的细化描述,这就是之上的Region1.Cell1.SubCell1项。其中的内容描述项不多,有Contents、FontType、FontSign、CellPosition、BorderAllWhite这些项目要填写。我们可以根据上面的说明来填写这些子选项。
    对一页纸上面的内容信息进行迭代设置,就可以把他们全部标识出来,进而使用清华文通的识别软件识别了。其核心思想是,对纸张扫描后的图片进行分而治之的思想,由大化小。这和现在Google的MapReduce,Nutch中使用的Hadoop的思想是一致的。看来计算机中的算法到了一定程度上也有了哲学的东西在其中啊,毕竟计算机是用于解决人类世界的问题的,所以哲学也在计算机算法之上啊。



本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:

  • 署名:你必须明确标明作者的名字。

  • 非商业用途:你不可将当前作品用于商业目的。

  • 禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。

对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。

在得到作者的明确允许下,这里的某些条款可以放弃。