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

ドキュメントから特定の情報、テキストフレーズ、または単語を検索する必要がある場合があります。 C#開発者は、.NETアプリケーションでプログラムによってPDFドキュメントから任意のテキストを簡単に検索できます。この記事では、C#を使用してPDFドキュメントのテキストを検索する方法を学習します。

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

テキストを検索するためのC#API

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

APIのDLLをダウンロードするか、NuGetを使用してインストールできます。

Install-Package GroupDocs.Search

C#を使用してPDFドキュメントのテキストを検索する

以下に説明する簡単な手順に従って、プログラムでPDFドキュメント内の任意のテキストまたは特定の単語を検索できます。

  • Indexクラスのインスタンスを作成します
  • インデックスフォルダへのパスを指定します
  • インデックスイベントを購読する
  • Add()メソッドを呼び出して、PDFファイルをインデックスに追加します
  • 検索クエリを定義する
  • Search()メソッドと検索クエリを使用して検索を実行します
  • SearchResultを使用して、要約を印刷します
  • Highlight()メソッドを使用して、出力で検索結果を強調表示します

次のコードサンプルは、C#を使用してPDFドキュメントのテキストを検索する方法を示しています。

// インデックスフォルダへのパスを指定します
string indexFolder = @"C:\Files\Index\";

// 検索するPDFドキュメントを含むフォルダへのパスを指定します
string documentsFolder = @"C:\Files\Files\"; 

// インデックスを作成またはロードする
Index index = new Index(indexFolder);

// インデックスイベントを購読する
index.Events.ErrorOccurred += (sender, args) =>
{
    // コンソールへのエラーメッセージの書き込み
    Console.WriteLine(args.Message);
};

// 同期的にファイルを追加する
// 指定されたフォルダからの同期インデックスドキュメント
index.Add(documentsFolder); 

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

// 検索結果を使用する
// 結果を印刷する
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);

for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
}

// テキスト内の出現箇所を強調表示する
if (result.DocumentCount > 0)
{
    // 最初に見つかったドキュメントを取得する
    FoundDocument document = result.GetFoundDocument(0);

    string path = documentsFolder + "Highlighted.html";

    // ファイルへの出力アダプターの作成
    OutputAdapter outputAdapter = new FileOutputAdapter(path);

    // 蛍光ペンオブジェクトの作成
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter);

    // 強調表示された検索結果を含む出力HTML形式のドキュメントを生成する
    index.Highlight(document, highlighter); 

    Console.WriteLine();
    Console.WriteLine("Generated HTML file can be opened with Internet browser.");
    Console.WriteLine("The file can be found by the following path:");
    Console.WriteLine(path);
}

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

Documents found: 1
Total occurrences found: 4
        Document: C:\Files\Files\sample.pdf
        Occurrences: 4

Generated HTML file can be opened with Internet browser.
The file can be found by the following path:
C:\Files\Files\Highlighted.html
Search-Text-or-Word-in-PDF-using-CSharp

C#を使用してPDFドキュメントで検索されたテキストを強調表示

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

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

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

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

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

検索操作を実行する

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

SearchResultクラスは、検索クエリに一致する検索結果の詳細を提供します。このクラスの次のメソッドとプロパティは、検索結果の詳細を取得するのに役立ちます。

検索結果を強調表示する

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

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

C#を使用したPDFでの大文字と小文字を区別するテキスト検索

以下に説明する簡単な手順に従って、PDFドキュメント内の大文字と小文字を考慮した特定のテキストフレーズまたは単語をプログラムで検索できます。

  • Indexクラスのインスタンスを作成します
  • インデックスフォルダへのパスを指定します
  • Add()メソッドを呼び出して、PDFファイルをインデックスに追加します
  • SearchOptionsのインスタンスを作成します
  • UseCaseSensitiveSearchプロパティをtrueに設定します
  • 検索クエリを定義する
  • Search()メソッドと検索クエリを使用して検索を実行します and the SearchOptions
  • SearchResultを使用して、要約を印刷します

次のコードサンプルは、C#を使用してPDFドキュメントで大文字と小文字を区別するテキスト検索を実行する方法を示しています。

// インデックスフォルダへのパスを指定します
string indexFolder = @"C:\Files\Index\";

// 検索するPDFドキュメントを含むフォルダへのパスを指定します
string documentsFolder = @"C:\Files\Files\";

// 指定したフォルダにインデックスを作成する
Index index = new Index(indexFolder);

// 指定されたフォルダからのドキュメントのインデックス作成
index.Add(documentsFolder); 

// 検索オプションを定義する
SearchOptions options = new SearchOptions();
options.UseCaseSensitiveSearch = true; // Enabling case sensitive search

// 検索ワード
string query = "Vestibulum";

// 検索を実行します
SearchResult result = index.Search(query, options);

// 結果を印刷する
Console.WriteLine("Documents found: " + result.DocumentCount);
Console.WriteLine("Total occurrences found: " + result.OccurrenceCount);

for (int i = 0; i < result.DocumentCount; i++)
{
    FoundDocument document = result.GetFoundDocument(i);
    Console.WriteLine("\tDocument: " + document.DocumentInfo.FilePath);
    Console.WriteLine("\tOccurrences: " + document.OccurrenceCount);
}
Documents found: 1
Total occurrences found: 2
        Document: C:\Files\Files\sample.pdf
        Occurrences: 2

SearchOptionsクラスは、検索操作を実行するためのオプションを提供します。このクラスのUseCaseSensitiveSearchプロパティを使用すると、単語またはテキストの大文字と小文字を区別した検索を実行できます。

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

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

結論

この記事では、C#を使用してPDFドキュメント内のテキストを検索する方法を学習しました。また、C#を使用してPDFドキュメントで大文字と小文字を区別するテキスト検索を実行する方法も学習しました。 ドキュメントを使用して、GroupDocs.Search for.NETAPIの詳細を確認できます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目