0

Office.PARAGRAPH_COUNTPDF から段落数 ( ) を読み取る次のコードがあるとします。

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);

ティカはpdfParagraphCount:

  • PDF のメタデータにカウントを照会するだけですか?; またはによって
  • PDF全体を読み取るときに、パーサーに「段落カウント」アルゴリズムを適用しますか?

前者の場合、カウントを保持するメタデータ フィールドは書き込み可能ですか? つまり、それは間違っている可能性がありますか?iText または PDFbox を使用するジョーカーは、フィールドを操作して不正確にすることができますか?

TikaにPDFファイルの読み取りとして(正確には、アルゴリズムまたは戦略を適用することによって)段落をカウントさせる方法はありますか?

基本的に、PDF の段落数が必要であり、完全に正確である必要があり、可能性がなく、破損した/正しくない、書き込み可能なメタデータ フィールドが必要です (元の PDF を自分で作成しないため)。前もって感謝します。

4

1 に答える 1

0

Tikaは、ドキュメント自体からメタデータを返します。メタデータは計算されません。取得するのはそこにあるものだけです。(Tikaは、ファイル形式間で物事を正規化するために少し作業を行うことがあります。これにより、メタデータはさまざまなドキュメントタイプ間で一貫性がありますが、ほとんどの場合、標準のメタデータスキームにマッピングされます)。

あなたも少し運が悪いですが、私はそれが完全に正確である必要がありますPDFのようなファイル形式で問題になるでしょう。PDFは、行/段落ベースのファイル形式ではありません。もちろん、すべてが行と段落に比較的配置されているPDFを生成できますが、各文字が一度に1つずつページに完全に配置されるPDFを作成することもできます。Tika(およびその下のApache PDFBox)は、それを有用なテキストブロックに戻すために最善を尽くしますが、誰かが本当にあなたを混乱させたい場合は、段落に自動的に分類することはほとんど不可能なPDFを生成できます...

于 2013-02-21T11:42:36.457 に答える