Wyszukaj słowo w formacie PDF przy użyciu języka C#

Może zaistnieć potrzeba wyszukania określonej informacji, frazy tekstowej lub słowa w dokumentach. Jako programista C# możesz łatwo programowo wyszukiwać dowolny tekst z dokumentów PDF w aplikacjach .NET. W tym artykule dowiesz się, jak wyszukiwać tekst w dokumentach PDF za pomocą języka C#.

W tym artykule omówiono/omówiono następujące tematy:

API C# do wyszukiwania tekstu

Do wyszukiwania tekstu w dokumentach PDF będę używał API GroupDocs.Search for .NET. Umożliwia wykonywanie operacji wyszukiwania tekstu we wszystkich popularnych formatach dokumentów, takich jak PDF, Word, Excel, PowerPoint i wiele innych. Umożliwia także pobieranie wymaganych informacji z plików, dokumentów, wiadomości e-mail i archiwów. Można tworzyć i łączyć wiele indeksów, aby szybko i inteligentnie je przeszukiwać przy użyciu zapytań prostych, logicznych, wyrażeń regularnych (Regex), rozmytych i innych typów zapytań.

Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

Install-Package GroupDocs.Search

Wyszukaj tekst w dokumentach PDF przy użyciu języka C#

Możesz programowo wyszukiwać dowolny tekst lub określone słowo w dokumentach PDF, wykonując proste kroki wymienione poniżej:

  • Utwórz instancję klasy Index.
  • Określ ścieżkę do folderu indeksu
  • Subskrybuj indeks wydarzeń
  • Dodaj pliki PDF do indeksu, wywołując metodę Add().
  • Zdefiniuj zapytanie wyszukiwania
  • Wykonaj wyszukiwanie za pomocą metody Search() z zapytaniem wyszukiwania
  • Skorzystaj z SearchResult i wydrukuj podsumowanie
  • Podświetl wyszukane wyniki na wyjściu za pomocą metody Highlight().

Poniższy przykładowy kod pokazuje, jak wyszukiwać tekst w dokumentach PDF przy użyciu języka C#.

// Określ ścieżkę do folderu indeksu
string indexFolder = @"C:\Files\Index\";

// Określ ścieżkę do folderu zawierającego dokumenty PDF do przeszukania
string documentsFolder = @"C:\Files\Files\"; 

// utwórz lub załaduj indeks
Index index = new Index(indexFolder);

// Subskrybuj wydarzenia indeksowane
index.Events.ErrorOccurred += (sender, args) =>
{
    // Zapisywanie komunikatów o błędach w konsoli
    Console.WriteLine(args.Message);
};

// Dodawaj pliki synchronicznie
// Synchroniczne indeksowanie dokumentów z określonego folderu
index.Add(documentsFolder); 

// Wykonaj wyszukiwanie
string query = "Vestibulum"; // Specify a search query
SearchResult result = index.Search(query); // Searching in the index

// Skorzystaj z wyników wyszukiwania
// Drukowanie wyniku
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);
}

// Zaznacz wystąpienia w tekście
if (result.DocumentCount > 0)
{
    // Zdobycie pierwszego znalezionego dokumentu
    FoundDocument document = result.GetFoundDocument(0);

    string path = documentsFolder + "Highlighted.html";

    // Tworzenie adaptera wyjściowego do pliku
    OutputAdapter outputAdapter = new FileOutputAdapter(path);

    // Tworzenie obiektu zakreślacza
    HtmlHighlighter highlighter = new HtmlHighlighter(outputAdapter);

    // Generowanie wyjściowego dokumentu w formacie HTML z wyróżnionymi wynikami wyszukiwania
    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);
}

Powyższy przykładowy kod wygeneruje następujące dane wyjściowe:

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
Wyszukaj tekst lub słowo w pliku PDF za pomocą CSharp

Podświetl wyszukiwany tekst w dokumentach PDF przy użyciu języka C#

Indeks i wydarzenie indeksowe

Klasa Index jest klasą główną zapewniającą funkcjonalność indeksowania dokumentów i ich przeszukiwania. Indeks można utworzyć w pamięci lub na dysku, wywołując konstruktor tej klasy. W powyższym przykładzie kodu utworzyłem indeks na dysku, aby można go było ponownie wykorzystać.

