使用Apache Tika提取文本和图像

时间:2014-06-11 15:40:17

标签: java apache-tika

是否有一个逐页(或幻灯片幻灯片)基础,使用Apache Tika从文档中提取图像和文本?

对于PDF,我能够直接使用PDFBox代码,类似于以下代码,以达到预期的效果:

PDDocument document = PDDocument.load(input);
List<PDPage> list = document.getDocumentCatalog().getAllPages();

int pageCount = 0;
for (PDPage page : list) {
    pageCount++;

    // get the text for the page
    PDFTextStripper stripper = new PDFTextStripper();
    stripper.setStartPage(pageCount);
    stripper.setEndPage(pageCount);
    String pageText = stripper.getText(document);

    //
    // some stuff here to save the text for the page
    //

    // go through all the resources, saving the images      
    Map<String, PDXObject> pageResources = page.getResources().getXObjects();
    Iterator<String> imageIter = pageResources.keySet().iterator();
    while (imageIter.hasNext()) {
        PDXObject pdxObject = (PDXObjectImage)pageResources.get(imageIter.next());
        if (pdxObject instanceof PDXObjectImage) {

            //              
            // some stuff here to save the image
            //

        }
    }
}

一旦我开始考虑为Word和Powerpoint文档做同样的事情,很明显这将是时间密集型的,我需要一个更通用的解决方案。接下来我研究了实现自定义ContentHandler,但这是不理想的,因为不同的文档类型以不同的格式返回(PDF有div来表示页面,word不是......那种东西)。

那么...... Tika是否提供了一种通用的机制来逐页提取文本和图像,以及如何使用它?

0 个答案:

没有答案