PDFテキスト抽出 Java – GroupDocs.Searchでインデックス構築

このハンズオンガイドでは、PDFファイルから how to extract pdf text java を抽出し、抽出したコンテンツをシリアライズし、高性能な検索可能インデックスを作成する方法を学びます。社内ナレッジベース、契約書検索ポータル、またはカスタム検索エンジンを構築する場合でも、以下の手順でPDFからテキストを取得し、強力な全文検索クエリを実行するまでをすべて解説します。さあ、GroupDocs.Search がプロセスをスムーズかつスケーラブルにする理由を見てみましょう。

クイック回答

index.search メソッドは作成されたインデックスに対してクエリを実行し、関連度スコア付きの一致ドキュメントのリストを返します。

  • 目的は何ですか? PDFファイルから pdf text java を抽出し、GroupDocs.Search を使用して検索可能なドキュメントインデックスを作成することです。
  • 使用するライブラリのバージョンは? GroupDocs.Search 25.4(または最新リリース)。
  • ライセンスは必要ですか? 開発には無料トライアルで動作しますが、本番環境ではフルライセンスが必要です。
  • PDFをインデックスできますか? はい。PDFテキストを抽出してインデックスに追加します。
  • 検索はどう実行しますか? データを追加した後、index.search(query) メソッドを使用します。

ドキュメントインデックスとは?

ドキュメントインデックスは、ファイルから抽出された検索可能な用語を構造化したコレクションです。各用語をそれが出現するドキュメントにマッピングし、大規模リポジトリ全体で高速な全文検索を可能にし、検索時間を数分からミリ秒単位に短縮します。また、ランキングや関連度機能もサポートします。

なぜ Java 用の GroupDocs.Search を使用するのか?

GroupDocs.Search は 50 以上の入力および出力フォーマット をサポートし、数百万のドキュメント をメモリに全体をロードせずにインデックス化でき、ブール演算子、ワイルドカード、近接演算子を備えた リッチなクエリ言語 を提供します。これらの機能により、エンタープライズ規模の検索ソリューションに最適です。また、組み込みの言語検出、ステミング、カスタマイズ可能なアナライザーを提供し、多言語コンテンツの検索精度を向上させます。

前提条件

  • GroupDocs.Search for Java(バージョン 25.4 以上)。
  • Java Development Kit (JDK)(GroupDocs のバージョンと互換性あり)。
  • IntelliJ IDEA や Eclipse などの IDE。
  • 依存関係管理のための Maven。

GroupDocs.Search for Java の設定

まず、ライブラリをプロジェクトに追加します。

Maven 設定
pom.xml ファイルに以下を含めます:

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

<dependencies>
    <dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>25.4</version>
    </dependency>
</dependencies>

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

ライセンス取得

  • Free Trial – 一時ライセンスで全機能をテストできます。
  • Purchase – フルアクセスと優先サポートを取得できます。

PDF(およびその他のドキュメント)からテキストを抽出する方法

Extractor クラスで PDF(またはサポートされているドキュメント)をロードし、抽出オプションを設定して extractText() を呼び出します。この1行の呼び出しで、インデックス作成の準備ができた生テキストまたはフォーマット済みテキストが返されます。

Extractor クラスは、ドキュメントを読み取り、プレーンテキストまたはフォーマット済みテキストを生成する GroupDocs.Search のコアコンポーネントです。

// ```java
String documentPath = "YOUR_DOCUMENT_DIRECTORY/Lorem ipsum.pdf";
Extractor extractor = new Extractor();
Document document = Document.createFromFile(documentPath);
// ```java
ExtractionOptions extractionOptions = new ExtractionOptions();
extractionOptions.setUseRawTextExtraction(false); // Extract with formatting
ExtractedData extractedData = extractor.extract(document, extractionOptions);

ヒント: フォーマットなしのプレーンテキストが必要な場合は setUseRawTextExtraction(true) を設定してください。

抽出データをシリアライズする方法

