
JavaでPDFファイルからテキストを抽出する
このペースの速い世界では、データの量は指数関数的に拡大しています。 PDFファイルは、データの保存と表現に非常に使用されています。有用な段落にアクセスするために多数のPDFページを通過することは困難になります。したがって、プログラムでJavaのPDFファイルからテキストを抽出する方法を学習します。ただし、テキスト抽出のプロセス全体を自動化すると、時間と労力が節約され、効率が向上します。インストールが簡単なPDFJavaライブラリを使用して、PDFファイルを操作するための構成可能なメソッドを提供します。
このブログ投稿では、次の点について説明します。
PDFJavaライブラリ-インストール手順
このライブラリは、jarファイルをダウンロードしてJavaアプリケーションに簡単にインストールできます。または、次のMaven構成に従うこともできます。
リポジトリ
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
依存
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.12</version>
<classifier>jdk17</classifier>
</dependency>
JavaでPDFファイルからテキストを抽出する
このセクションでは、PDFドキュメントのすべてのページからテキストを抽出する手順とコードスニペットを記述します。
次の手順を実行します。
- Documentクラスのオブジェクトを作成して、PDFドキュメントを開きます。
- TextAbsorberクラスのオブジェクトを初期化して、テキスト抽出を実行します。
- すべてのページのアブソーバーを受け入れるgetPages()メソッドを呼び出します。
- getText()メソッドを呼び出して、抽出されたテキストを取得します。
- 抽出したテキストをファイルに書き込み、ライターを閉じます。
次のコードスニペットをコピーして貼り付け、プログラムでPDFドキュメントからテキストを抽出します。
// Documentクラスのオブジェクトを作成してPDFドキュメントを開きます。
Document pdfDocument = new Document("INPUT-PDF-FILE");
// TextAbsorberのオブジェクトを初期化して、テキスト抽出を実行します。
TextAbsorber textAbsorber = new TextAbsorber();
// すべてのページのアブソーバーを受け入れるgetPages()メソッドを呼び出します。
pdfDocument.getPages().accept(textAbsorber);
// getText()メソッドを呼び出して、抽出されたテキストを取得します。
String extractedText = textAbsorber.getText();
try {
FileWriter writer = new FileWriter( "PATH-FOR-OUTPUT-FILE/extracted-text.txt", true);
// ファイルに1行のテキストを書き込みます
writer.write(extractedText);
// ストリームを閉じる
writer.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
特定のページ領域からテキストを抽出する方法
このライブラリを使用すると、PDFドキュメントの目的のページからテキストを抽出することもできます。
これを実現するには、次の手順に従います。
- Documentクラスのオブジェクトを作成し、ソースPDFファイルをロードします。
- TextAbsorberクラスのオブジェクトをインスタンス化して、データを抽出します。
- 抽出されたテキストを区切る長方形を定義できるgetTextSearchOptions()メソッドを呼び出します。
- getPages()を呼び出して、ドキュメントページのコレクションを取得し、最初のページのアブソーバーを受け入れます。
- getText()を呼び出して、抽出されたテキストを取得し、ファイルに書き込みます。
- close()メソッドを呼び出して、ストリームを閉じます。
次のコードスニペットをコピーしてJavaファイルに貼り付けます。
// Documentクラスのオブジェクトを作成し、ソースPDFファイルをロードします。
Document doc = new Document("INPUT-PDF-FILE");
// TextAbsorberのオブジェクトをインスタンス化して、データを抽出します。
TextAbsorber absorber = new TextAbsorber();
// 抽出されたテキストを区切る長方形を定義できるgetTextSearchOptions()メソッドを呼び出します。-
absorber.getTextSearchOptions().setRectangle(new Rectangle(100, 200, 250, 350));
// getPages()を呼び出して、ドキュメントページのコレクションを取得し、最初のページのアブソーバーを受け入れます。
doc.getPages().get_Item(1).accept(absorber);
// getText()を呼び出して、抽出されたテキストを取得し、ファイルに書き込みます
String extractedText = absorber.getText();
// ライターを作成してファイルを開きます
BufferedWriter writer = new BufferedWriter(new FileWriter(new java.io.File("PATH-FOR-OUTPUT-FILE/ExtractedText.txt")));
// 抽出した内容を書き込む
writer.write(extractedText);
// ライターを閉じる
writer.close();
段落形式でPDFファイルからテキストを抽出するJavaライブラリ
このセクションでは、次の手順と、段落内のPDFドキュメントからデータを抽出するためのコードスニペットについて説明します。
- Documentクラスのオブジェクトを初期化し、ソースPDFファイルをロードします。
- ParagraphAbsorberクラスのオブジェクトを作成します。
- visit(Document doc)を呼び出して、指定したドキュメントのセクションと段落を検索します。
- getPageMarkups()を呼び出して、吸収されたPageMarkupのコレクションを取得します。
- getSections()メソッドを使用して、ページで見つかったMarkupSectionのコレクションをループします。
- このgetParagraphs()メソッドを呼び出して、ページで見つかったMarkupParagraphのコレクションを取得します。
- getLines()メソッドを呼び出して、段落の行を繰り返します。
// Documentクラスのオブジェクトを初期化し、ソースPDFファイルをロードします。
Document doc = new Document( "./static/sample.pdf");
// ParagraphAbsorberクラスのオブジェクトを作成します。
ParagraphAbsorber absorber = new ParagraphAbsorber();
// 指定されたドキュメントのセクションと段落の検索を実行するvisit(Document doc)を呼び出します。
absorber.visit(doc);
// getPageMarkups()を呼び出して、吸収されたPageMarkupのコレクションを取得します。
for (PageMarkup markup : absorber.getPageMarkups()) {
int i = 1;
// getSections()メソッドを使用して、ページで見つかったMarkupSectionのコレクションをループします。
for (MarkupSection section : markup.getSections()) {
int j = 1;
// ページで見つかったMarkupParagraphのコレクションを取得するthsigetParagraphs()methidを呼び出します。 https://reference.aspose.com/pdf/java/com.aspose.pdf/page/Markup#getParagraphs--
for (MarkupParagraph paragraph : section.getParagraphs()) {
StringBuilder paragraphText = new StringBuilder();
// getLines()メソッドを呼び出して、段落の行を繰り返します。
for (java.util.List<TextFragment> line : paragraph.getLines()) {
for (TextFragment fragment : line) {
paragraphText.append(fragment.getText());
}
paragraphText.append("\r\n");
}
paragraphText.append("\r\n");
System.out.println("Paragraph "+j+" of section "+ i + " on page"+ ":"+markup.getNumber());
System.out.println(paragraphText.toString());
j++;
}
i++;
}
}
無料ライセンスを取得する
無料の一時ライセンスを取得して、評価の制限なしにAPIを試すことができます。
まとめ
これで、この記事は終わりです。プログラムでJavaのPDFファイルからテキストを抽出する方法を説明しました。さらに、特定のページ領域からテキストを抽出するためのコードスニペットを調べ、段落形式でのテキスト抽出についても検討しました。さらに、ドキュメントに目を通し、このPDFJavaライブラリの他の機能を調べることができます。最後に、conholdate.comは一貫して新しいブログ投稿を書いています。したがって、最新のアップデートについては連絡を取り合ってください。
質問する
ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。