Java ドキュメント解析: GroupDocs.Parser を使用したドキュメントからの画像抽出
この包括的なガイドでは、GroupDocs.Parser for Java を使用してさまざまなファイルタイプから画像を抽出する java document parsing 手法を学びます。ライブラリのセットアップ、カスタム ExternalResourceHandler の作成、スマートなフィルタリングの適用方法を順に説明し、必要なリソースだけをロードして メモリ使用量を削減 し、処理速度を向上させます。
クイック回答
- GroupDocs.Parser は何をしますか? 50 以上のファイル形式を解析し、テキスト、画像、その他の埋め込みリソースをプログラムから利用できるようにします。
- 不要な画像をスキップできますか? はい。カスタム
ExternalResourceHandlerを実装して、リソースをリアルタイムでフィルタリングできます。 - 必要な Maven バージョンはどれですか? GroupDocs.Parser Java 25.5 以降を使用してください。
- ライセンスは必要ですか? 評価目的であれば無料トライアルで利用できますが、本番環境では永続ライセンスが必要です。
- このアプローチはスレッドセーフですか? スレッドごとに個別の
Parserインスタンスを作成してください。オブジェクトは共有されません。
「ドキュメントから画像を抽出する」とは何ですか?
ドキュメントから画像を抽出することは、埋め込まれた画像ファイルをプログラムで取得し、元のファイルとは別に保存、表示、またはさらに処理できるようにすることを意味します。この操作は、サムネイルやデータ可視化が必要な場合、または完全なソースドキュメントを保持せずにメディア資産を再利用したい場合に不可欠です。
画像抽出時にリソースをフィルタリングする理由は?
画像を抽出しながらリソースをフィルタリングすることで、大きなファイルを処理する際に メモリ使用量を最大 70 % 削減 できます。不要なバイナリが JVM ヒープに入らないためです。また、潜在的に危険なコンテンツの読み込みを防止してセキュリティが向上し、パイプラインの速度も上がります。数百枚の装飾グラフィックを含む大規模な契約書でも、元の時間のごく一部で解析可能です。
前提条件
- Java Development Kit (JDK) – バージョン 8 以上。
- Maven – 依存関係管理のため。
- Java I/O と例外処理の基本的な知識。
Java 用 GroupDocs.Parser の設定
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 からダウンロードしてください。
ライセンス取得
- Free Trial – コストなしでコア機能を試せます。
- Temporary License – 評価期間中にフル機能を利用可能にします。
- Purchased License – 商用展開には必要です。
画像抽出時にリソースをフィルタリングする方法
リソースをフィルタリングするには、どの埋め込みファイルをロードするかを決定する ExternalResourceHandler を実装します。このハンドラをドキュメントを開く前に ParserSettings に登録し、パーサーを呼び出します。ハンドラは各リソースのメタデータを受け取り、タイプ、サイズ、名前などの基準に基づいて受け入れるか拒否するかを判断でき、必要な画像だけが処理されます。
手順 1: カスタムハンドラの作成
ExternalResourceHandler は、特定の外部リソース(画像など)をロードするかどうかを決定できるインターフェイスです。onLoading メソッドを実装し、保持したいリソースには true、スキップしたいリソースには false を返します。onLoading メソッドはリソースのメタデータを受け取り、ロードする場合は true、スキップする場合は false を返す必要があります。
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);
}
}
手順 2: ハンドラで ParserSettings を構成する
ParserSettings は、カスタムハンドラや検出設定、パフォーマンス調整など、パーサーのオプションを保持する構成クラスです。ドキュメントを開く前にハンドラインスタンスを 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());
}
}
}
}
手順 3: フィルタリングロジックの微調整
画像サイズ、フォーマット、URI パターンなど、より高度なルールが必要な場合は、onLoading メソッドを拡張してください。例えば、2 MB を超える画像をスキップしたり、すべての PNG ファイルを無視したりできます。
@Override
public void onLoading(ExternalResourceLoadingArgs args) {
if (!args.getUri().endsWith("installation.png")) {
args.setSkipped(true);
}
}
実用的な活用例
- Document Management Systems – スキャンされた契約書から必要な画像だけを抽出し、サムネイルを生成します。
- Data Extraction Services – 装飾的なグラフィックをスキップし、価値あるデータを含むチャートに注目します。
- Web Scraping Tools – HTML ベースのドキュメントから有用なメディアを取得する際に、トラッキングピクセルを除外します。
パフォーマンス上の考慮点
Parser はドキュメントを開き、その内容にアクセスするコアクラスです。
- 早期フィルタリング: リソースを反復処理する前にカスタムハンドラを適用し、不要なデータがメモリにロードされるのを防ぎます。
- 速やかな破棄: try‑with‑resources (
try (Parser parser = …)) を使用してネイティブリソースを解放します。 - 非同期処理: 大量バッチの場合、各
Parserインスタンスを単一スレッドに限定しながら、parallel streams でドキュメントを処理します。
よくある問題と解決策
| 問題 | 発生原因 | 対策 |
|---|---|---|
| 画像が返されない | ハンドラが誤ってすべてのリソースをスキップしている | if 条件を確認し、args.setSkipped(true) が不要な URI のみで呼び出されていることを確認してください。 |
大きなファイルで IOException が発生 | ヒープメモリが不足している | JVM ヒープを増やす(-Xmx2g)か、ページを小さなチャンクで処理してください。 |
| ライセンスが認識されない | 本番コードでトライアル DLL を使用している | License.setLicense("path/to/license") で正しいライセンスファイルパスを設定してください。 |
よくある質問
Q: カスタム ExternalResourceHandler を使用する主な目的は何ですか?
A: 外部リソースのロードを制御でき、不要なファイルをフィルタリングすることでセキュリティとパフォーマンスが向上します。
Q: ライセンスなしで GroupDocs.Parser for Java を使用できますか?
A: はい、無料トライアルは利用可能ですが、上級機能や大規模展開には有効なライセンスが必要です。
Q: GroupDocs.Parser の解析中に例外を処理するにはどうすればよいですか?
A: IOException などの特定例外を捕捉する try‑catch ブロックで解析呼び出しをラップし、エラーを適切に処理してください。
Q: リソースをフィルタリングする際の一般的な落とし穴は何ですか?
A: URI のチェックが誤っていると必要なファイルがスキップされます。条件を確認するためにロギングやブレークポイントを使用してください。
Q: GroupDocs.Parser for Java で非 HTML ドキュメントを解析できますか?
A: もちろんです。GroupDocs.Parser は PDF、Word、Excel、PowerPoint など多数のフォーマットをサポートしています。
次のステップ
追加設定(例: テーブル抽出のための ParserSettings.setDetectTables(true) やフォント抽出のための ParserSettings.setExtractEmbeddedFonts(true))については、完全な API Reference をご確認ください。
最終更新: 2026-06-22
テスト環境: GroupDocs.Parser 25.5 for Java
作者: GroupDocs
リソース
- ドキュメント: GroupDocs.Parser Documentation
- API リファレンス: API Details
- ダウンロード: Latest Versions