JAVA解析文件內容(Apache tika) 什麼是tika Tika支持的文件格式 JAVA使用 推薦閱讀

Tika支持多種功能:文檔類型檢測 內容提取 元數據提取 語言檢測。

文章轉載——如何使用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 "";
}

推薦閱讀

如何使用Tika提取文件內容

記一次使用tika解析文件文本導致的內存溢出問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章