Alex He

...永远保持希望与激情...约会未来更强大的自己...

 

Lucene学习之Tika提取文本信息

目前较新版的Tika(我用的是0.9)都是用Maven构建的。所以学习使用Tika最好的就是直接用Maven了,但是以我的经验,要想完整的了解Maven,并且能够编译好项目,把该依赖的包什么的全部导入,估计要花天把时间。可能有些人Maven都没听过(两个月前的我就是),那几更要花点精力了。

个人建议对Maven不熟悉的还是直接引用jar包。

首先搭建环境:

方式一:通过Maven,使用Eclipse会更方便

方式二:直接引用jar包,官网上有tika-app-0.9.jar 可以直接导入到classpath中或者导入到Eclipse工程中

然后给个例子就明白了

例子中的main函数是现实当前tika中可以解析那些格式的文件,也就是包含那些解析器parser。第二个函数给出了如何解析某种格式文件的过程。

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.Set;
import org.apache.tika.config.TikaConfig;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.apache.tika.parser.pdf.PDFParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.ContentHandler;

public class ShowParser
{
	public static void main(String[] args)
	{
		TikaConfig config = TikaConfig.getDefaultConfig();	
		Set<MediaType>  set= config.getParsers().keySet();
		Iterator<MediaType> it = set.iterator();
	    System.out.println("Mime type parsers:");
	    while(it.hasNext()) {
	      System.out.println("  " + it.next());
	    }
	}
	
	public static void testTiki() throws Exception
	{
		String PATH = "d:\\tempfile\\Maximum Entropy Markov Models for Information Extraction and Segmentation.pdf";
		String OUTPATH = PATH + ".txt";
		
//		Parser parser = new OOXMLParser();//解析微软格式文档
//		Parser parser = new HtmlParser();//解析html文档
		Parser parser = new PDFParser();//解析PDF文档
		
		InputStream iStream = new BufferedInputStream(new FileInputStream(new File(PATH)));//定义输入流		
//		OutputStream oStream = new BufferedOutputStream(new FileOutputStream(new File(OUTPATH)));//定义输出流
		
		//下面定义内容处理器
		//ContentHandler iHandler = new BodyContentHandler(oStream);
		//ContentHandler iHandler = new BodyContentHandler(System.out);		
		ContentHandler iHandler = new BodyContentHandler();
		Metadata meta = new Metadata();
		meta.add(Metadata.CONTENT_ENCODING, "utf-8");
		parser.parse(iStream, iHandler, meta, new ParseContext());//解析
		
		//输出解析结果,如果采用输出流的方式就直接在输出流中获得解析结果
		System.out.println(iHandler.toString());
	}
}

posted on 2011-06-30 13:04  Alex木头  阅读(3263)  评论(2编辑  收藏  举报

导航