Apache TIKA---抽取多类型文件文本内容和文件的“隐藏信息”
来源:互联网 发布:linux c 删除文件 编辑:程序博客网 时间:2024/06/05 06:44
前言
有这样一个需求“用户上传一个文件,要得到这个文件的文本内容,和它的创建时间(用户创建的时间)”
乍一看上去,很简单啊,可以按字节读文件或按行读文件,也可以根据文件的类型引入对应的jar包去获取内容。文件的创建时间,我找了一些资料,可以通过下面代码实现:
Process p = Runtime.getRuntime().exec("cmd /C dir " + filePath + "/tc" ); InputStream is = p.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String line; while((line = br.readLine()) != null){ if(line.endsWith(".txt")){ strTime = line.substring(0,17); break; } }
到了这里,我正打算去实现,转念一想,apache的工具包里有提供文件复制的功能,即IOUtils.copy(InputStream input, OutputStream output)
,那同样的Apache是否拥有提取文件内容和时间的工具类呢,还真有!这就是接下来要说的Apache Tika
Tika
The Apache Tika™ toolkit detects and extracts metadata and text from over a thousand different file types (such as PPT, XLS, and PDF). All of these file types can be parsed through a single interface, making Tika useful for search engine indexing, content analysis, translation, and much more. You can find the latest release on the download page. Please see the Getting Started page for more information on how to start using Tika.
官方地址
官方介绍说它可以支持上千种文件类型,同时支持搜索引擎索引、内容分析、翻译。。。看到这,感觉我又发现了新大陆!!!
下面这张图是tika的主要结构图:
tika会根据你输入的文件自动分配解析工具,如PDFParser
、OOXMLParser
和HtmlParser
等等,然后解析语言、MIME type、文本内容和Metedata
我这里使用到Tika两个功能:
- 文本内容抽取
- 元数据(MetaData)的获取
补充:MetaData即描述数据的数据!如一个文件的创建者,创建时间,文档类型,字节数等等。维基百科
这里是一个简单教程,能让你快速了解并使用其功能http://www.yiibai.com/tika/
使用
Tika是一个开源的项目,代码在这https://github.com/apache/tika,他提供了多个服务,有图形界面的也有Http服务
GUI
将项目checkout到本地并执行mvn clean install
,然后进入tika-app目录,执行
java -jar tika-app-1.4.jar --gui
如下动图
Server
关于官方指定使用curl
,我就在ubuntu上启动了server,启动的方式为
java -jar tika-server/target/tika-server.jar
测试了一个文件,如下图
还有其他的方法,如:
Extract plain text:
curl -T price.xls http://localhost:9998/tika
Extract text with mime-type hint:
curl -v -H "Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document" -T document.docx http://localhost:9998/tika
Get all document attachments as ZIP-file:
curl -v -T Doc1_ole.doc http://localhost:9998/unpacker > /var/tmp/x.zip
Extract metadata to CSV format:
curl -T price.xls http://localhost:9998/meta
Detect media type from CSV format using file extension hint:
curl -X PUT -H "Content-Disposition: attachment; filename=foo.csv" --upload-file foo.csv http://localhost:9998/detect/stream
可根据自己的需要去调用
整合本地服务
虽然tika自己提供了服务,但是有的时候,我们想在本地自己搭建一个服务,在抽取完内容后或许还要做些其他的工作。就这个目的,我将1.14版本的tika整合到了本地,并自己搭建了一个简单的服务,接口如下
依然使用swagger整理接口,如果你对swagger不了解,可以点这里,代码放在了github,欢迎查看
欢迎浏览我的个人博客
- Apache TIKA---抽取多类型文件文本内容和文件的“隐藏信息”
- (1)Tika获取文件的类型、编码、文本内容
- Tika文本抽取实例
- Apache Lucene Tika 文件内容提取工具
- Apache Lucene Tika 文件内容提取工具
- Apache Tika:通用的内容分析工具
- Apache Tika:通用的内容分析工具
- Apache Tika:通用的内容分析工具
- tika读取文件内容
- tika读取文件内容
- 文件内容读取--Tika
- 不显示隐藏文件和文件扩展名
- shell中判断文件是否存在和文件的类型
- 文件查找和文件内容匹配
- Linux查找文件内容和文件位置
- Java读取Zip文件和文件内容
- #.java上传文件和文件信息
- 关于Apache Tika解析txt文件乱码的研究
- 项目总结:spring+mybatis整合
- 使用Python通过win32 COM打开Excel并添加Sheet
- 欢迎使用CSDN-markdown编辑器
- 小题练习
- windows自带的磁盘填充工具
- Apache TIKA---抽取多类型文件文本内容和文件的“隐藏信息”
- linux ln 命令使用参数详解(ln -s 软链接)
- 为什么不能轻易的实现序列化(implements Serializable) 摘自《Effective Java》
- 小菜鸟学习SpringMVC(四) Json 的测试
- Java多线程死锁情况
- 输油管道问题 分治算法
- web学习阶段总结(2)
- 实现京东商城手机注册获取验证码
- 基于原型链的继承