Extract Images from Documents and Filter Resources with GroupDocs.Parser Java

ドキュメントから画像を抽出することは、文書処理パイプラインを構築する際の一般的な要件です。このチュートリアルでは、GroupDocs.Parser for Java を使用して ドキュメントから画像を抽出する方法 を学び、さらに リソースをフィルタリングして必要なファイルだけをロードする方法 も習得します。ライブラリの設定、カスタム ExternalResourceHandler の作成、フィルタリングロジックの適用手順を順に解説し、アプリケーションを高速かつ安全に保つ方法をご紹介します。

Quick Answers

  • GroupDocs.Parser の役割は? 幅広いドキュメント形式を解析し、テキスト、画像、その他の埋め込みリソースにアクセスできるようにします。
  • 不要な画像をスキップできますか? はい。カスタム ExternalResourceHandler を実装することで、ロードするリソースを自由に選択できます。
  • 必要な Maven バージョンは? GroupDocs.Parser Java 25.5 以降を使用してください。
  • ライセンスは必要ですか? 評価用の無料トライアルは利用可能ですが、本番環境では永続ライセンスが必要です。
  • このアプローチはスレッドセーフですか? パーシングオブジェクトはスレッド間で共有しないでください。スレッドごとに新しい Parser インスタンスを作成します。

What is “extract images from documents”?

ドキュメントに埋め込まれた画像、チャート、その他のメディアがある場合、「ドキュメントから画像を抽出する」 とは、これらのバイナリファイルをプログラム上で取得し、元のファイルとは別に保存・表示・さらに処理できるようにすることを指します。

Why filter resources while extracting images?

リソースをフィルタリングすることで、次のようなメリットがあります。

  • 大きなファイルや不要なファイルを無視してメモリ使用量を削減。
  • 潜在的に危険なコンテンツのロードを防ぎ、セキュリティを向上。
  • 埋め込みオブジェクトが多数ある大容量ドキュメントの処理速度を向上。

Prerequisites

  • Java Development Kit (JDK) – バージョン 8 以上。
  • Maven – 依存関係管理に使用。
  • Java の I/O と例外処理に関する基本的な知識。

Setting Up GroupDocs.Parser for Java

pom.xml に GroupDocs リポジトリとパーサー依存関係を追加します。

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/parser/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-parser</artifactId>
      <version>25.5</version>
   </dependency>
</dependencies>

あるいは、最新バージョンを GroupDocs.Parser for Java releases からダウンロードしてください。

License Acquisition

  • Free Trial – コア機能を無償で試用。
  • Temporary License – 評価期間中にフル機能を解放。
  • Purchased License – 商用デプロイに必須。

How to filter resources while extracting images

Step 1: Create a custom handler

ExternalResourceHandler を継承したクラスを定義します。onLoading メソッド内で、保持するリソースを判定します。

import com.groupdocs.parser.options.ExternalResourceHandler;
import com.groupdocs.parser.data.ExternalResourceLoadingArgs;

class Handler extends ExternalResourceHandler {
    @Override
    public void onLoading(ExternalResourceLoadingArgs args) {
        if (!args.getUri().endsWith("installation.png")) {
            args.setSkipped(true);
        }
        super.onLoading(args);
    }
}

Step 2: Configure ParserSettings with the handler

作成したハンドラインスタンスを ParserSettings に渡し、ドキュメントを開く際に使用します。

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.data.PageImageArea;
import com.groupdocs.parser.exceptions.IOException;
import com.groupdocs.parser.options.ParserSettings;

public class LoadExternalResources {
    public static void run() throws IOException {
        ParserSettings settings = new ParserSettings(new Handler());
        
        try (Parser parser = new Parser("YOUR_DOCUMENT_DIRECTORY", settings)) {
            Iterable<PageImageArea> images = parser.getImages();
            
            for (PageImageArea image : images) {
                System.out.println(image.getFileType());
            }
        }
    }
}

Step 3: Fine‑tune the filtering logic

画像サイズ、フォーマット、URI パターンなど、より高度な条件でフィルタリングしたい場合は onLoading メソッドを拡張します。

@Override
public void onLoading(ExternalResourceLoadingArgs args) {
    if (!args.getUri().endsWith("installation.png")) {
        args.setSkipped(true);
    }
}

Practical Applications

  1. Document Management Systems – スキャンした契約書から必要な画像だけを抽出し、サムネイルを生成。
  2. Data Extraction Services – 装飾的なグラフィックを除外し、価値あるデータを含むチャートに注目。
  3. Web Scraping Tools – HTML ベースのドキュメントから意味のあるメディアだけを取得し、トラッキングピクセルを除外。

Performance Considerations

  • 早期フィルタ: カスタムハンドラをリソース列挙前に適用し、不要データのメモリロードを防止。
  • 速やかな解放: try‑with‑resources (try (Parser parser = …)) を使用してネイティブリソースを即座に解放。
  • 非同期処理: 大量バッチは並列ストリームで処理し、各 Parser インスタンスは単一スレッドに限定。

Common Issues & Solutions

IssueWhy it HappensFix
No images returnedHandler がすべてのリソースを誤ってスキップしているif 条件を確認し、args.setSkipped(true) が不要な URI のみで呼ばれるようにする
IOException on large filesヒープメモリ不足JVM ヒープを増やす(-Xmx2g)か、ページ単位で小分けに処理
License not recognizedトライアル DLL を本番コードで使用しているLicense.setLicense("path/to/license") で正しいライセンスファイルを指定

Frequently Asked Questions

Q: カスタム ExternalResourceHandler の主な目的は何ですか?
A: 外部リソースのロードを制御できるため、不要なファイルを除外してセキュリティとパフォーマンスを向上させます。

Q: ライセンスなしで GroupDocs.Parser for Java を使用できますか?
A: はい、無料トライアルは利用可能ですが、一部高度な機能は一時的または購入ライセンスが必要です。

Q: GroupDocs.Parser のパース中に例外を処理するには?
A: IOException などの例外を try‑catch で捕捉し、エラーに応じた適切な処理を行います。

Q: リソースフィルタリング時の一般的な落とし穴は?
A: URI 判定が誤って必要なファイルをスキップすることがあります。ログ出力やブレークポイントで条件を検証してください。

Q: 非 HTML ドキュメントも解析できますか?
A: もちろんです。GroupDocs.Parser は PDF、Word、Excel、PowerPoint など多数のフォーマットをサポートしています。

Next Steps

API Reference を参照したり、ParserSettings.setDetectTables(true) のような追加設定を試したりして、ライブラリの活用範囲をさらに広げてください。


Last Updated: 2025-12-29
Tested With: GroupDocs.Parser 25.5 for Java
Author: GroupDocs

Resources