一种基于PDF的复杂版面的标引方法
技术领域
本发明属于信息技术领域,具体涉及一种基于PDF的复杂版面的标引方法。
背景技术
在报业、出版社等行业中,使用排版软件排版完成后,需要从已经生产的版面中提取文章以及相关的元数据信息,以便进一步利用,就是文章信息的重构和标引。为了更真实还原版面的内容,除了需要文章本身的内容信息(如标题、引题、副题、作者、正文等多项信息)以外,在标引时还提取需要文字块的位置、字体字号等信息。
目前,从版面中提取文章信息的方法(也称反解和标引)有以下几种:
(1)通过排版软件本身的能力导出xml文件,一般都包含文章的内容信息,但不同排版软件输出的内容不同,如有些不提供标题信息,多数的排版软件并不导出文字块的位置信息,使得文章的信息不完整,往往需要通过手工的方式进行补充,效率非常低;另外,应用本方法还必须能够获得原始排版文件,而一些需要反解和标引的场合下,是无法获得原始排版文件的;
(2)通过软插件技术对排版软件进行扩充,允许进行一些半自动化的信息提取和人工标引。专利CN200610112710.9公布了“一种提取见报资料数据信息的方法”可以基于版面文件结合人工干预来提取和表演文章。这种方法的优点是可以提取比较完备和准确的信息,其缺点是:a)不同的排版软件需要开发不同的软插件,开发难度和工作量大;b)必须能够提供原始的排版文件,才能进行标引。c)随着排版软件本身的发展和升级,一些老的数据格式不再支持,因此大量的历史数据无 法进行标引和重新利用;
(3)对排版软件输出的结果文件格式(PS格式)进行标引,其中的代表性的技术是“方正全真软件”,用来反解和表演方正飞腾排版输出的PS文件。由于目前对PS的反解技术,主要是利用PS中的注释进行的,不同排版软件输出的注释不同,导致反解和标引软件不同通用。随着印刷技术的发展,基于PDF的RIP技术慢慢取代PS,因此有些排版软件和流程中直接得到的就是PDF而不再是PS了。另外,大量的历史数据是PDF格式的而不存在PS文件,导致PS反解和标引无法应用;
(4)多数排版软件可以生成PDF格式的文件,大量的历史数据是基于PDF的,因此基于PDF的反解和标引的应用面很广。专利CN200510039015.x公布了“一种基于xml的PDF文档信息抽取系统的方法”,主要是把PDF文件的物理结构转换为逻辑结构,但并没有进行文字成块和成文的处理。专利CN200510122890.4公布了“一种从PDF文档到XML文档转换的方法”,通过第三方的工具把PDF转为平级的xml文档,再通过xslt结合规则提取xml中信息,其应用的前提是PDF版面本身较为简单,结构较为一致,使用简单的xpath的规则就可以提取xml信息,并不适用报刊这样的复杂版面。专利CN200410091432.4公布的“一种对报纸版面进行标题与正文逻辑关联的方法”以及专利专利200410091434.3公布的“一种对报纸版面进行文字阅读顺序恢复的方法”,均是后续的成文的方法,并没有涉及文字块的生成和合并规则和整个提取内容和位置等信息的流程。专利200610007221.7“一种在报纸版面上检查标引稿件的方法及系统”和专利200610065665.6“一种报刊版面网络标引的方法及系统”均在组版软件以及组版环境可用的情形下进行复杂版面的反解和标引,不能应用到PDF的反解和标引中。
可见,在现有技术中,对于缺少原始组版文件、或缺少软插件可用的场合,尚没有一种能对复杂版面数据源进行通用反解和标引的高效的方法。
发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种省时、省力的统一的PDF复杂版面的标引方法,该方法只需要PDF数据、最大限度减少了对数据源的要求,具有广泛的适应性,同时该方法可以自动化处理复杂版面的文字信息提取、原始文字块合并以及文章内容和样式信息的提取,结合少量的人工操作可以完成标引工作,并可以自动确定排版类型,极大地提高了反解和标引的效率。
为达到以上目的,本发明采用的技术方案是:一种基于PDF的复杂版面的标引方法,包括以下步骤:
(1)导入报刊版面的PDF文件,对PDF进行分析,获取版面上的全部的文字内容、文字的位置、字体、字号和序号信息,得到一个原始文字块的列表L;
(2)按原始文字块的信息,对原始文字块进行聚类,聚类的依据是存在临近关系的文字块加入一个集合,得到多个集合{Si};
(3)按照排版类型和原始文字块的位置对每个集合中的原始文字块进行排序,并合并该集合的所有原始文字块,得到合并文字块;
(4)按合并文字块的字号标定合并文字块的属性为标题或正文;
(5)对多个合并文字块进行再合并,构建文章。
在如上所述的一种基于PDF的复杂版面的标引方法中,步骤(2)中,在对原始文字块进行聚类时包括以下步骤:
(2.1)创建一个新的集合{S},并选取列表L中第一个原始文字块Ti作为新集合{S}的第一个原始文字块,并从列表L中去除该原始文字块Ti;
(2.2)对列表L中的剩下的全部原始文字块进行遍历,对每个原始文字块,需要检查集合{S}中是否至少存在一个近邻,如果存在近邻,则把该原始文字块加入集合{S}中,并从列表L中删除该原始文字块;
(2.3)遍历完成后,如果列表L不为空,则重复上述步骤(1)和(2), 生成一个新的集合。
进一步,步骤(2.2)中检查两个原始文字块是否近邻的方法是:
设两个待判定的原始文字块分别为T1和T2,对应的字号为f1和f2,对应的位置左上角坐标分别为(x1,y1)和(x2,y2),右下角坐标分别为(x1’,y1’)和(x2’,y2’),包括以下步骤:
(2.2.1)计算字号差别系数,定义为c=2*(f1-f2)/(f1+f2);
(2.2.2)计算平均字符高度为h=(y1’-y1+y2’-y2)/2;
(2.2.3)计算在水平方向的距离系数dx:
dx=(max(x1,x2)-min(x1’,x2’))/h,其中max(a,b)表示取两者的较大值,min(a,b)表示取两者的较小值;
(2.2.4)计算在垂直方向的距离系数dy:
dy=(max(y1,y2)-min(y1’,y2’))/h;
(2.2.5)根据经验,设定最大容忍字号差别系数cmax=0.1,最大容忍水平方向距离系数为dxmax=0.9,最大容忍垂直方向距离系数为dymax=0.9;
(2.2.6)则判定两原始文字块为近邻的充分必要条件是:c<cmax且dx<dxmax且dy<dymax。
进一步,步骤(3)中,对每个集合中的原始文字块进行排序时根据不同版面类型,确定不同的排序类型后,再根据原始文字块的位置进行排序,
具体来说:
对于普通的横排版面使用先从上到下、再从左到右的排序方法,对于竖排版面,使用先从右到左,再从上到下的排序方法。
更进一步,步骤(3)中,对每个集合中的原始文字块进行排序时先根据原始文字块的位置和序号,自动确定排序类型后,再进行排序操作,具体的步骤是:
(3.1)计算待处理的集合{S}中的原始文字块的平均高度h;
(3.2)对集合中的原始文字块按序号进行排序;
(3.3)顺序遍历集合中的全部原始文字块,依次计算相邻两个原始文字块的水平位置差异值dx[i]和垂直位置差异dy[i];
(3.4)设置和计算4个统计计数器如下:
a)等水平位置计数器Zx,用来记录满足abs(dx[i])<c1*h的出现次数,其中abs表示取绝对值;
b)等高度计数器Zy,用来记录满足abs(dy[i])<c1*h的出现次数;
c)横排方向计数器Nx:对满足abs(dy[i])<c1*h的差异值,检查其对应的dx[i]值,如果dx[i]>0,则Nx加一,否则Nx减一;
d)竖排方向计数器Ny:如果dx[i]>c2*h,则Ny加一,如果dx[i]<-c2*h,则Ny减一;
上述四个统计计数器的初值全部设置为0,并设c1为容忍度系数,取值为0.2,c2为间距系数,取值为1.0;
(3.5)遍历完成后,根据四个计数器的值,判定排版类型如下:
a)如果Zx>Zy,且Ny>0,则为从左到右的竖排;
b)如果Zx>Zy,且Ny<0,则为从右到左的竖排;
c)如果Zx>Zy,且Ny=0,则为竖排无方向;
d)如果Zx<=Zy,且Nx>=0,则为从左到右的横排;
e)如果Zx<=Zy,且Nx<0,则为从右到左的横排;
(3.6)根据排版类型对集合内的原始文字块按位置进行排序。
进一步,步骤(3)中,对集合内原始文字块排序后进行合并的步骤是:
(3.7)合并文字块的内容为集合内所有原始文字块按顺序拼接;
(3.8)合并文字块的区域为集合内所有原始文字块矩形的最小包容矩形;
(3.9)合并文字块的字号为集合内所有原始文字块字号的平均值;
(3.10)合并文字块的字体为集合内原始文字块数量最多的字体。
进一步,步骤(5)中,对多个合并文字块进行再合并采用人工干预的方法,或者根据文字块的位置、排版类型、字体字号、语义和词性信息进行智能分析和合并。
本发明的效果在于:采用本发明所述的方法,数据源上只需要PDF文件,减少应用场合的限制;能够自动化处理复杂版面的文字信息提取、原始文字块合并以及文章内容和样式信息的提取,结合少量的人工操作可以完成标引工作,并可以自动确定排版类型,极大地提高了反解和标引的效率。
附图说明
图1是PDF复杂版面的文章重构流程图;
图2是原始文字块提取后的效果图,左侧的中部为当前选中的原始文字块的详细信息;
图3是原始文字块合并后的效果图,左侧的中部为当前选中的合并文字块的详细信息;
图4是合并文字块进一步标引后的效果图,左侧的中部为当前选中的合并文字块的详细信息;
图5是原始文字块合并后的效果图,左侧的中部为当前选中的合并文字块的详细信息,其中包含了竖排的文字块。
具体实施方式
下面结合实施例和附图,对本发明作进一步的阐述:
如图1所示,一种基于PDF的复杂版面的标引方法,包括以下步骤:
第一步:S11,导入报刊版面的PDF文件,对PDF进行分析,获取版面上的全部的文字内容、文字的位置、字体、字号、序号信息,得到一个原始文字块的列表L;
本实施例中,提取的原始文字块信息如图2,包括文字内容、位置、字体字号、序号等信息。为直观,直接显示了PDF的版面图,并把提取到的文字矩形区域以粉框显示在版面图上。可以看到,由于排版软件的对文字进行了位置控制,因此从PDF中提取到的文字不是流式的一个整块,而是很多个小的块,基本上是每字符一个文字块,如21所示的文字块为当前选中的原始文字块,左侧的中部为当前选中的原始文字块21的详细信息。
第二步:S12,按原始文字块的距离、字体、字号等信息,对原始文字块进行聚类,得到多个集合{Si};
本实施例中,聚类使用的方法如下:
(1)创建一个新的集合{S},并选取列表L中第一个原始文字块Ti作为新集合{S}的第一个原始文字块,并从列表L中去除该原始文字块Ti;
(2)对列表L中的剩下的全部原始文字块进行遍历,对每个原始文字块,需要检查集合{S}中是否至少存在一个近邻,如果存在近邻,则把该原始文字块加入集合{S}中,并从列表L中删除该原始文字块。
(3)遍历完成后,如果列表L不为空,则重复上述步骤(1)和(2),生成一个新的集合。
在判定两个原始文字块是否近邻时,使用了下列的步骤和方法(设两个待判定的原始文字块分别为T1和T2,对应的字号为f1和f2,对应的位置左上角坐标分别为(x1,y1)和(x2,y2),右下角坐标分别为(x1’,y1’)和(x2’,y2’)):
(1)计算字号差别系数,定义为c=2*(f1-f2)/(f1+f2);
(2)计算平均字符高度为h=(y1’-y1+y2’-y2)/2;
(3)计算在水平方向的距离系数dx:
dx=(max(x1,x2)-min(x1’,x2’))/h,其中max(a,b)表示取两者的较大值,min(a,b)表示取两者的较小值;
(4)计算在垂直方向的距离系数dy:
dy=(max(y1,y2)-min(y1’,y2’))/h;
(5)根据经验,设定最大容忍字号差别系数cmax=0.1,最大容忍水平方向距离系数为dxmax=0.9,最大容忍垂直方向距离系数为dymax=0.9;
(6)则判定两原始文字块为近邻的充分必要条件是:c<cmax且dx<dxmax 且dy<dymax;
上述的三个判断标准可以根据实际的情况调整或去除,如忽略字号差异,可以把不同字号的近邻文字进行聚类。其中的容忍度系数也可以根据实际的情况作调整,如西文版面,一般为横排,最大容忍水平方向距离系 数可以选择得小一些,而最大容忍垂直方向距离系数适当再大一些。
第三步:S13,对每个集合中的原始文字块进行排序,并合并该集合的所有原始文字块,得到合并文字块;
本实施例中,在合并前的排序中,根据原始文字块的位置和序号自动可确定排序类型,具体的步骤是(设待处理的集合为{S}):
(1)计算集合{S}中的原始文字块的平均高度h;
(2)对集合中的原始文字块按序号进行排序;
(3)顺序遍历集合中的全部原始文字块,依次计算相邻两个原始文字块的水平位置差异值dx[i]和垂直位置差异dy[i];
(4)设置和计算4个统计计数器如下(初值全部置为0,并设c1为容忍度系数,根据经验可取为0.2,c2为间距系数,根据经验可取为1.0):
a)等水平位置计数器Zx,用来记录满足abs(dx[i])<c1*h的出现次数,其中abs表示取绝对值(下同);
b)等高度计数器Zy,用来记录满足abs(dy[i])<c1*h的出现次数,;
c)横排方向计数器Nx:对满足abs(dy[i])<c1*h的差异值,检查其对应的dx[i]值,如果dx[i]>0,则Nx加一,否则Nx减一;
d)竖排方向计数器Ny:如果dx[i]>c2*h,则Ny加一,如果dx[i]<-c2*h,则Ny减一;
(5)遍历完成后,根据四个计数器的值,判定排版类型如下:
a)如果Zx>Zy,且Ny>0,则为从左到右的竖排;
b)如果Zx>Zy,且Ny<0,则为从右到左的竖排;
c)如果Zx>Zy,且Ny=0,则为竖排无方向;
d)如果Zx<=Zy,且Nx>=0,则为从左到右的横排;
e)如果Zx<=Zy,且Nx<0,则为从右到左的横排;
排版类型的确定,也可以使用其他的方法,如对集合内的文字计算出相邻字符的水平和垂直的平均间距,按间距确定文字的排版方向是横排或 竖排。
对于已知排版类型的版面,可以省略该步骤。
排版类型确定后,按排版类型的文字阅读顺序进行原始文字块的排序,并对文字块进行了合并,合并的步骤是:
(1)合并文字块的内容为集合内所有原始文字块按顺序拼接;
(2)合并文字块的区域为集合内所有原始文字块矩形的最小包容矩形;
(3)合并文字块的字号为集合内所有原始文字块字号的平均值;
(4)合并文字块的字体为集合内原始文字块数量最多的字体;
图3是原始文字块合并后的效果图,左侧的中部31为当前选中的合并文字块32的详细信息。
图3中,左侧部分显示了选中文字块的信息,可以看到,文字块已经合并。合并文字块上显示的<16∶1>10,其中第二个数字为排版类型,取值1表示横排从左到右,取值3表示竖排从左到右,取值4表示竖排从右到左,取值5表示竖排无方向。可以看到各合并文字块的排版类型已经正确获取。
第四步:S14,按合并文字块的字号标定合并文字块的属性为标题或正文;
本实施例中,使用字号大小作为判断依据,阈值取为13pt。
对于阈值附件的合并文字块,往往存在误判的可能,因此还可以参考合并文本块位置、以及周边的合并文字块的属性情况而确定。
如图4所示,图4是合并文字块进一步标引后的效果图,图4中,合并文字块上显示的<16∶1>10,其中第一个数字块类型,如取值16表示正文块,取值1表示标题块。可以看到标题和正文已经区分,如41和42所示,41 所指示的部分为标题,42所指示的部分为正文。
第五步:S15,对多个合并文字块进行再合并,构建文章;
本实施例中,使用了人工操作合并的方法,选中需要再合并的多个文字块,进行合并操作,软件自动根据选中顺序进行正文的合并。
也可以使用语义、词性、字体、字号等信息利用软件进行智能判定阅读顺序后再进行合并。
图5显示了再合并的后的结果,可以看到整个正文已经合并。左侧51为当前选中的合并文字块52的详细信息。
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。