文本提取调研(一)


背景:全文检索项目需要处理一些非文本文档格式的文件,提取其中的内容,已便建索引。比如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;

   demo验证结论:
      都支持英文、中文简体 、中文繁体;xpdf 速度快,但提供的功能较简单,用C++开发;pdfbox 因为解析了pdf的格式,速度相对xpdf慢,但功能强大,使用提供的jar包即可做开发;

     两者详细对比见下表:

  PDFBOX XPDF
概要
Apache  开源项目 , 提供开发 jar 包;文档较齐;
官方网站: http://pdfbox.apache.org/
开源软件,用 C/C++ 开发,可以获取源码 , 无文档;不提供开发包;使用命令行提取文本
使用方法
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 seconds
command 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;正在研究中

猜你喜欢

转载自hellstone2008.iteye.com/blog/1530008