目前较新版的Tika(我用的是0.9)都是用Maven构建的。所以学习使用Tika最好的就是直接用Maven了,但是以我的经验,要想完整的了解Maven,并且能够编译好项目,把该依赖的包什么的全部导入,估计要花天把时间。可能有些人Maven都没听过(两个月前的我就是),那几更要花点精力了。
个人建议对Maven不熟悉的还是直接引用jar包。
首先搭建环境:
方式一:通过Maven,使用Eclipse会更方便
方式二:直接引用jar包,官网上有tika-app-0.9.jar 可以直接导入到classpath中或者导入到Eclipse工程中
然后给个例子就明白了
例子中的main函数是现实当前tika中可以解析那些格式的文件,也就是包含那些解析器parser。第二个函数给出了如何解析某种格式文件的过程。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
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();
|
1
2
3
4
5
6
7
8
|
Metadata meta =
new
Metadata();
meta.add(Metadata.CONTENT_ENCODING,
"utf-8"
);
parser.parse(iStream, iHandler, meta,
new
ParseContext());
//解析
//输出解析结果,如果采用输出流的方式就直接在输出流中获得解析结果
System.out.println(iHandler.toString());
}
}
|