Tika支持多種功能:文檔類型檢測 內容提取 元數據提取 語言檢測。
什麼是tika
Tika全名Apache Tika,是用於文件類型檢測和從各種格式的文件中提取內容的一個庫。
Tika使用現有的各種文件解析器和文檔類型的檢測技術來檢測和提取數據。
使用Tika,可以輕鬆提取到的不同類型的文件內容,如電子表格,文本文件,圖像,PDF文件甚至多媒體輸入格式,在一定程度上提取結構化文本以及元數據。
統一解析器接口:Tika封裝在一個單一的解析器接口的第三方解析器庫。由於這個特徵,用戶逸出從選擇合適的解析器庫的負擔,並使用它,根據所遇到的文件類型。
使用的Tika facade類是從Java調用Tika的最簡單和直接的方式,而且也沿用了外觀的設計模式。可以在 Tika API的org.apache.tika包Tika 找到外觀facade類。
Tika提供用於解析不同文件格式的一個通用API。它採用83個現有的專業解析器庫,所有這些解析器庫是根據一個叫做Parser接口單一接口封裝。
Tika支持的文件格式
文件格式 | 類庫 | Tika中的類 |
---|---|---|
XML | org.apache.tika.parser.xml | XMLParser |
HTML | org.apache.tika.parser.htmll and it uses Tagsoup Library | HtmlParser |
MS-Office compound document Ole2 till 2007 ooxml 2007 onwards | org.apache.tika.parser.microsoftorg.apache.tika.parser.microsoft.ooxml and it uses Apache Poi library | OfficeParser(ole2)OOXMLParser(ooxml) |
OpenDocument Format openoffice | org.apache.tika.parser.odf | OpenOfficeParser |
portable Document Format(PDF) | org.apache.tika.parser.pdf and this package uses Apache PdfBox library | PDFParser |
Electronic Publication Format (digital books) | org.apache.tika.parser.epub | EpubParser |
Rich Text format | org.apache.tika.parser.rtf | RTFParser |
Compression and packaging formats | org.apache.tika.parser.pkg and this package uses Common compress library | PackageParser and CompressorParser and its sub-classes |
Text format | org.apache.tika.parser.txt | TXTParser |
Feed and syndication formats | org.apache.tika.parser.feed | FeedParser |
Audio formats | org.apache.tika.parser.audio and org.apache.tika.parser.mp3 | AudioParser MidiParser Mp3- for mp3parser |
Imageparsers | org.apache.tika.parser.jpeg | JpegParser-for jpeg images |
Videoformats | org.apache.tika.parser.mp4 and org.apache.tika.parser.video this parser internally uses Simple Algorithm to parse flash video formats | Mp4parser FlvParser |
java class files and jar files | org.apache.tika.parser.asm | ClassParser CompressorParser |
Mobxformat (email messages) | org.apache.tika.parser.mbox | MobXParser |
Cad formats | org.apache.tika.parser.dwg | DWGParser |
FontFormats | org.apache.tika.parser.font | TrueTypeParser |
executable programs and libraries | org.apache.tika.parser.executable | ExecutableParser |
JAVA使用
引入依賴
<dependencies>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.17</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>jbig2-imageio</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.8.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
代碼測試
- 解析pdf文件
public class PdfParse {
public static void main(final String[] args) throws Exception {
BodyContentHandler handler = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
FileInputStream inputstream = new FileInputStream(new File("/Users/xx/Downloads/Domain-Driven Design Distilled.pdf"));
ParseContext pcontext = new ParseContext();
//parsing the document using PDF parser
PDFParser pdfparser = new PDFParser();
pdfparser.parse(inputstream, handler, metadata,pcontext);
//getting the content of the document
System.out.println("Contents of the PDF :" + handler.toString());
//getting metadata of the document
System.out.println("Metadata of the PDF:");
String[] metadataNames = metadata.names();
for(String name : metadataNames) {
System.out.println(name+ " : " + metadata.get(name));
}
}
}
- 提取excel文件
public String parseExcel() {
try {
File file = new File("C:\\Users\\FileRecv\\book1.xlsx");
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
FileInputStream fileInputStream = new FileInputStream(file);
ParseContext parseContext = new ParseContext();
OOXMLParser msofficeparser = new OOXMLParser();
msofficeparser.parse(fileInputStream, handler, metadata, parseContext);
return handler.toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}