Java PDF 処理: 検索とハイライト with GroupDocs

大量のドキュメント—PDF、Word ファイル、その他の形式—に埋もれて、特定の単語やフレーズを簡単に見つけられたらいいなと思ったことはありませんか?Java PDF processing がそれを可能にします。このガイドでは GroupDocs.Parser for Java を使用して PDF 内のテキストを検索し、ハイライトされたスニペットを生成する方法を学びます。ドキュメント分析ツールを構築する場合でも、コンテンツレビューを自動化する場合でも、以下の手順は明確で本番環境向けのソリューションを提供します。

クイック回答

  • Java で PDF テキスト検索を処理するライブラリはどれですか? GroupDocs.Parser for Java。
  • 開発にライセンスは必要ですか? テスト用の一時ライセンスで動作しますが、本番環境ではフルライセンスが必要です。
  • 複数の出現箇所を同時にハイライトできますか? はい—ハイライト半径を設定し、結果を反復処理します。
  • 検索は大文字と小文字を区別しますか? デフォルトでは大文字小文字を区別しません;SearchOptions で切り替え可能です。
  • サポートされているフォーマットは何ですか? PDF、DOCX、XLSX、PPTX、HTML、画像など、50 以上の入力・出力フォーマットに対応しています。

Java PDF 処理とは何ですか?

Java PDF processing は、Java ライブラリを使用して PDF ファイル上で実行される、抽出、検索、ハイライトなどのプログラム的操作の集合です。GroupDocs.Parser を使えば、サポートされている任意のドキュメントを検索し、周囲のコンテキストを取得し、ビジュアルハイライトを適用できます。ビューアでファイルを開く必要はありません。この機能により、数千ページに及ぶドキュメントでも高速で検索可能なアーカイブや自動レビュー パイプラインを構築できます。

Java PDF 処理に GroupDocs.Parser を使用する理由

GroupDocs.Parser は 50+ ファイル形式 をサポートし、数百ページの PDF をメモリ全体にロードせずに処理でき、ナイーブなアプローチと比較して RAM 使用量を最大 70 % 削減します。検索エンジンは正確なオフセットを返すため、カスタム UI ハイライトの構築や結果の他システムへのエクスポートが容易です。ライブラリは積極的にメンテナンスされ、Java 8+ に対応し、Maven と Gradle の両方のアーティファクトを提供して簡単に統合できます。

前提条件

作業を始める前に、以下の必須項目を用意してください:

  • Java 開発環境: JDK 8+ がインストールされていること。
  • Maven または Gradle: 依存関係管理とプロジェクト設定のため。
  • GroupDocs.Parser for Java ライブラリ: ダウンロードまたは依存関係として追加。
  • サンプルドキュメント: テスト用の PDF またはテキスト。
  • 基本的な Java 知識: クラス、メソッド、ファイル操作に慣れていること。

ライブラリがまだない場合は、GroupDocs Downloads から最新バージョンを取得するか、Maven で追加してください。

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

パッケージのインポート

まず、GroupDocs.Parser から必要なクラスをインポートします。

Parser はドキュメントのロードと操作に使用される主要クラスです。HighlightOptions は一致したテキストのハイライト方法を設定します。SearchOptions は大文字小文字の区別など検索動作を定義します。SearchResult はドキュメント内で見つかった個々の一致を表します。

import com.groupdocs.parser.Parser;
import com.groupdocs.parser.search.HighlightOptions;
import com.groupdocs.parser.search.SearchOptions;
import com.groupdocs.parser.search.SearchResult;

これらのインポートは、ドキュメントの解析、ハイライトオプションの設定、検索操作のコア機能をカバーします。

検索とハイライトのワークフローはどのように機能しますか?

PDF をロードし、HighlightOptions オブジェクトを設定し、parser.search を実行し、SearchResult コレクションを反復処理してハイライトされたスニペットを作成します。プロセスは 2 段階で実行されます:最初にパーサーがドキュメント構造を読み取り、次に検索エンジンがテキストストリームを走査し、定義したオプションを適用します。このアプローチにより、大容量ファイルでも高いパフォーマンスが保証されます。

ハイライト付きテキスト検索のステップバイステップガイド

プロセスを管理しやすく明確なステップに分割して説明します。各ステップには「なぜ」や「どうやって」の理解を助ける解説が付いています。

ステップ 1: ドキュメントで Parser を初期化する

What’s happening here?
Parser クラスのインスタンスをドキュメントファイルに結び付けることで、コンテンツへのアクセスと解析が可能になります。

