Поиск слова в PDF с помощью С#

Возможно, вам потребуется найти часть определенной информации, текстовую фразу или слово в ваших документах. Как разработчик C#, вы можете легко программно искать любой текст в документах PDF в своих приложениях .NET. В этой статье вы узнаете, как выполнять поиск текста в документах PDF с помощью C#.

В этой статье обсуждаются/рассматриваются следующие темы:

C# API для поиска текста

Для поиска текста в документах PDF я буду использовать API GroupDocs.Search for .NET. Он позволяет выполнять операции текстового поиска во всех популярных форматах документов, таких как PDF, Word, Excel, PowerPoint и многих других. Это также позволяет вам получать необходимую информацию из файлов, документов, электронных писем и архивов. Вы можете создавать и объединять несколько индексов для быстрого и эффективного поиска по ним с использованием простых, логических, регулярных выражений (регулярных выражений), нечетких и других типов запросов.

Вы можете либо загрузить библиотеку DLL API, либо установить ее с помощью NuGet.

Install-Package GroupDocs.Search

Поиск текста в PDF-документах с использованием C#

Вы можете выполнить программный поиск любого текста или определенного слова в ваших PDF-документах, выполнив простые шаги, указанные ниже:

  • Создайте экземпляр класса Index.
  • Укажите путь к папке индекса
  • Подпишитесь на индексные события
  • Добавьте PDF-файлы в индекс, вызвав метод Add().
  • Определить поисковый запрос
  • Выполнить поиск методом Search() с поисковым запросом
  • Используйте SearchResult и распечатайте сводку
  • Выделите результаты поиска в выводе с помощью метода Highlight().

В следующем примере кода показано, как выполнять поиск текста в документах PDF с помощью C#.

// Указать путь к папке индекса
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
Поиск-текст-или-слово-в-PDF-используя-CSharp

Выделение искомого текста в PDF-документах с помощью C#

Индекс и индексное событие

Класс Index — это основной класс, предоставляющий функциональные возможности для индексации документов и поиска по ним. Индекс можно создать в памяти или на диске, вызвав конструктор этого класса. В приведенном выше примере кода я создал индекс на диске, чтобы его можно было использовать повторно.

Событие ErrorOccurred показывает ошибки, если таковые возникают при индексировании файлов. Итак, вам нужно подписаться на это, чтобы получать информацию об ошибках индексации.

Добавить файлы в индекс

Метод Add() класса Index добавляет файл или все файлы в указанную папку или подпапки по абсолютному или относительному пути. Все документы по указанному пути будут проиндексированы.

Выполнить операцию поиска

Класс Index предоставляет различные методы Search для выполнения операции поиска. Вы можете выполнять поиск, указав простое ключевое слово или определив SearchQuery.

Класс SearchResult предоставляет сведения о результатах поиска, соответствующих поисковому запросу. Следующие методы и свойства этого класса облегчают получение деталей результатов поиска:

  • Свойство OccurrenceCount показывает общее количество найденных вхождений.
  • Свойство DocumentCount предоставляет количество документов, найденных в индексе.
  • Метод GetFoundDocument(int) возвращает FoundDocument по его индексу.
  • Свойство FoundDocument.OccurrenceCount возвращает количество вхождений, найденных в документе.

Выделите результаты поиска

Класс HtmlHighlighter выделяет результаты поиска во всем тексте документа, отформатированного в HTML.

Метод Highlight() класса Index генерирует выходные данные HTML, выделяя вхождения найденных терминов. Вы можете найти более подробную информацию о «Подсветка результатов поиска» в документации.

Поиск текста с учетом регистра в PDF с использованием C#

Вы можете выполнить программный поиск любой конкретной текстовой фразы или слова с учетом прописных и строчных букв в ваших PDF-документах, выполнив простые шаги, указанные ниже:

  • Создайте экземпляр класса Index.
  • Укажите путь к папке индекса
  • Добавьте PDF-файлы в индекс, вызвав метод Add().
  • Создайте экземпляр SearchOptions
  • Установите для свойства UseCaseSensitiveSearch значение true.
  • Определить поисковый запрос
  • Выполнить поиск методом Search() с поисковым запросом and the SearchOptions
  • Используйте SearchResult и распечатайте сводку

В следующем примере кода показано, как выполнить поиск текста с учетом регистра в документе PDF с помощью C#.

// Указать путь к папке индекса
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 без ограничений на пробную версию, запросив бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как выполнять поиск текста в документе PDF с помощью C#. Вы также узнали, как выполнять поиск текста с учетом регистра в документе PDF с помощью C#. Вы можете узнать больше о GroupDocs.Search для .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

Смотрите также