具体实施方式
下面结合附图对本发明优选的实施方式进行详细说明。
参阅图1所示,本发明实施例中,用于删除版式文档中的花边字符的文档处理装置包括导入单元10、第一确定单元11、第二确定单元12和删除单元13,其中,
导入单元10,用于导入版式文档,并获取包含版式文档中全部文字和符号的原始块集合,一个原始块中包含至少一个文字或字符;
第一确定单元11,用于依次确定原始块集合中每一个原始块的排版方向及字形相关信息;
第二确定单元12,用于根据每个原始块的排版方向及字形相关信息,确定包含花边字符的原始块;
删除单元13,用于将包含花边字符的原始块从原始块集合中删除。
参阅图2所示,本发明实施例中,文档处理装置对版式文档中的花边字符进行删除的详细流程如下:
步骤200:导入版式文档,并基于版式文档获取原始块集合S。
本实施例中,原始块集合S中记录了排版后,版式文档中文章内容包含的所有文字和符号,一个原始块块中包含至少一个文字或字符,即也可以包含多个文字或字符,同时,集合S中还记录了每个原始块的字形相关信息,所谓字形相关信息包含但不限于:原始块中包含的文字或字符的字体类型、字符类型、字号大小、序号、以及该原始块的坐标信息,其中,序号是指原始块输出时的顺序。
同时,本发明实施例中,为了更清楚的阐述技术方案,设置下述变量:当前原始块的排版方向CurBlockdir,初始值为未知类型,前一个原始块的排版方向PreBlockdir,初始值为未知类型;从第StartIndex个原始块开始,其后的原始块的字符与之相同,StartIndex初始值为0,用于记录删除字符的字体类型的字体集合F,初始为空集合,用于记录删除字符的字符类型的字符集合C,初始为空集合。
步骤210:将集合S中的原始块按照序号进行排序。
步骤220:依次确定集合S中每一个原始块的排版方向及相应的字形相关信息。
本实施例中,确定任意一个原始块的排版方向时,执行以下操作,
从集合S中读取出需要确定排版方向的当前原始块,以及与当前原始块相邻的下一个原始块,分别记为Blockcur和Blocknext,并且,采用CurBlockdir表示当前原始块的排版方向,采用PreBlockdir表示当前原始块的上一个原始块的排版方向,那么,
首先,若出现以下情况中的一种或任意组合,则确定CurBlockdir为未知类型:
1)Blocknext和Blockcur的字体不同;
2)Blocknext和Blockcur的序号不连续,即序号差值不为1;
将集合S中的原始块按照序号进行排序,这样就可以使原始块按照排版输出时的顺序排列,若排版时在两个原始块之间补充一个块,就会产生序号不连续的情况。
3)Blocknext和Blockcur的块间距小于设定阈值A,较佳的,设定阈值A=0.1;
4)Blocknext和Blockcur的字号差值大于设定阈值B,较佳的,设定阈值B=0.01;
Blocknext和Blockcur的字号差值超过设定阈值B,说明两者字号不近似,因此难以确定CurBlockdir;
5)Blocknext和Blockcur的高度差值大于设定阈值C,较佳的,设定阈值C=0.01;
Blocknext和Blockcur的高度差值超过设定阈值C,说明两者高度不近似,因此难以确定CurBlockdir;
6)Blocknext和Blockcur的宽度差值大于设定阈值D,较佳的,设定阈值D=0.01;
Blocknext和Blockcur的宽度差值超过设定阈值D,说明两者宽度不近似,因此难以确定CurBlockdir;
7)Blocknext和Blockcur的显示字符数目不同;或者,Blocknext和Blockcur的显示字符数目相同,但每个显示字符的编码不相同。
其次,若Blocknext和Blockcur的上边界(即外切矩形的上边沿)的坐标差值未超过设定阈值E,较佳的,E=0.01,且Blockcur的右边界(即外切矩形的右边沿)和Blocknext的左边界(即外切矩形的左边沿)的坐标差值未超过设定阈值F,较佳的,F=0.2则CurBlockdir为横排从左到右的类型;
若Blocknext和Blockcur的上边界的坐标差值未超过设定阈值E,较佳的,E=0.01,且Blockcur的左边界和Blocknext的右边界的坐标差值未超过设定阈值G,较佳的,G=0.2,则CurBlockdir为横排从右到左的类型;
在上述两种情况下,原始块的排版方向为横排方式,且排列密集;
若Blocknext和Blockcur的上边界的坐标差值未超过设定阈值E,且上述两种情况均不符合,则CurBlockdir为未知类型。
再次,若Blocknext和Blockcur的左边界的坐标差值未超过设定阈值H,较佳的,H=0.01,且Blockcur的上边界的坐标大于Blocknext的上边界的坐标,则CurBlockdir为竖排从下到上的类型;
若Blocknext和Blockcur的左边界的坐标差值未超过设定阈值H,较佳的,I=0.01,且Blocknext的上边界的坐标大于Blockcur的上边界的坐标,则CurBlockdir为竖排从下到上的类型。
在上述两种情况下,原始块的排版方向为竖排方式,且排列不密集。
若Blocknext和Blockcur的左边界的坐标差值未超过设定阈值H,且上述两种情况均不符合,则CurBlockdir为未知类型。
步骤230:根据每个原始块的排版方向及相应的字形相关信息,确定包含花边字符的原始块。
步骤240:将包含花边字符的原始块从集合S中删除。
参阅图3所示,本实施例中,执行步骤230过程中,判断任意一个原始块是否为花边字符时,执行以下操作:
步骤2300:判断PreBlockdir和CurBlockdir是否相同,若相同,则执行步骤2308;否则,执行步骤2301。
步骤2301:判断是否PreBlockdir不是未知类型,且Blocknext的序号与StartIndex的序号的差值大于设定阈值Dvalue,本实施例中,较佳的,Dvalue=10;若是,则执行步骤2302;否则,执行步骤2307。
步骤2302:判断是否同时满足PreBlockdir是竖排从下到上或竖排从上到下的类型、与Blockcur的字符相同的原始块的数目nSameCharCount大于设定阈值Nount、以及Blocknext的序号与StartIndex的序号差值大于设定阈值Nvalue,本发明中,本实施例中,较佳的,Nount=25、Dvalue=25;若是,则进行步骤2303;否则,执行步骤2304。
步骤2303:确定Blockcur为花边签字,并在集合C中记录Blockcur的字符,以及设置nSameCharCount为0,接着执行步骤2306。
本实施例中,在执行步骤2303时,若字符集合C中不存在Blockcur的字符,保存Blockcur的字符,并将其出现次数记为1,若字符集合C中已存在Blockcur的字符,则将其出现次数+1。
步骤2304:判断是否满足PreBlockdir是竖排从下到上或竖排从上到下的类型,且Blockcur的显示字符数目大于1,若是,执行步骤2305,否则,执行步骤2306。
步骤2305:确定Blockcur为非花边签字,并将StartIndex设置为Blockcur的序号,以及设置nSameCharCount为0。
步骤2306:确定Blockcur为花边签字,并将Blockcur的字体记录在字体集合F中,以及更新其出现次数。
步骤2307:将CurBlockdir设置为PreBlockdir,将StartIndex设置为Blockcur的序号。
步骤2308:若Blockcur与Blocknext的字符相同,记录其连续相同字符的数目nSameCharCount。
接着,将会继续判断下一个原始块是否为花边字符,直到识别出所有花边字符,再对其进行删除。
参阅图4所示,本发明实施例中,执行步骤240的过程中,从集合S中删除任意一个包含花边字符的原始块的具体操作如下:
步骤2400:根据字体集合F中记录的字体及相应的出现次数,确定集合S中对应字体集合F中每一种字体的原始块数目。
具体实现步骤为:设置变量SameIdCount,用来记录原始块的字体和字体集合F中记录的字体相同的原始块数目,依次取出字体集合F中记录的字体,若集合S中的原始块的字体和相应的记录字体相同,则SameIdCount加1。
同时,还要设置变量nSameCharCount,用来表示连续的包含相同字符的原始块数目,初始值设为0,此时,集合S的原始块已按照序号进行了排序,后续将依次读取各个原始块。
步骤2401:从集合S中读取出需要处理的当前原始块,及与该当前原始块相邻的下一个原始块,分别记为Blockcur’和Blocknext’。
步骤2402:判断Blockcur’的字体记录是否在字体集合F中?若是,则执行步骤2403;否则,执行步骤2409。
步骤2403:判断Blockcur’的字符与Blocknext’的字符是否相同?若是,则执行步骤2404;否则,执行步骤2405。
步骤2404:将nSameCharCount加1,并设置Blockcur’的序号为花边字符的开始位置StartPos。
步骤2405:判断是否满足nSameCharCount加1大于设定阈值Samecount,并且Blockcur’的字符记录在字符集合C中,若是,则进行步骤2408;否则,执行步骤2406;本发明实施例中,较佳的,Samecount设置为25。
步骤2406:查看Blockcur’的字体出现的次数Count。
步骤2407:判断count是否大于设定阈值Maxcount,若是,则执行步骤2409;否则,执行步骤2408。
执行步骤2407的目的是,花边字符的字体和文字的字体有时会相同,为了避免文字被误当作花边删除,基于一个版面中的花边字符的数目较少的特点,设置一阈值Maxcount,若超过此阈值,则不认为是花边字符。
步骤2408:将序号在闭区间[StartPos,Blockcur’的序号]之间的原始块从集合S中删除,接着执行步骤2409。
步骤2409:将Blocknext’作为下一个需处理的当前原始块Blockcur’,并读取出与新的Blockcur’相邻的下一个新的Blocknext’,接着,返回步骤2402。
例如,实际应用中,假设存在如下内容的文档:
■现状:24日11时30分
■许,记者来到花园社区南
■门附近时,东湖路通往居
■民区的路口及道路两侧满
是积水,积水还夹杂着各
■种生活垃圾。骑行电动车
■或摩托车的市民都行驶在
■道路中央,与机动车抢道
而行。花园社区30号楼居
■民黄先生得知记者正在了
■解道路积水的事情,拉着
■记者说:“你看看,雨水排
■不出去都积在路上,居民
■出行都是问题。我曾经和
其他居民查看过积水原
■因,发现排水口都被堵上
■了,导致排水缓慢。”
■附近一位居民用木枝
■捅了捅排水口说:“你看,
■水根本不向排水道内淌,
■怎么能指望这些积水尽快
■排完呢?
■
■
则可以采用上述实施例中记载的技术方案,将花边字符■进行删除。
综上所述,本发明实施例中,通过对版式文档中包含的文字或/字符的排版方向及相应的字形相关信息的比对,准确地识别出版式文档的版面中存在的花边字符,并进行过滤删除,这样,便去除了花边字符对版面文档的文章内容的影响,最大程序地还原了文章内容的阅读顺序,从而提高了文章内容的反解质量和标引效率,使版式文档的版面显得新颖、美观,增加版面的灵活性和促进版面的完整性,并且在一定程度上节省了数据加工成本。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。