天天看点

Apache Tika-内容解析提取工具集合(a content analysis toolkit)简介支持的文档格式处理过程主要接口代码示例参考

      apache tika toolkit可以自动检测各种文档(如word,ppt,xml,csv,ppt等)的类型并抽取文档的元数据和文本内容。tika集成了现有的文档解析库,并提供统一的接口,使针对不同类型的文档进行解析变得更简单。tika针对搜索引擎索引、内容分析、转化等非常有用。

hypertext markup language

xml and derived formats

microsoft office document formats

opendocument format

portable document format

electronic publication format

rich text format

compression and packaging formats

text formats

feed and syndication formats

audio formats

image formats

video formats

java class files and archives

the mbox format

cad formats

font formats

executable programs and libraries

    tika通过一个parser和一个contenthandler来进行文档分析和处理,其中parser负责解析具体的文档,当解析到需要进行处理的时候,调用contenthandler进行解析内容的处理。contenthandler(org.xml.sax)是一个用于处理sax解析的程序接口,当parser解析到某些内容时(如节点之间的信息,以及节点本身的信息)时,便会根据需要去调用contenthandler的相关处理方法。即一个负责解析,一个负责处理,两者相互协作,最终将信息通过一定的手段返回回来。

     parser是一个接口,对不同的文档进行处理时,需要寻找具体的解析器来实现具体的解析工作。tika通过mimetype来实现对一个文档的具体识别工作,即识别出一个文档是什么样的类型,然后再根据类型寻找相应的parser。最后调用具体实现的parser来完成parse工作。

    contenthandler也是一个接口,对不同的信息进行处理时,需要自己调用具体的信息处理类。一般来说,如果只关心文档内的内容(即有信息的地方),可以使用writeoutcontenthandler。这个handler将所以被解析到的信息通过一个output或write输出到调用者提供的输出流中,这样最终可以读取这个writer中的数据。

     除这些信息之外,还有一些信息需要在处理的过程中被解析和保存,比如一个文档的标题,作者以及contenttype等。在tika中,这些信息被保存在一个叫metadata的对象中。metadata保存了很多与具体文档相关的值,它以一个map的形式,保存相应的元数据信息值。如对于word,它会保存其中的author,keywords这些信息。这些信息对于用一些关键信息进行文档检索非常有用。

    org.apache.tika.parser.parser

    org.xml.sax.contenthandler

    这是大多数sax应用程序要实现的接口。

    如果应用程序需要得到基本分析事件的通知,它需要实现这个接口,并用sax parser注册一个实例。

解析器使用这个实例报告文档相关的事件如element的start,end

<a href="http://my.oschina.net/cloudcoder/admin/pache.org/1.5/formats.html" target="_blank">pache.org/1.5/formats.html</a>

<a href="http://blog.csdn.net/an74520/article/details/20380739" target="_blank">http://blog.csdn.net/an74520/article/details/20380739</a>