Javaを使用してPDFで単語を検索する

WordまたはPDFドキュメントから特定のテキストを検索する必要がある場合があります。 Java開発者は、プログラムでPDFドキュメントから任意のテキストを検索できます。この記事では、Javaを使用してPDFドキュメント内の単語を検索する方法を学習します。

この記事では、次のトピックについて説明/取り上げています。

テキストを検索するためのJavaAPI

PDFドキュメントの検索にはGroupDocs.SearchforJavaAPIを使用します。 PDF、Word、Excel、PowerPointなどの一般的なすべてのドキュメント形式でテキスト検索操作を実行できます。このAPIを使用すると、ファイル、ドキュメント、メール、アーカイブから必要な情報を簡単に取得できます。また、複数のインデックスを作成してマージすることもできます。単純、ブール、正規表現(Regex)、ファジー、およびその他のタイプのクエリを使用して、インデックスを迅速かつスマートに検索できます。

ダウンロードして構成する

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加して、以下のコード例を試すことができます。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-search</artifactId>
        <version>20.11</version> 
</dependency>

Javaを使用してPDFのテキストを検索

以下に説明する簡単な手順に従うことで、PDFドキュメント内の任意のテキストまたは特定の単語を簡単に検索できます。

  • インデックスを作成します
  • インデックスフォルダへのパスを指定します
  • インデックスイベントを購読する
  • addメソッドを呼び出してファイルをインデックスに追加します
  • 検索メソッドを使用して検索を実行します
  • SearchResultを使用して、要約を印刷します
  • highlightメソッドを使用して、出力で検索結果を強調表示します

次のコードサンプルは、Javaを使用してPDFドキュメントから単語を検索する方法を示しています。

String indexFolder = "C:\\Index\\"; // Specify the path to the index folder
String documentsFolder = "C:\\Files\\"; // Specify the path to a folder containing documents to search

// 新しいインデックスを作成するか、
// 既存のインデックスを開く
Index index = new Index(indexFolder);

// インデックスイベントを購読する
index.getEvents().ErrorOccurred.add(new EventHandler<IndexErrorEventArgs>() {
    public void invoke(Object sender, IndexErrorEventArgs args) {
        System.out.println(args.getMessage()); // Writing error messages to the console
    }
});

// 同期的にファイルを追加する
index.add(documentsFolder); // Synchronous indexing documents from the specified folder

// 検索を実行する
String query = "elementum"; // Specify a search query
SearchResult result = index.search(query); // Searching in the index

// 検索結果を使用する
// 結果を印刷する
System.out.println("Documents found: " + result.getDocumentCount());
System.out.println("Total occurrences found: " + result.getOccurrenceCount());
for (int i = 0; i < result.getDocumentCount(); i++) {
    FoundDocument document = result.getFoundDocument(i);
    System.out.println("\tDocument: " + document.getDocumentInfo().getFilePath());
    System.out.println("\tOccurrences: " + document.getOccurrenceCount());
}

// テキスト内の出現箇所を強調表示する
if (result.getDocumentCount() > 0) {
    FoundDocument document = result.getFoundDocument(0); // Getting the first found document
    String path = "C:\\Output\\Highlighted.html";
    OutputAdapter outputAdapter = new FileOutputAdapter(path); // Creating the output adapter to a file
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter); // Creating the HtmlHighlighter object
    index.highlight(document, highlighter); // Generating output HTML formatted document with highlighted search results

    System.out.println();
    System.out.println("Generated HTML file can be opened with Internet browser.");
    System.out.println("The file can be found by the following path:");
    System.out.println(Paths.get(path).toAbsolutePath().toString());
}

上記のコードサンプルは、次の出力を生成します。

Documents found: 1
Total occurrences found: 6
	Document: C:\Files\Lorem ipsum.pdf
	Occurrences: 6

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Output\Highlighted.html
Javaを使用してPDFドキュメント内の単語を検索する

Javaを使用してPDFドキュメント内の単語を検索する

インデックスとインデックスイベント

Indexクラスは、ドキュメントのインデックスを作成して検索するためのメインクラスです。このクラスのコンストラクターを呼び出すことにより、メモリーまたはディスクに索引を作成できます。再利用できるようにディスク上に作成しました。

インデックス作成エラーに関する情報を受け取るために、ErrorOccurredイベントをサブスクライブしました。ファイルのインデックス作成中にエラーが発生した場合は、エラーが表示されます。

インデックスにファイルを追加

Indexクラスのaddメソッドは、1つまたは複数のフォルダー内の1つまたはすべてのファイルを絶対パスまたは相対パスで追加します。指定されたパス上のすべてのドキュメントにインデックスが付けられます。

検索操作を実行する

Indexクラスは、検索操作を実行するためのさまざまなsearchメソッドを提供します。簡単なキーワードで検索するか、SearchQueryを定義して検索できます。

SearchResultクラスは、検索クエリに一致する検索結果の詳細を提供します。ここでは、いくつかの方法について説明します。

検索結果を強調表示する

HtmlHighlighterクラスを使用すると、HTML形式のドキュメントテキスト全体で検索結果を強調表示できます。

Indexクラスのhighlightメソッドは、見つかった用語の出現を強調するHTML出力を生成します。 「検索結果の強調表示」の詳細については、ドキュメントをご覧ください。

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

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

結論

この記事では、Javaを使用してPDFドキュメント内の単語を検索する方法を学習しました。 ドキュメントを使用して、GroupDocs.Search forJavaAPIの詳細を確認できます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目