Javaを使用してPDFドキュメントからテキストと画像を抽出する

PDFは、最も広く使用されているデジタルドキュメント形式です。 PDFドキュメントを解析し、プログラムでそれらからテキストと画像を抽出できます。テキスト分析、情報検索、ドキュメント変換など、いくつかの場合に役立つ可能性があります。この記事では、Javaを使用してPDFドキュメントからテキストと画像を抽出する方法を学習します。

この記事では、次のトピックについて説明します。

PDFドキュメントからテキストと画像を抽出するJavaAPI

PDFドキュメントからテキストと画像を抽出するには、GroupDocs.Parser for JavaAPIを使用します。 サポートされている形式のファイルから、生の、フォーマットされた、構造化されたテキスト、メタデータ、および画像を抽出できます。 APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加してください。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>https://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>22.3</version> 
</dependency>

Javaを使用してPDFドキュメントからテキストを抽出する

以下の手順に従って、PDFドキュメントを解析し、テキストを抽出できます。

  • まず、Parserクラスを使用してPDFファイルをロードします。
  • 次に、Parser.getText()メソッドを呼び出して、ロードされたドキュメントからテキストを抽出します。
  • 次に、TextReaderクラスオブジェクトで結果を取得します。
  • 最後に、TextReader.readToEnd()メソッドを呼び出して、現在の位置からテキストリーダーの最後までのすべての文字を読み取り、それらを1つの文字列として返します。

次のコードサンプルは、Javaを使用してPDFファイルからテキストを抽出する方法を示しています。

// このコード例は、PDFを解析してテキストを抽出する方法を示しています。
// パーサークラスのインスタンスを作成します
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// リーダーにテキストを抽出します
try (TextReader reader = parser.getText()) {
    // ドキュメントからテキストを印刷する
    // テキスト抽出がサポートされていない場合、リーダーはnullです
    System.out.println(reader == null ? "Text extraction isn't supported" : reader.readToEnd());
}
Javaを使用してPDFドキュメントからテキストを抽出する

Javaを使用してPDFドキュメントからテキストを抽出する

Javaを使用してPDFドキュメントの特定のページからテキストを抽出する

以下に説明する簡単な手順に従って、PDFドキュメントを解析し、特定のページからテキストを抽出できます。

  • まず、Parserクラスを使用してPDFファイルをロードします。
  • 次に、Parser.getDocumentInfo()メソッドを使用してドキュメント情報を取得します。
  • 次に、IDocumentInfo.getPageCount()がゼロでないかどうかを確認します。
  • その後、ページインデックスを指定してParser.getText()メソッドを呼び出し、その特定のページからテキストを抽出し、TextReaderクラスオブジェクトで結果を取得します。
  • 最後に、TextReader.readToEnd()メソッドを呼び出して抽出されたテキストを読み取り、結果を表示します。

次のコードサンプルは、Javaを使用して特定のページからテキストを抽出する方法を示しています。

// このコード例は、PDFを解析し、特定のページからテキストを抽出する方法を示しています。
// パーサークラスのインスタンスを作成します
Parser parser = new Parser("D:\\Files\\Parser\\sample.pdf");

// ドキュメント情報を取得する
IDocumentInfo documentInfo = parser.getDocumentInfo();

