是否有一个逐页(或幻灯片幻灯片)基础,使用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是否提供了一种通用的机制来逐页提取文本和图像,以及如何使用它?