Parser はドキュメントをロードし、テキスト抽出や検索のメソッドを提供します。

try (Parser parser = new Parser("path/to/your/document.pdf")) {
    // your code here
}

In actuality:
try-with-resources 文により、処理後にファイルが適切に閉じられ、リソースリークが防止されます。"path/to/your/document.pdf" を実際のファイルパスまたは URL に置き換えてください。

ステップ 2: ハイライトオプションを設定する

Why define highlight options?
検索ヒットのハイライト表示方法(マッチ周辺の文字数や色など)を制御したい場合があります。

この例ではハイライト半径を 15 文字に設定しています:

HighlightOptions はハイライト検索ヒットのコンテキスト半径とビジュアル設定を指定します。

HighlightOptions highlightOptions = new HighlightOptions(15);

これにより、見つかったテキストが周囲のコンテキストで囲まれ、キーワードがどこに出現しているかが一目で分かります。

ステップ 3: ドキュメント内で検索を実行する

How does the search work?
parser.search を使用してキーワードまたはフレーズ、検索オプションを指定し、SearchResult オブジェクトの反復可能コレクションを取得します。

SearchOptions は大文字小文字の区別など検索パラメータを設定します。SearchResult は各一致の詳細(一致テキストと位置)を保持します。

Iterable<SearchResult> results = parser.search("lorem", new SearchOptions(true, false, false, highlightOptions));

SearchOptions コンストラクタの内訳:

  • true: 大文字小文字を区別しない検索を有効化。
  • false: 完全一致(単語単位)のみを対象にしない。
  • false: 正規表現パターン検索を行わない。
  • highlightOptions: ハイライト設定を渡す。

この設定により、"lorem" のすべての出現箇所を大文字小文字を無視して検索し、ハイライトされたスニペットが生成されます。

ステップ 4: 検索サポートと結果の処理

Check if search is supported
一部のフォーマットは検索をサポートしない可能性があるため、常に確認してください:

parser.isSearchSupported() は、ロードされたドキュメント形式がテキスト検索を許可しているかどうかを示すブール値を返します。

if (results == null) {
    System.out.println("Search isn't supported in this document format.");
    return;
}

Process each search hit
結果をループして、ハイライト付きのマッチングスニペットを抽出・表示します:

SearchResult オブジェクトから一致したフレーズとその周囲コンテキストにアクセスできます。

for (SearchResult result : results) {
    String snippet = String.format("%s%s%s", 
        result.getLeftHighlightItem().getText(), 
        result.getText(), 
        result.getRightHighlightItem().getText());
    System.out.println(snippet);
}

一般的な問題と解決策

IssueReasonFix
結果が返されないドキュメント形式が検索非対応parser.isSearchSupported()true を返すことを確認してください。
ハイライト半径が小さすぎるデフォルト半径は 10 文字HighlightOptions の半径を増やす(例: new HighlightOptions(20))。
大容量 PDF で Out‑of‑memory エラーファイル全体がメモリにロードされるストリーミングモードで Parser を使用するか、ファイルをチャンクで処理してください。GroupDocs.Parser は大きなファイルを効率的にストリーミングします。
大文字小文字の挙動が期待通りでないcaseSensitive フラグが誤設定SearchOptions(true, …) が大文字小文字非区別の正しいブール値を設定していることを確認してください。

よくある質問

Q: 複数のキーワードを同時に検索できますか?
A: 直接はできません。各キーワードを順にイテレートするか、すべての対象語にマッチする正規表現パターンを構築してください。

Q: ハイライト半径はすべてのドキュメント形式に影響しますか?
A: 大半のサポート形式で半径は均一に機能しますが、テキストレイヤーを持たない画像ベースの形式では無視されます。

Q: ハイライトの色を変更できますか?
A: HighlightOptions はコンテキスト半径を制御します。色は PDF をレンダリングするビューアに依存し、パーサー自体では設定できません。

Q: デフォルトで検索は大文字小文字を区別しますか?
A: いいえ。SearchOptionscaseSensitivefalse に設定すると、検索は大文字小文字を区別しなくなります。

Q: スキャンした画像でも動作しますか、テキストベースのファイルだけですか?
A: 検索はテキストベースのドキュメントでのみ機能します。スキャン画像の場合は OCR 機能が必要で、これは別モジュールの GroupDocs OCR が提供します。

リソース


最終更新日: 2026-06-12
テスト済み: GroupDocs.Parser 23.9 (Java)
作者: GroupDocs

関連チュートリアル