シリアライズは、抽出されたテキストオブジェクトをバイト配列に変換し、ディスクに保存したりネットワーク経由で転送したりして後でインデックス化できるようにします。

SerializationUtil ユーティリティは、オブジェクトをバイトストリームに変換し、逆に戻す静的メソッドを提供します。

// ```java
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
extractedData.serialize(outputStream);
byte[] serializedArray = outputStream.toByteArray();

抽出データをデシリアライズする方法

インデックスを構築する準備ができたら、以前に保存したバイト配列を元の抽出オブジェクトにデシリアライズします。

deserialize メソッドは、抽出結果の正確な状態を復元し、セッション間でデータが失われないことを保証します。

// ```java
ByteArrayInputStream inputStream = new ByteArrayInputStream(serializedArray);
ExtractedData deserializedData = ExtractedData.deserialize(inputStream);

ドキュメントインデックスの作成方法

Index オブジェクトをインスタンス化し、ストレージフォルダーを指定し、用語ベクトルやストップワード処理などのインデックスオプションを設定します。

Index クラスは、すべての用語、ドキュメント参照、メタデータを保持する検索可能なコンテナを表します。

// ```java
String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/SeparateDataExtraction";
com.groupdocs.search.Index index = new com.groupdocs.search.Index(indexFolder);

データをインデックスに追加し、検索を実行する方法

デシリアライズされた抽出結果を index.add() でインデックスに追加し、index.search() を使用して即時にクエリを実行します。

add メソッドはドキュメントの用語をインデックスに登録し、search はそれらの用語に対してクエリを実行します。

// ```java
ExtractedData[] dataToIndex = new ExtractedData[] { deserializedData };
index.add(dataToIndex, new IndexingOptions());
// ```java
String query = "ipsum";
SearchResult result = index.search(query);

プロのコツ: 関連度ランキングを微調整するには index.search("your query", SearchOptions) を使用してください。

一般的なユースケース

  1. Document Management Systems – 契約書、請求書、ポリシーなどを迅速に検索できます。
  2. Content‑Based Search Engines – フルテキスト検索 Java 機能で社内ナレッジベースを強化します。
  3. Data Archiving Solutions – 歴史的レコードをインデックス化し、即座に取得できます。

パフォーマンス上の考慮点

setStoreTermVectors(boolean) メソッドは、インデックスに用語ベクトルを保存するかどうかを設定し、インデックスサイズとクエリ性能に影響を与えます。

  • Memory Management: バッチが 500 MB を超える場合は JVM ヒープサイズ(例: -Xmx4g)を増やしてください。
  • Indexing Options: 用語ベクトルを無効にする(setStoreTermVectors(false))ことで、インデックスサイズを最大 30 % 短縮できます。
  • Regular Updates: GroupDocs.Search を常に最新に保ちましょう。マイナーバージョンごとに平均で 10‑15 % の速度向上が含まれます。

よくある質問

Q: 非常に大きな PDF ファイルを効率的に処理するには?
A: Extractor を使用してファイルをストリーミングし、チャンク単位で処理します。また、必要に応じて JVM ヒープを増やしてください。

Q: 検索クエリ構文をカスタマイズできますか?
A: はい。GroupDocs.Search はブール演算子、ワイルドカード、近接検索をサポートしています。

Q: シリアライズが失敗した場合はどうすればよいですか?
A: すべてのオブジェクトが Serializable を実装しているか確認し、IOException をキャッチして詳細をログに記録してください。

Q: ドキュメントの特定のセクションだけをインデックス化できますか?
A: もちろんです。インデックス化前に ExtractionOptions でページやセクションをフィルタリングするよう設定してください。

Q: 新しい GroupDocs.Search バージョンへアップグレードするには?
A: pom.xml のバージョン番号を更新し、mvn clean install を実行してください。破壊的変更についてはマイグレーションガイドを確認しましょう。

リソース


最終更新日: 2026-07-07
テスト環境: GroupDocs.Search 25.4 for Java
作者: GroupDocs

関連チュートリアル