Apache Tika是基于java的內(nèi)容檢測(cè)和分析的工具包,可檢測(cè)并提取來(lái)自上千種不同文件類型(如PPT,XLS和PDF)中的元數(shù)據(jù)和結(jié)構(gòu)化文本。 它提供了命令行界面、GUI界面和一個(gè)java庫(kù)。Tika可幫助搜索引擎抓取內(nèi)容后的數(shù)據(jù)處理。
Tika的處理過(guò)程
內(nèi)置解析器會(huì)在后臺(tái)通過(guò)外部程序提供的API與之交互,并進(jìn)行相應(yīng)的文檔內(nèi)容信息和文檔相關(guān)信息的解析處理,具體過(guò)程如下:

正如上圖所展示的,Tika對(duì)文檔內(nèi)容信息的解析處理的流程如下:Tika通過(guò)MimeType(MIME是MIME(Multipurpose Internet Mail Extensions)多用途互聯(lián)網(wǎng)郵件擴(kuò)展類型。是設(shè)定某種擴(kuò)展名的文件用一種應(yīng)用程序來(lái)打開(kāi)的方式類型)來(lái)實(shí)現(xiàn)對(duì)一個(gè)文檔的具體識(shí)別工作,通過(guò)Language identifier來(lái)識(shí)別語(yǔ)言。根據(jù)MimeType和Language identifier的識(shí)別結(jié)果,選擇調(diào)用具體的Parser來(lái)解析文檔。而處理則由ContentHandler接口來(lái)完成。其中parser負(fù)責(zé)解析具體的文檔,當(dāng)解析到需要進(jìn)行處理的時(shí)候,調(diào)用具體的信息處理類中的contentHandler進(jìn)行解析內(nèi)容的處理。解析、處理后得到的結(jié)果作為返回的值。
另外,關(guān)于文檔的元信息會(huì)在處理的過(guò)程中被解析,并保存在Metadata對(duì)象中。比如一個(gè)文檔的最后編輯時(shí)間,最后的保存時(shí)間,標(biāo)題,作者以及contentType等。這些信息對(duì)于用一些關(guān)鍵信息進(jìn)行文檔檢索非常有用。
環(huán)境配置
- java jdk
- 下載Tika的源代碼Mirrors for tika-1.14-src.zip和Tika的jar包Mirrors for tika-app-1.14.jar
嘗試使用GUI圖形界面進(jìn)行文件格式轉(zhuǎn)換
- 在命令行中輸入Java -jar C:\jar\tika-app-1.18.jar --gui,調(diào)出gui圖形界面。
-
新建待分析文本tika_text.txt:
tika_text.txt
解析為metadata:
應(yīng)用舉例:某書籍的內(nèi)容
metadata
formatted text:
formatted text
plain text:
plain text
structured text:
structured text
recursive JSON:
recursive JSON
其他tika的使用途徑
命令行使用tika:
除了用gui進(jìn)行操作外,還可以在命令行界面中使用java -jar tika-app-1.15.jar --text .doc命令進(jìn)行文本格式的轉(zhuǎn)換,text為要轉(zhuǎn)變的格式,.doc為你想要轉(zhuǎn)變的文本的物理位置。在java工程中使用Tika:
在eclipse中新建項(xiàng)目并導(dǎo)入tika-app-1.14.jar,編寫代碼使用Tika facade 類從文件中提取文本:
import java.io.File;
import java.io.IOException;
import org.apache.tika.Tika;
import org.apache.tika.exception.TikaException;
import org.xml.sax.SAXException;
public class TikaExtraction {
public static void main(final String[] args) throws IOException, TikaException {
//Assume sample.txt is in your current directory
File file = new File("sample.txt");
//Instantiating Tika facade class
Tika tika = new Tika();
String filecontent = tika.parseToString(file);
System.out.println("Extracted Content: " + filecontent);
}
}
代碼來(lái)源:https://www.yiibai.com/tika/tika_content_extraction.html
但由于本機(jī)java10版本與eclipse不兼容,也未找到適合的插件,代碼未運(yùn)行成功。





