Apache Tika从哪里获得“计数”?

时间:2013-02-21 11:19:15

标签: java pdf apache-tika

如果我有以下代码来阅读PDF中的段落数量(Office.PARAGRAPH_COUNT):

TikaInputStream pdfStream = TikaInputStream.get(new File("some-doc.pdf"));

ContentHandler handler = new DefaultContentHandler();
Metadata pdfMeta = new Metadata();
ParseContext pc = new ParseContext();

Parser parser = TikaConfig.getDefaultConfig().getParser();

parser.parse(pdfStream, handler, pdfMeta, pc);

int pdfParagraphCount = pdfMeta.getInt(Office.PARAGRAPH_COUNT);

Tika是否获得pdfParagraphCount

  • 只需查询PDF的元数据计数?或者通过
  • 在读取整个PDF时将一些“段落计数”算法应用于解析器?

如果前者是这种情况,那么持有计数的元数据字段是否可写?意思是,可能是错的吗?任何有iText或PDFbox的小丑都可以操纵该字段并使其不正确吗?

有没有办法让Tika计算段落(正确地,通过应用一些算法或策略)来读取PDF文件?

基本上,我需要PDF中的段落数量,我需要它准确无误,没有机会或损坏/不正确,可写的元数据字段(因为我自己不生成原始PDF)。提前谢谢。

1 个答案:

答案 0 :(得分:0)

Tika为您提供文档本身的元数据。它不会计算任何元数据,所有你得到的就是那里。 (Tika有时会做一些工作来规范文件格式之间的事情,这样元数据在不同的文档类型中是一致的,但这主要只是映射到标准元数据方案上。)

你也有点不走运,我需要它准确无法将成为像PDF这样的文件格式的问题。 PDF不是基于行/段的文件格式。当然,您可以生成一个PDF,其中所有内容都在行和段落中相对定位,但您也可以构建一个每个字符绝对放在页面上的一个。 Tika(以及下面的Apache PDFBox)将尽力将其转换为有用的文本块,但如果有人真的想弄乱你,他们可以生成一个PDF,这在很大程度上不可能自动归类为段落......