一、什麼是Tika?
Apache Tika用於文件類型檢測和從各種格式的文件內容提取的庫。
在內部,Tika使用現有的各種文件解析器和文檔類型的檢測技術來檢測和提取數據。
使用Tika,人們可以開發出通用型檢測器和內容提取到的不同類型的文件,如電子表格,文本文件,圖像,PDF文件甚至多媒體輸入格式,==在一定程度上提取結構化文本以及元數據==。
Tika提供用於解析不同文件格式的一個通用API。它採用83個現有的專業解析器庫,爲每個文檔類型。
所有這些解析器庫是根據一個叫做Parser接口單一接口封裝。
二、架構
三、核心模塊
語言檢測機制
每當一個文本文件被傳遞到Tika,它將檢測在其中的語言。它接受沒有語言的註釋文件和通過檢測該語言添加在該文件的元數據信息。支持語言識別,Tika 有一類叫做語言標識符在包org.apache.tika.language及語言識別資料庫裏面包含了語言檢測從給定文本的算法。Tika 內部使用N-gram算法語言檢測。
MIME檢測機制
Tika可以根據MIME標準檢測文檔類型。Tika默認MIME類型檢測是使用org.apache.tika.mime.mimeTypes。它使用org.apache.tika.detect.Detector 接口大部分內容類型檢測。內部Tika使用多種技術,如文件匹配替換,內容類型提示,魔術字節,字符編碼,以及其他一些技術。
解析器接口
org.apache.tika.parser 解析器接口是Tika解析文檔的主要接口。該接口從提取文檔中的文本和元數據,並總結了其對外部用戶願意寫解析器插件。採用不同的具體解析器類,具體爲各個文檔類型,Tika 支持大量的文件格式。這些格式的具體類不同的文件格式提供支持,無論是通過直接實現邏輯分析器或使用外部解析器庫。
Tika Facade 類
使用的Tika facade類是從Java調用Tika的最簡單和直接的方式,而且也沿用了外觀的設計模式。可以在 Tika API的org.apache.tika包Tika 找到外觀facade類。通過實現基本用例,Tika作爲facade的代理。它抽象了的Tika庫的底層複雜性,例如MIME檢測機制,解析器接口和語言檢測機制,並提供給用戶一個簡單的接口來使用。
四、案例
- 解析標準PDF【現場演示】
tika不能識別圖片裏面的內容,所以掃描版的pdf不能解析
- OCR識別(利用外部程序:Tesseract-OCR)【現場演示】
需要有訓練集
五、結論
- 官方文檔給出tika曾是lucene子項目,應用場景是提出元數據和內容作全文本檢索。
- tika內容解析是靠XHTML SAX events傳遞的,可以直接轉字符串或者xml結構(只做結構化用),之後可以用xpath expression提取數據,類似jsoup。但這做不到通用。
- 提取metadata是文件自身的信息,就和你右鍵文件屬性看到信息一樣,有就有,沒有就沒有,結構化的文本就是整個文件的內容