Apache TIKA---抽取多类型文件文本内容和文件的“隐藏信息”

前言

有这样一个需求“用户上传一个文件,要得到这个文件的文本内容,和它的创建时间(用户创建的时间)”
乍一看上去,很简单啊,可以按字节读文件或按行读文件,也可以根据文件的类型引入对应的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_architecture.jpg

tika会根据你输入的文件自动分配解析工具,如PDFParserOOXMLParserHtmlParser等等,然后解析语言、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

如下动图

gui

Server

关于官方指定使用curl,我就在ubuntu上启动了server,启动的方式为

java -jar tika-server/target/tika-server.jar

测试了一个文件,如下图

server.png

还有其他的方法,如:

  • 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整合到了本地,并自己搭建了一个简单的服务,接口如下

1.png
2.png

依然使用swagger整理接口,如果你对swagger不了解,可以点这里,代码放在了github,欢迎查看

欢迎浏览我的个人博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容