实验对象:Apache Tika
实验目的:通过尝试使用Apache Tika进行文件格式转换,加深对搜索引擎的理解和认识
目录
- Apache Tika简介
- 配置Apache Tika运行环境
- 用GUI图形界面进行文件格式转换的尝试
- 用命令行使用Tika
- 在java工程中使用Tika
1. Apache Tika 简介
![img_140edae30a044381b875bd042b58706b.png](https://i-blog.csdnimg.cn/blog_migrate/4997109a3a4c6162d3f0f060f388f5cd.png)
Apache Tika是一个用java编写的内容检测和分析框架,是 Apache的 Lucene项目的子项目。它能够检测很多不同文件类型的文件,并提取文件的元数据和结构化文本。它提供了一个命令行界面和一个GUI界面,还提供一个java库。可用于 自然语言处理过程中文本内容的抽取,以及 搜索引擎进行数据抓取后的处理步骤。
![img_a99c8ad7c1278b52ebb14cc128daaff6.png](https://i-blog.csdnimg.cn/blog_migrate/33eaf3ed6d9d37a988d7359c50189aa5.png)
Tika诞生历程
Tika 架构
Tika 体系结构的四个模块
- 语言检测机制
- MIME检测机制
- Parser接口
- Tika Facade类
![img_3b3a4b644eafe2c1cda110a57d7a21b6.png](https://i-blog.csdnimg.cn/blog_migrate/9b64db03e766b56a0fd02d88c659fea8.png)
![img_1358a565eaa88d6f9acabace43efb9e2.png](https://i-blog.csdnimg.cn/blog_migrate/0c80fc7e0a0154cf8b49f61ac0ce2ca1.png)
Tika主要功能
- 文档类型检测
- 内容提取
- 元数据提取
- 语言检测
2. 配置Apache Tika运行环境
验证java环境
![img_fd7bdf81bb9a7ed2e7c66067efdb3628.png](https://i-blog.csdnimg.cn/blog_migrate/096798f7f4aea97fe369230071bd2073.png)
如果没有配置java环境,请 下载并 配置Java JDK
下载Tika的源代码 Mirrors for tika-1.14-src.zip和Tika的jar包 Mirrors for tika-app-1.14.jar
![img_bb0dbda395f5408fa7c09dada00e45e2.png](https://i-blog.csdnimg.cn/blog_migrate/c7d95472648bb53ca305e7984a18d525.png)
Tika官网的下载页面
在cmd里键入命令打开GUI图形界面
![img_d44217b3beb454b9a27047366a72259e.png](https://i-blog.csdnimg.cn/blog_migrate/89222ca409f062f642f7b59708a0518e.png)
命令行打开tika
![img_ec01021df2a53c59068b14bfcece92e4.png](https://i-blog.csdnimg.cn/blog_migrate/b78eb03a30627072eda5ab2f61de36f7.png)
3. 用GUI图形界面进行文件格式转换的尝试
编写一个二进制文件tika_test.txt放在C:\目录下
![img_437f5a0aaf0f0bf5bba64129a102aeab.png](https://i-blog.csdnimg.cn/blog_migrate/bad9e9225b6e5559c583ef6bab5faae6.png)
tika_test.txt
把tika_test.txt拖进gui里,默认显示提取的元数据
![img_3c20820289e33f396e4c93895088f76d.png](https://i-blog.csdnimg.cn/blog_migrate/ba6ba82a83a5562717ef3fe81fc5770a.png)
MetaData
解析成Formatted Text
![img_82e801337c706682d9e720bb77d183ca.png](https://i-blog.csdnimg.cn/blog_migrate/36cef29a7131891d06ecfea7b5fc6dfd.png)
Formatted Text
解析成Plain text
![img_912d8ac9fe6e4b7796b1052099b5704c.png](https://i-blog.csdnimg.cn/blog_migrate/68e38eee31cd3170ce3761861452dc00.png)
Plain text
提取Main content 居然是空的
![img_a2de95e4d5f5cb45de2e302bcb563f78.png](https://i-blog.csdnimg.cn/blog_migrate/e9273148fb940784648d09791dd86933.png)
Main content
解析成XML
![img_3dbc7452a37b562e728fe23d36b6f687.png](https://i-blog.csdnimg.cn/blog_migrate/8d1b13dd7d114c3397e213233cfe62d2.png)
xml
解析成json
![img_7cd1ea76426525c9b57010f70c8ef020.png](https://i-blog.csdnimg.cn/blog_migrate/00c770abb1d119262282ba0ca15bb1d1.png)
json
4. 用命令行使用Tika
先来查看Tika命令行的基本参数
![img_4ebe1f21db75de6499f79676b6a19be6.png](https://i-blog.csdnimg.cn/blog_migrate/6a620790c901462c44bee501cc622680.png)
![img_869c1fd9f4961a0e658f00b3040f6163.png](https://i-blog.csdnimg.cn/blog_migrate/e20fedddeb2c71d8d35400a6dd52c329.png)
![img_d099d07bc52bfe4af20491ab0119406e.png](https://i-blog.csdnimg.cn/blog_migrate/877779549f5e1ab8923e1ee58e962072.png)
基本参数
用命令把doc解析为text
![img_f4c7a978e37b9938870576c4063f1b10.png](https://i-blog.csdnimg.cn/blog_migrate/e4efcdda715cca0e1e435b880c71b603.png)
doc
![img_f105a2b234cb23555b4e2534601f448f.png](https://i-blog.csdnimg.cn/blog_migrate/5ad395682eb7c12b912fa90ca7b4d086.png)
text
5. 在java工程中使用Tika
在Eclipse中新建Java项目,并导入tika-app-1.14.jar
![img_5efb079f028ae8cbae2da67b48846a86.png](https://i-blog.csdnimg.cn/blog_migrate/c1ad3783da8196ed9bc7999fc576523d.png)
编写Test.java
import org.apache.tika.Tika;
import java.io.*;
/**
* Created by Administrator on 2017/5/15.
*/
public class Test {
public static void main(String[] args) throws Exception{
//二进制文件路径
String fileName="c:/tika_test.txt";
//二进制文件
File file1 = new File(fileName);
//通过tika获取文件内容
Tika tika = new Tika();
String filecontent = tika.parseToString(file1);
//打印文件内容
System.out.println("Extracted Content: " + filecontent);
try{
//要转换到的文件
File file =new File("c:/ddd.doc");
//文件不存在就新建
if(!file.exists()){
file.createNewFile();
}
//把二进制文件内容写入doc文件
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
bw.write(filecontent);
bw.close();
System.out.println("Done");
}catch(IOException e){
e.printStackTrace();
}
}
}
运行程序
![img_68930fff65fe7682983e310d439a708d.png](https://i-blog.csdnimg.cn/blog_migrate/0f4ce2907414c39ed7e0415972a5ab2c.png)
在Eclipse中运行
生成ddd.doc,如下图
![img_4336bc9910ab81363b7232e64d8ff362.png](https://i-blog.csdnimg.cn/blog_migrate/3482a78106e9db4c3656a66304c5ec3e.png)
![img_b68562d9e8dd6705c09acef3d54fd096.png](https://i-blog.csdnimg.cn/blog_migrate/e640c6786df37a04f82c5b93d5797eb4.png)
生成的doc文件
参考链接:
Apache Tika from EN-Wikipedia
Tika常见格式文件抽取内容并做预处理
Apache Tika:通用的内容分析工具
cmd中java -jar *.jar 提示Unable to access jarfile *.jar或Windows不能用鼠标双击运行jar文件怎么办解决方案
TIKA环境配置
相关链接:
Apache Tika 官网
Apache Tika Wiki
Apache Tika in Github
Book Tika in Action
Natural Language Processing with Python
潜在语义索引