如何用tika提取.ppt文件的文本?

时间:2013-02-04 21:55:48

标签: java apache-tika text-extraction

我使用AutoDetectParser类使用tika提取了.pdf文件的文本。但是当我使用相同的代码提取.ppt文件的文本时,它会引发异常。怎么做? 感谢

编辑:
我使用的代码是:

File file = new File("1.ppt");
InputStream input = new FileInputStream(file);
Parser autoDetectParser = new AutoDetectParser();
Metadata metadata = new Metadata();
StringWriter writer = new StringWriter();
ContentHandler handler = new WriteOutContentHandler(writer);
autoDetectParser.parse(input, handler, metadata, new ParseContext());

,例外是:

java.lang.NoSuchFieldError: SMALLER_BIG_BLOCK_SIZE_DETAILS
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:93)
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:190)
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:184)
at org.apache.tika.parser.microsoft.POIFSContainerDetector.getTopLevelNames(POIFSContainerDetector.java:371)
at org.apache.tika.parser.microsoft.POIFSContainerDetector.detect(POIFSContainerDetector.java:165)
at org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:61)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:113)
at ppt.PPTParserTest.test3(PPTParserTest.java:52)

我发现问题是由jars中的一些额外classpath引起的。

2 个答案:

答案 0 :(得分:5)

如果运行时类路径中有两个不同版本的POI,则会发生此异常。 在较新版本的POI中,NPOIFSFileSystem引用POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS。旧版本的POI中不存在此常量。

我在我的类路径中遇到tika-app-1.4.jar(捆绑了POI 3.9)和poi-3.0.2-FINAL-20080204.jar的异常。

答案 1 :(得分:-2)

您可以更改方法WorkbookFactory.create(inputStream)
而不是WorkbookFactory.create(File),这可以解决您的问题。祝你好运!