一种基于语义的PDF文档的处理方法及处理装置
技术领域
本发明涉及文件处理技术领域,特别涉及一种基于语义的PDF文档的处理方法及处理装置。
背景技术
PDF全称PortableDocumentFormat,即“便携文档格式”,是一种电子文档格式。这种格式与操作平台无关,跨平台特点突出,可在几乎所有的平台上使用。这一特性使它成为在Internet上进行电子文档发行和数字化信息传播的首选文档格式。越来越多的图书文献资料首选PDF作为其电子发布的形式,如电子图书、产品说明、公司公告、网络资料、电子邮件等。PDF格式已成为用于将信息数字化的一个事实上的工业标准。
PDF格式有其鲜明的技术特色,如跨平台性优越;可集成多种媒体信息出版和发布,可集成超文本链接、声音及动态影像等电子信息;提供了对网络信息发布的支持。其中,在PDF的可信可靠,维护信息完整性与一致性及保持信息安全性上,最为使用者所称道的则是其安全性,数字签名或使用密码保护。而其他格式则很容易地可以修改或编辑。
PDF的安全性首先保证了PDF文档不能被编辑,至少不能被轻易修改;其次可通过设置权限,限制用户的内容打印、内容复制甚至是评论或批注的添加、修改或删除。
PDF文档只供阅读,不能被修改,确保了内容的完整性与其他特性。
从人们认知习惯的角度或从语义角度看,无论对于图书、期刊或杂志等纸质文档,还是其他电子格式出版的文档,其基本组成结构通常都是段落,特别是文字性的内容,其组织结构或对象类型都可以认为是段,段落之间的连续关系能够使一个PDF逻辑对象得以重现。
在实际的排版过程中,一个语义上完整的逻辑对象,可能分到不同的页面中,形成了跨页的对象。
常常会有这种情况,一篇文章,部分出现在第一页,而另外一部分却出现在第n页上,还有可能剩余的部分出现在第n+x页上,这些页面并不连续,但其表达的对象,也就是这篇文章却是一个整体。
通常,对PDF文档的处理是逐页进行的,这样对跨页的对象的处理就成了一个问题,最常见的是跨页段落的连续性处理(连续性处理,针对的是逻辑上关联,属于同一个逻辑对象,而物理上被分割开的段落的处理,这些段落位于多个不连续的页面上,也就是说处于物理上的分割状态),就是说一个完整的对象处于不同的PDF页面中时,如何将其重现,如何从语义上完整再现,成了一个问题。
PDF文档通常包含多个内容对象,这一系列的内容对象,在许多情况下在逻辑上是关联的,但在物理上是分离的、不连续的。对PDF文档的逐页处理,不能有效地将一个完整的逻辑对象抽取出来。
有效地处理好段落的连续性问题,可能助于逻辑对象的重现,有助于人们对PDF文档的理解,特别是有助于用户提取某一单独的PDF文档。
发明内容
本发明要解决的技术问题是提供一种基于语义的PDF文档的处理方法及处理装置,解决现有的PDF文档中一个语义上完整的逻辑对象,可能分到不同的页面中,形成了跨页的对象,在进行PDF文档处理时,不能有效地将一个完整的逻辑对象抽取出来的问题。
为了解决上述技术问题,本发明实施例提供一种基于语义的PDF文档的处理方法,包括:
获取PDF文档的对象模型;
提取所述对象模型的目录簿;
根据所述目录簿查找PDF的文章线索记录;
对所述文章线索记录中的逻辑对象进行处理,得到完整连续的逻辑对象流。
进一步地,所述提取所述对象模型的目录簿的步骤包括:
获取所述对象模型的交叉索引表;
根据所述交叉索引表,获取得到PDF文档的追踪字典;
根据所述追踪字典,分析得到所述对象模型的目录簿。
进一步地,所述根据所述追踪字典,分析得到所述对象模型的目录簿的步骤具体为:
通过第一预设键值查找所述追踪字典,获取所述第一预设键值对应的对象,得到所述对象模型的目录簿。
进一步地,所述目录簿包括:PDF文档的页面信息、页面对应的编码树、文档及PDF的大纲书签和所述PDF文档所拥有的逻辑对象信息。
进一步地,所述根据所述目录簿查找PDF的文章线索记录的步骤具体为:
在所述目录簿中通过第二预设键值,查找得到所述PDF文档的文章线索记录。
进一步地,所述对所述文章线索记录中的逻辑对象进行处理,得到完整连续的逻辑对象流的步骤具体为:
对所述文章线索记录中的每个文章线索对象,通过第三预设键值检索,得到第一个逻辑对象,从第一个逻辑对象开始,依次向后遍历所有逻辑对象,从而得到一个完整连续的逻辑对象流。
本发明实施例还提供一种基于语义的PDF文档的处理装置,包括:
获取模块,用于获取PDF文档的对象模型;
提取模块,用于提取所述对象模型的目录簿;
查找模块,用于根据所述目录簿查找PDF的文章线索记录;
处理模块,用于对所述文章线索记录中的逻辑对象进行处理,得到完整连续的逻辑对象流。
进一步地,所述提取模块,包括:
第一获取单元,用于获取所述对象模型的交叉索引表;
第二获取单元,用于根据所述交叉索引表,获取得到PDF文档的追踪字典;
分析单元,用于根据所述追踪字典,分析得到所述对象模型的目录簿。
进一步地,所述分析单元具体为:
通过第一预设键值查找所述追踪字典,获取所述第一预设键值对应的对象,得到所述对象模型的目录簿。
进一步地,所述查找模块具体为:
在所述目录簿中通过第二预设键值,查找得到所述PDF文档的文章线索记录。
进一步地,所述处理模块具体为:
对所述文章线索记录中的每个文章线索对象,通过第三预设键值检索,得到第一个逻辑对象,从第一个逻辑对象开始,依次向后遍历所有逻辑对象,从而得到一个完整连续的逻辑对象流。
本发明的有益效果是:
上述方案,通过依据逻辑对象对PDF文档进行处理,获取得到一篇PDF文档的完整语义,此种方式,可以依据语义对PDF文档进行提取,方便了使用者的阅读。
附图说明
图1表示本发明实施例的处理方法的总体流程图;
图2表示本发明实施例的处理装置的模块示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明针对现有的PDF文档中一个语义上完整的逻辑对象,可能分到不同的页面中,形成了跨页的对象,在进行PDF文档处理时,不能有效地将一个完整的逻辑对象抽取出来的问题,提供一种基于语义的PDF文档的处理方法及处理装置。
如图1所示,本发明实施例的所述基于语义的PDF文档的处理方法,包括:
步骤10,获取PDF文档的对象模型;
步骤20,提取所述对象模型的目录簿;
步骤30,根据所述目录簿查找PDF的文章线索记录;
步骤40,对所述文章线索记录中的逻辑对象进行处理,得到完整连续的逻辑对象流。
本发明上述实施例,通过依据逻辑对象对PDF文档进行处理,获取得到一篇PDF文档的完整语义,此种方式,可以依据语义对PDF文档进行提取,方便了使用者的阅读。
可选地,本发明实施例的所述步骤20包括:
步骤21,获取所述对象模型的交叉索引表;
步骤22,根据所述交叉索引表,获取得到PDF文档的追踪字典;
步骤23,根据所述追踪字典,分析得到所述对象模型的目录簿。
具体地,所述步骤23具体为:
通过第一预设键值查找所述追踪字典,获取所述第一预设键值对应的对象,得到所述对象模型的目录簿。
应当说明的是,所述目录簿为PDF自身已定义的信息,其包含诸多信息,比如包括:PDF文档的页面信息、页面对应的编码树、文档及PDF的大纲书签(即PDF的大纲Outlines)和所述PDF文档所拥有的逻辑对象信息(即PDF文档所拥有的Article信息)。
可选地,本发明实施例的所述步骤30具体为:
在所述目录簿中通过第二预设键值,查找得到所述PDF文档的文章线索记录。
在得到文章线索记录后便是对每个文章线索进行处理,以得到完整连续的逻辑对象流,从而得到完整的语义,因此,本发明实施例的所述步骤40具体为:
对所述文章线索记录中的每个文章线索对象,通过第三预设键值检索,得到第一个逻辑对象,从第一个逻辑对象开始,依次向后遍历所有逻辑对象,从而得到一个完整连续的逻辑对象流。
应当说明的是,所述目录簿、文章线索记录、逻辑对象以及追踪字典均是PDF文档自身已有的信息,其中,用Catalog表示目录簿,Thread表示文章线索记录,Bead表示每个Thread中的逻辑对象,Trailer表示追踪字典。
对本发明实施例的所述方法的具体应用过程举例说明如下:
a)打开PDF文档,抽取PDF文档对象模型;
b)提取PDF本身所具有的Catalog;
主要实现步骤是:分析PDF自身的树形层次结构,查找与PDF文档对应的Catalog部分,然后进行提取;解析PDF文档的体系结构,得到PDF本身的交叉索引表;再通过检索所得到的交叉索引表,得到PDF自身的Trailer字典;通过对Trailer字典分析,通过键值“ROOT”进行查找,得到“ROOT”所对应的对象,这个对象就是PDF文档自身的Catalog对象,这个对象包括了诸多信息如关于页面的、页面对应的编码树、文档及PDF的大纲Outlines以及PDF所拥有的Article信息。
c)在Catalog对象中通过键值“Threads”查找PDF的Thread记录;
其中,Thread记录包含有多个Thread字典,每个Thread字典对应于PDF的一个Article,对每个Thread字典进行逐一处理,可得到各个Thread对象。
d)因Thread字典用来保存Bead,每个Bead又以字典的形式存在于Thread对象中,因此以键值“F”检索每个Thread字典,可得到该Thread对象的第一个Bead,因Bead对象在Thread对象中以双向链表的数据结构存在(Bead可以是任何的PDF文档所定义的对象),通过Bead的下一条(NEXT)记录,可检索到当前节点(最后一个Bead除外)的后一个兄弟节点,通过Bead的前一条(PREV)记录,可检索到当前节点(第一个Bead除外)的前一个兄弟节点。
如果一个Bead出现在某个PDF页面上,这个页面会有一个记录“B”,其值对应的是页面中对Bead的引用,这样可构成一个数组,按照被引用的先后次序存放在B记录中。
通过对B记录的处理,也就是说对Thread对象的处理,可以方便的对跨页的段落进行连续性处理,从而得到一个完整的逻辑对象。
应当说明的是,一个PDF文档可以定义若干个PDF的Article,一个Article对应一个完整的PDF对象,可能是物理上不连续的对象,每个Article的连续的内容流对应一个ArticleThread,这个ArticleThread由各个独立的内容对象组成,这些独立的内容对象被称为“Bead”,也就是说每个Article对象具体内容的各个部分以“Bead”的形式存在于Thread中。通过PDF文档自身的导航工具,可遍历检索Thread中的各个Bead,获取得到被分割的对象的各个部分从而重构出一个完整的对象,处理相关联的段落,重现一个完整的逻辑对象。
如图2所示,本发明实施例还提供一种基于语义的PDF文档的处理装置,包括:
获取模块100,用于获取PDF文档的对象模型;
提取模块200,用于提取所述对象模型的目录簿;
查找模块300,用于根据所述目录簿查找PDF的文章线索记录;
处理模块400,用于对所述文章线索记录中的逻辑对象进行处理,得到完整连续的逻辑对象流。
具体地,所述提取模块200,包括:
第一获取单元201,用于获取所述对象模型的交叉索引表;
第二获取单元202,用于根据所述交叉索引表,获取得到PDF文档的追踪字典;
分析单元203,用于根据所述追踪字典,分析得到所述对象模型的目录簿。
可选地,所述分析单元203具体为:
通过第一预设键值查找所述追踪字典,获取所述第一预设键值对应的对象,得到所述对象模型的目录簿。
可选地,所述查找模块300具体为:
在所述目录簿中通过第二预设键值,查找得到所述PDF文档的文章线索记录。
可选地,所述处理模块400具体为:
对所述文章线索记录中的每个文章线索对象,通过第三预设键值检索,得到第一个逻辑对象,从第一个逻辑对象开始,依次向后遍历所有逻辑对象,从而得到一个完整连续的逻辑对象流。
需要说明的是,该处理装置实施例是与上述处理方法相对应的处理装置,上述处理方法的所有实现方式均适用于该处理装置实施例中,也能达到与所述处理方法相同的技术效果。
以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。