Apache TIKA---抽取多類型文件文本內容和文件的“隱藏信息”

前言

有這樣一個需求“用戶上傳一個文件鄙麦,要得到這個文件的文本內容,和它的創(chuàng)建時間(用戶創(chuàng)建的時間)”
乍一看上去弥雹,很簡單啊缺猛,可以按字節(jié)讀文件或按行讀文件缨叫,也可以根據(jù)文件的類型引入對應的jar包去獲取內容。文件的創(chuàng)建時間荔燎,我找了一些資料耻姥,可以通過下面代碼實現(xiàn):

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;  
     }                             
}   

到了這里,我正打算去實現(xiàn)湖雹,轉念一想咏闪,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.

官方地址

官方介紹說它可以支持上千種文件類型征讲,同時支持搜索引擎索引据某、內容分析、翻譯诗箍。癣籽。÷俗妫看到這筷狼,感覺我又發(fā)現(xiàn)了新大陸!=惩埂材!
下面這張圖是tika的主要結構圖:


tika_architecture.jpg

tika會根據(jù)你輸入的文件自動分配解析工具,如PDFParser汤求、OOXMLParserHtmlParser等等俏险,然后解析語言严拒、MIME type、文本內容和Metedata

我這里使用到Tika兩個功能:

  • 文本內容抽取
  • 元數(shù)據(jù)(MetaData)的獲取
    補充:MetaData即描述數(shù)據(jù)的數(shù)據(jù)竖独!如一個文件的創(chuàng)建者裤唠,創(chuàng)建時間,文檔類型莹痢,字節(jié)數(shù)等等种蘸。維基百科

這里是一個簡單教程,能讓你快速了解并使用其功能http://www.yiibai.com/tika/

使用

Tika是一個開源的項目格二,代碼在這https://github.com/apache/tika劈彪,他提供了多個服務竣蹦,有圖形界面的也有Http服務

GUI

將項目checkout到本地并執(zhí)行mvn clean install顶猜,然后進入tika-app目錄,執(zhí)行

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

可根據(jù)自己的需要去調用

整合本地服務

雖然tika自己提供了服務挠日,但是有的時候,我們想在本地自己搭建一個服務翰舌,在抽取完內容后或許還要做些其他的工作嚣潜。就這個目的,我將1.14版本的tika整合到了本地椅贱,并自己搭建了一個簡單的服務懂算,接口如下

1.png
2.png

依然使用swagger整理接口,如果你對swagger不了解庇麦,可以點這里,代碼放在了github计技,歡迎查看

歡迎瀏覽我的個人博客

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市山橄,隨后出現(xiàn)的幾起案子垮媒,更是在濱河造成了極大的恐慌,老刑警劉巖航棱,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件睡雇,死亡現(xiàn)場離奇詭異,居然都是意外死亡饮醇,警方通過查閱死者的電腦和手機它抱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驳阎,“玉大人抗愁,你說我怎么就攤上這事馁蒂。” “怎么了蜘腌?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵沫屡,是天一觀的道長。 經常有香客問我撮珠,道長沮脖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任芯急,我火速辦了婚禮勺届,結果婚禮上,老公的妹妹穿的比我還像新娘娶耍。我一直安慰自己免姿,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布榕酒。 她就那樣靜靜地躺著胚膊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪想鹰。 梳的紋絲不亂的頭發(fā)上紊婉,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音辑舷,去河邊找鬼喻犁。 笑死,一個胖子當著我的面吹牛何缓,可吹牛的內容都是我干的肢础。 我是一名探鬼主播,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼歌殃,長吁一口氣:“原來是場噩夢啊……” “哼乔妈!你這毒婦竟也來了?” 一聲冷哼從身側響起氓皱,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤路召,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后波材,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體股淡,經...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年廷区,在試婚紗的時候發(fā)現(xiàn)自己被綠了唯灵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡隙轻,死狀恐怖埠帕,靈堂內的尸體忽然破棺而出垢揩,到底是詐尸還是另有隱情,我是刑警寧澤敛瓷,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布叁巨,位于F島的核電站,受9級特大地震影響呐籽,放射性物質發(fā)生泄漏锋勺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一狡蝶、第九天 我趴在偏房一處隱蔽的房頂上張望庶橱。 院中可真熱鬧,春花似錦贪惹、人聲如沸苏章。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽布近。三九已至,卻和暖如春丝格,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背棵譬。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工显蝌, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人订咸。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓曼尊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脏嚷。 傳聞我的和親對象是個殘疾皇子骆撇,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內容