Zdarzenie ErrorOccurred pokazuje ewentualne błędy podczas indeksowania plików. Aby otrzymywać informacje o błędach indeksowania, musisz się więc zapisać.

Dodaj pliki do indeksu

Metoda Add() klasy Index dodaje plik lub wszystkie pliki w określonym folderze lub podfolderach według ścieżki bezwzględnej lub względnej. Wszystkie dokumenty znajdujące się na podanej ścieżce zostaną zindeksowane.

Wykonaj operację wyszukiwania

Klasa Index udostępnia różne metody Search umożliwiające wykonanie operacji wyszukiwania. Możesz wyszukiwać, podając proste słowo kluczowe lub definiując SearchQuery.

Klasa SearchResult udostępnia szczegóły wyniku wyszukiwania odpowiadającego wyszukiwanemu zapytaniu. Uzyskanie szczegółów wyników wyszukiwania ułatwiają następujące metody i właściwości tej klasy:

Podświetl wyniki wyszukiwania

Klasa HtmlHighlighter podświetla wyniki wyszukiwania w całym tekście dokumentu sformatowanego w formacie HTML.

Metoda Highlight() klasy Index generuje dane wyjściowe w formacie HTML podświetlające wystąpienia znalezionych terminów. Więcej szczegółów na temat „[Podświetlanie wyników wyszukiwania]" 24" znajdziesz w dokumentacji.

Wyszukiwanie tekstu z uwzględnieniem wielkości liter w formacie PDF przy użyciu języka C#

Możesz programowo wyszukiwać dowolną frazę tekstową lub słowo z uwzględnieniem wielkich i małych liter w dokumentach PDF, wykonując proste kroki wymienione poniżej:

  • Utwórz instancję klasy Index.
  • Określ ścieżkę do folderu indeksu
  • Dodaj pliki PDF do indeksu, wywołując metodę Add().
  • Utwórz instancję SearchOptions
  • Ustaw właściwość UseCaseSensitiveSearch na true
  • Zdefiniuj zapytanie wyszukiwania
  • Wykonaj wyszukiwanie za pomocą metody Search() z zapytaniem wyszukiwania and the SearchOptions
  • Skorzystaj z SearchResult i wydrukuj podsumowanie

Poniższy przykładowy kod pokazuje, jak przeprowadzić wyszukiwanie tekstu z uwzględnieniem wielkości liter w dokumencie PDF przy użyciu języka C#.

// Określ ścieżkę do folderu indeksu
string indexFolder = @"C:\Files\Index\";

// Określ ścieżkę do folderu zawierającego dokumenty PDF do przeszukania
string documentsFolder = @"C:\Files\Files\";

// Tworzenie indeksu w określonym folderze
Index index = new Index(indexFolder);

// Indeksowanie dokumentów z określonego folderu
index.Add(documentsFolder); 

// Zdefiniuj opcje wyszukiwania
SearchOptions options = new SearchOptions();
options.UseCaseSensitiveSearch = true; // Enabling case sensitive search

// szukaj słowa
string query = "Vestibulum";

// Wykonaj wyszukiwanie
SearchResult result = index.Search(query, options);

// Drukowanie wyniku
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

Klasa SearchOptions udostępnia opcje umożliwiające wykonanie operacji wyszukiwania. Właściwość UseCaseSensitiveSearch tej klasy umożliwia wyszukiwanie słowa lub tekstu z uwzględnieniem wielkości liter.

Zdobądź bezpłatną licencję

Możesz wypróbować interfejs API bez ograniczeń ewaluacyjnych, prosząc o bezpłatną licencję tymczasową.

Wniosek

W tym artykule nauczyłeś się wyszukiwać tekst w dokumencie PDF za pomocą języka C#. Nauczyłeś się także, jak wyszukiwać tekst z uwzględnieniem wielkości liter w dokumencie PDF przy użyciu języka C#. Więcej informacji na temat API GroupDocs.Search for .NET można znaleźć w dokumentacji. W przypadku jakichkolwiek niejasności prosimy o kontakt na forum.

Zobacz też