pdf ファイル ("example.pdf") のコンテンツを Paragraph や Chunk などの IText オブジェクトに取得する方法はありますか?
私が生成している新しいpdfでコンテンツを使用する必要があります(他のテキストの中でも)。
いいえ、少なくとも簡単ではありません。
iText がチャンクとパラグラフおよびそのようなすべてのオブジェクトを PDF (または、それぞれのオブジェクトを作成する他の PDF 作成プログラム) に配置すると、「ここからそこまでの単語が段落を形成する」または「これらの単語が章を形成する」という情報は通常失われます。代わりに、複数の配置された文字グループが残っています。(わかりました、もっと情報があるかもしれませんが、ほとんどはありません。)
ただし、できることは、iTextパーサーパッケージなどのクラスを使用してPDFのコンテンツを解析し、配置された文字グループを取得し、ヒューリスティックを適用して、段落、章、またはその他を形成するものを推測することです。 .
その C# コードですが、Java でも動作するはずです。Java の名前空間iTextSharp.text.pdf.parser;
は少し異なるように見えますが、そうである必要があります.parse
Rectangle rect = new Rectangle(48.031496063f, 643.307086614f, 198.42519685f + 68.031496063f, 70.866141732f + 663.307086614f);
RenderFilter f = new RegionTextRenderFilter(rect);
List<RenderFilter> fi = new List<RenderFilter>();
fi.Add(f);
ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), fi.ToArray());
//on java it should be: ITextExtractionStrategy strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), f);
sw.WriteLine(PdfTextExtractor.GetTextFromPage(reader, 1, strategy));
オブジェクトrect
はOCRしたい領域です。すべてのテキストは、pdf に表示されているのと非常によく似た txt ファイルに入れる必要があります。iText での OCR の詳細については、Bruno Lowagie による「iText in action. 2nd edition」の第 15.3 章を確認してください。
免責事項。私は彼の本を読んでいるだけで、ブルーノとは何の関係もありません。iText(Sharp) の使い方に関する私の多くの質問に答えてくれました。