文本提取调研(一)
背景:全文检索项目需要处理一些非文本文档格式的文件,提取其中的内容,已便建索引。比如html、pdf、office系列等。
本文总结一下对pdf和office系列 格式的文件内容提取的调研。
?
?
一、word/ppt/excel 文本提取调研
???? 主要调研的是 apache 的 poi ;
??????? 1、官方网站??http://poi.apache.org/?;最新的版本是 3.8 beta 2;下载地址:http://www.apache.org/dyn/closer.cgi/poi/dev/bin/poi-bin-3.8-beta2-20110408.zip
??????
???????? 2、apache官方关于poi text extractor 的介绍:
?? 支持各种版本文件的提取.doc .docx .xls .xlsx .ppt .pptx,甚至更老版本的 Word 6 和 Word 95 文件;
?? 支持 .vsd .pub 文件的提取
?? 支持提取嵌入到office文件中的文件的内容;
?
?
?
3、demo验证的结果:(使用的poi 3.8 beta2版本)
?? 支持 各版本的文档,97-2003的 doc xls ppt , 2007后的 docx pptx xlsx
?? 支持 英文? 中文简体 中文繁体,三者混合文档也能成功提取全文
?? 可以提取大纲
?? 支持提取 文档基本信息,如 作者 等;
?? PS:未验证对office文档中各对象的识别和提取
二、pdf文档文本提取调研
??? 主要看了两个开源项目 xpdf, 和apache 的 pdfbox;
???? 两者详细对比见下表:
?PDFBOXXPDF概要Apache?开源项目,提供开发jar包;文档较齐;官方网站:http://pdfbox.apache.org/开源软件,用C/C++开发,可以获取源码,无文档;不提供开发包;使用命令行提取文本官方网站:http://foolabs.com/xpdf/home.html使用方法1、????使用jar包自己开发2、????使用命令行(未测试)如?usage: java -jar pdfbox-app-x.y.z.jar ExtractText [OPTIONS]?[Text file]安装xpdf,?使用pdftotext程序,配置xpdfrc文件,安装语言包提取全文处理时长pdf?文件大小:8763KB加载文件到内存Time for Loading PDF: 2.094 seconds;提取全文:Time for extraction: 16.781 secondscommand line?命令执行时长:加载文件到内存Time for execute cmd: 0.031 seconds;从内存逐行读取文本Time for reading buffer: 5.219 seconds英文支持支持支持中文简体支持支持支持中文繁体支持支持,个别内容会读出乱码支持,个别内容会读出乱码其他语言支持未测试提供的语言包(未测试)Arabic:?阿拉伯Chinese/simplified:中文简体?Chinese/traditional:?中文繁体Cyrillic:?西里尔字母Greek:?希腊Hebrew:?希伯来语Japanese:?日文Korean:?韩文Latin2:?拉丁Thai:?泰文Turkish?土耳其加解密支持,未测试支持,未测试格式读取较全面的api;可以:提取metadata?文档信息;提取outline?大纲;提取全文;其他未测试只支持全文提取;文档信息可用pdfinfo程序读出;其他无?
?
???三、调研了下如何检测文本文件(字节流)的编码方式;????? 主要看了两个开源的项目 jchardet?? 和 juniversalchardet????? jchardet 和 juniversalchardet 都是mozilla的探测字符集编码库的java版本;????? jchardet 用的是mozilla的 chardet 库,juniversalchardet 是用的mozilla的 universalchardet库;
? ? ? jchardet 库比较老了,universalchardet库是比较新的,据juniversalchardet 官网介绍,universalchardet库的识别准确度更高;
????? jchardet 的官网 是?http://jchardet.sourceforge.net/index.html; 最新版本是 1.1;
????? juniversalchardet 的官网:http://code.google.com/p/juniversalchardet/?,最新版本是1.0.3;
?????????? 用juniversalchardet-1.0.3.jar 做了个简单的demo,测试用的几个文本文档都能其字符集;????? jchardet没有验证;?四、 OCR调研(进行中)???? 鉴于pdf文档有很多并不是标准的文档格式制作的,例如用图片做成的pdf文档,这种文档的数量也比较多;于是准备研究一些OCR开源项目,看能否提取其中的文本出来;???? 现在找了两个,一个是 ocropus ,一个是 tesseract-ocr;正在研究中