// ドキュメントにページがあるかどうかを確認します
if (documentInfo == null || documentInfo.getRawPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

// リーダーにテキストを抽出します
try (TextReader reader = parser.getText(1)) {
    // ドキュメントからテキストを印刷する
    // テキスト抽出がサポートされていない場合、リーダーはnullです
    System.out.println(reader.readToEnd());
}

APIを使用すると、ドキュメントがテキスト抽出機能をサポートしているかどうかを確認することもできます。この目的のために、Parser.getFeatures().isText()プロパティを使用できます。 サポートされている機能の詳細をお読みください。

Javaを使用してPDFドキュメントから画像を取得する

以下の手順に従って、PDFドキュメントを解析し、画像を抽出できます。

  • まず、Parserクラスを使用してPDFファイルをロードします。
  • 次に、Parser.getImages()メソッドを呼び出し、ロードされたドキュメントからPageImageAreaオブジェクトのコレクションを取得します。
  • 次に、コレクションがnullでないかどうかを確認します。
  • その後、見つかったすべての画像を繰り返し処理します。
  • 最後に、画像の詳細を表示します。

次のコードサンプルは、Javaを使用してPDFファイルから画像の詳細を取得する方法を示しています。

// このコード例は、PDFを解析して画像を取得する方法を示しています。
// パーサークラスのインスタンスを作成します
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// 画像を抽出する
Iterable<PageImageArea> images = parser.getImages();

// 画像抽出がサポートされているかどうかを確認します
if (images == null) {
    System.out.println("Images extraction isn't supported");
    return;
}

// 画像を繰り返し処理する
for (PageImageArea image : images) {
    // ページインデックス、長方形、画像タイプを印刷します。
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}
Javaを使用してPDFドキュメントから画像を取得する

Javaを使用してPDFドキュメントから画像を取得する

Javaを使用してPDFドキュメントの特定のページから画像を抽出する

以下の簡単な手順に従って、特定のページから画像を抽出できます。

  • まず、Parserクラスを使用してPDFファイルをロードします。
  • 次に、Parser.getDocumentInfo()メソッドを使用してドキュメント情報を取得します。
  • 次に、IDocumentInfo.getPageCount()がゼロでないかどうかを確認します。
  • その後、ページインデックスを指定してParser.getImages()メソッドを呼び出し、その特定のページから画像を抽出します。
  • 最後に、見つかったすべての画像を繰り返し処理し、詳細を表示します。

次のコードサンプルは、Javaを使用して特定のページから画像を抽出する方法を示しています。

// このコード例は、PDFを解析し、特定のページから画像を取得する方法を示しています。
// パーサークラスのインスタンスを作成します
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// ドキュメント情報を取得する
IDocumentInfo documentInfo = parser.getDocumentInfo();

// ドキュメントにページがあるかどうかを確認します
if (documentInfo.getPageCount() == 0) {
    System.out.println("Document hasn't pages.");
    return;
}

int pageIndex = 1;

// 画像を繰り返し処理する
// 以前に画像抽出機能のサポートを確認したため、ヌルチェックは無視します
for (PageImageArea image : parser.getImages(pageIndex)) {
  // ページインデックス、長方形、画像タイプを印刷します。
    System.out.println("Page: " + image.getPage().getIndex());
    System.out.println("Image Rectangle: " + image.getRectangle());
    System.out.println("Image Filetype: " + image.getFileType());
    System.out.println("----------------------------------------");
}

Javaを使用して画像を抽出してファイルに保存する

以下の手順に従って、抽出した画像を保存することもできます。

  • まず、Parserクラスを使用してPDFファイルをロードします。
  • 次に、Parser.getImages()メソッドを呼び出し、ロードされたドキュメントからPageImageAreaオブジェクトのコレクションを取得します。
  • 次に、ImageOptionsクラスのインスタンスを作成し、画像形式を設定します。
  • その後、見つかったすべての画像を繰り返し処理します。
  • 最後に、save()メソッドを使用して保存します。出力ファイルのパスとImageOptionsを引数として取ります。

次のコードサンプルは、Javaを使用して画像を抽出してファイルに保存する方法を示しています。

// このコード例は、ディレクトリ内の画像を抽出する方法を示しています。
// パーサークラスのインスタンスを作成します
Parser parser = new Parser("D:\\Files\\Parser\\images.pdf");

// ドキュメントから画像を抽出する
Iterable<PageImageArea> images = parser.getImages();

// 画像抽出がサポートされているかどうかを確認します
if (images == null) {
    System.out.println("Page images extraction isn't supported");
    return;
}

// PNG形式で画像を保存するオプションを作成します
ImageOptions options = new ImageOptions(ImageFormat.Png);

int imageNumber = 0;

// 画像を繰り返し処理する
for (PageImageArea image : images)
{
    // 画像をPNGファイルに保存します
    image.save(String.format("D:\\Files\\Parser\\Images\\%d.png", imageNumber), options);
    imageNumber++;
}
Javaを使用して画像を抽出してファイルに保存する

Javaを使用して画像を抽出してファイルに保存する

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、次の方法を学びました。

  • Javaを使用して、PDFドキュメント全体またはドキュメントの特定のページからすべてのテキストを抽出します。
  • プログラムでPDFファイルから画像を抽出します。
  • 抽出した画像をローカルディスクに保存します。

さらに、ドキュメントを使用して、GroupDocs.Parser forJavaAPIの詳細を学ぶことができます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目