-1-
PDF 文件文本内容提取的设计与实现
孟美华,王宏伟
大连理工大学电信学院自动化系,辽宁大连 (116023)
E-mail:meihuaqiu@yahoo.cn
摘 要:PDF 文件格式是面向显示的,本身缺乏语义信息,如果不将其内容提取出来,就
不能实现基于语义的查询。本文设计并实现了一款 PDF 内容提取的工具,首先对 PDF 文件
进行了文本解析,将正文内容字符串流从源码中提取出,并对提取后的字符串流利用解密算
法进行解密,然后利用 Filter 解码算法进行解码,最后将 PDF 的文本内容从解码后的字符串
流中提取出。结果表明本文提出的方法不但能够非常准确的实现 PDF 文件格式的转换,而
且可以非常方便的嵌入到搜索引擎中。
关键词:PDF 文件;文件解析;解密;解码;文本提取
中图分类号:TP391 文献标识码:B
1 引言
PDF(Portable Document Format 便携文档格式)是 Adobe 公司创建的用于进行全球电子
文档存储与分发的一种电子文件格式。PDF 文件格式以其卓越的特性成为在 Internet 上进行
电子文档发行和格式化信息传播的理想文档格式。当前,在 Internet 中的科技论文以 PDF 格
式提交变得越来越流行,如万方数据库等,同时个人电脑中的 PDF 文件也占了文件格式的
很大一部分。现在所有的搜索引擎都只能对纯文本文件进行索引,进而实现对该文件的检索,
但 PDF 文件本身是面向显示的,搜索引擎无法对其进行索引,只有通过先将其转换为纯文
本文件的方法,才能进行索引以及检索,所以将 PDF 格式的文件转化为纯文本文件已经成
为一个亟待解决的问题。
由于开源软件成本低,弹性大,适应能力强以及可以再改进开发等特点受到了广大开发
者的青睐,现在流行的几款开源的 PDF 文件解析工具有:PDFBox,Xpdf,iText,其中 PDFBox
和 iText 都是用 Java 实现的 PDF 文档协作类库,提供 PDF 文档的创建、处理以及文档内容
提取功能,Xpdf 是一款使用 Java 设计的软件。另外文献[1]-[3]提出的 PDF 文件解析方法很
好,首先提取存放 PDF 文档中各页的内容流,然后调用开源软件包中的算法对得到的内容
流进行解码,文献[4]的对内容提取方面做得很成功。经过分析,以上文献还存在一些不足,
例如:
(1) PDFBox,Xpdf,iText 对中文的支持都不够好,并且 iText 的体积相对来说很大;
(2) 文献[1]-[3]对内容提取方面处理的不够精确;
(3) 文献[1]-[4]都没有对加密的 PDF 文件进行处理的功能;
(4) 以上介绍的方法用 Java 实现的,由于 Java 是解释型,源码被编译成二进制伪代码,
由 Java 虚拟机解释执行,而 C/C++是编译型的,最终将源码编译成机器代码,并且对于普
通的本地应用程序,一般 C/C++要快于 Java。
基于以上几点,本文提出了在对 PDF 文件执行解析算法时,加入解密算法的思想,首
先对 PDF 的文件结构进行分析,根据其结构特点,对 PDF 文件进行解析,其中解析过程包
括将 PDF 正文内容字符串流从源码中提取出,并对其进行解密、解码,然后从解析完的字
符串流中将 PDF 的文本内容提取出。出于项目和效率的需求,系统采用 C++实现。最后将
本次开发的工具嵌入到一款已开发完的桌面搜索引擎中,然后对 PDF 文件进行检索,结果
证明通过本文提出的方法可以准确的将 PDF 文件转换为纯文本文件。
http://www.paper.edu.cn
中国科技论文在线