Text 是否可以使用ApacheTika逐页提取word/pdf文件的文本?

Text 是否可以使用ApacheTika逐页提取word/pdf文件的文本?,text,apache-tika,Text,Apache Tika,我能找到的所有文档似乎都表明我只能提取整个文件的内容。但我需要单独提取页面。我需要为此编写自己的解析器吗?有什么明显的方法是我缺少的吗?您需要使用底层库-Tika在页面级别不做任何事情 对于PDF文件,PDFBox应该能够为您提供一些页面内容。换句话说,ApachePOI的HWPF和XWPF并不真正做页面级的事情——分页符不存储在文件中,而是需要根据文本+字体+页面大小进行动态计算…实际上Tika处理页面(至少在pdf中)通过在页面开始之前和页面结束之后发送元素。您可以使用此选项轻松地在处理程序

我能找到的所有文档似乎都表明我只能提取整个文件的内容。但我需要单独提取页面。我需要为此编写自己的解析器吗?有什么明显的方法是我缺少的吗?

您需要使用底层库-Tika在页面级别不做任何事情


对于PDF文件,PDFBox应该能够为您提供一些页面内容。换句话说,ApachePOI的HWPF和XWPF并不真正做页面级的事情——分页符不存储在文件中,而是需要根据文本+字体+页面大小进行动态计算…

实际上Tika处理页面(至少在pdf中)通过在页面开始之前和页面结束之后发送元素
。您可以使用此选项轻松地在处理程序中设置页面计数(仅使用
计数页面):


使用pdf执行此操作时,如果解析器没有按正确的顺序发送文本行,您可能会遇到问题-请参阅如何处理此问题。

您可以使用对象的
xmpTPg:NPages
键获取pdf中的页数,如下所示:

Parser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
ParseContext parseContext = new ParseContext();
parser.parse(fis, handler, metadata, parseContext);
metadata.get("xmpTPg:NPages");

因此,虽然Tika在引擎盖下使用PDFBox,但它并没有提供与PDFBox相同的功能范围?我特别感到困惑的是,从我所看到的Tika不允许您按照PDFBox允许的方式设置起始-结束页面——因为这说明ApacheTika提供了跨各种文件格式的通用功能。它永远不会公开每个库所做的一切,相反,它使生活变得简单而一致。因此,如果我想用PDF之类的工具实现逐页操作,Tika不会让我达到目的,我基本上应该使用PDFBox?只计算标记也计算正常段落,而不仅仅是页面,至少对我来说。这并不能回答实际问题。问题不在于如何获得总页数,而在于如何逐页提取文本。
Parser parser = new AutoDetectParser();
Metadata metadata = new Metadata();
ParseContext parseContext = new ParseContext();
parser.parse(fis, handler, metadata, parseContext);
metadata.get("xmpTPg:NPages");