私の目的は、PDFファイルから構造を解析しながらテキストと画像を抽出することです。構造を解析するためのスコープは完全ではありません。見出しと段落を特定できる必要があるだけです。
私はいくつかの異なることを試しましたが、どれもそれほど遠くまで行きませんでした。
誰もがこの問題に取り組む方法について何か提案がありますか?
PDFは構造にあまり興味がないため、基本的に簡単なカットアンドペーストのソリューションはありません。このサイトには、詳細を説明する他の多くの回答があります。しかし、これはあなたに主要なポイントを与えるはずです:
PDFドキュメントでテキスト構造を特定することが非常に難しい場合、どのようにPDF読者はそれをうまく行うのですか?
PDF自体(プロセスの大部分を制御できる場所)でこれを行う場合は、ページ上のすべてのテキストをループし、それらを見てヘッダーを特定する必要があります。テキストのプロパティ(使用されるフォント、ページ上の他のテキストとの相対的なサイズなど)。
さらに、テキストの断片の配置、ページ上の空白、特定の文字、単語、行の近さなどを見て、段落を特定する必要があります... PDF単独で「単語」の概念さえありません。「行」や「段落」は言うまでもありません。
さらに複雑にするために、テキストがページに描画される方法(およびPDFファイル自体に表示される順序)は、適切な読み取り順序である必要はありません(または私たち人間が適切な読み順であると考えるもの)。
ITextSharpまたは他のオープンソースライブラリでは、次のような方法を使用できます。
または、これを正確に実行できる ByteScout PDF Extractor SDK のような商用ツールを使用することもできます。
免責事項:私はByteScoutと提携しています
PDFにはさまざまな形式が用意されているため、ヘッダーとそのサブコンテンツのPDF解析は非常に困難です(不可能ではありません)。しかし、最近[〜#〜] grobid [〜#〜]これはこのシナリオに役立ちます。完璧ではないことはわかっていますが、適切なトレーニングを提供すれば、目標を達成できます。
Grobidはgithubのオープンソースとして利用可能です。
PDFファイルは、tabula-pyまたはtabula-Javaで解析できます。
この記事 でtabula-pyを使用する方法についての完全なチュートリアルを作成しました。 Javaがインストールされていれば、Webブラウザでも表を作成できます。
マークされたコンテンツでない限り、PDFには構造がありません。..さまざまなツールが実行していることを「推測」する必要があります。問題を説明する優れたブログ投稿があります http://blog.idrsolutions.com/2010/09/the-easy-way-to-discover-if-a-pdf-file-contains-structured-content/