Поиск и получение текста

Введение

Вам когда-нибудь требовалось извлечь определенный текст из PDF-файла, но вы находили это сложным? PDF-файлы иногда могут казаться заблокированными контейнерами, что затрудняет получение нужной вам информации. Но вот и хорошие новости: с Aspose.PDF для .NET вы можете легко искать и извлекать текст из любого PDF-файла. Эта мощная библиотека предоставляет все необходимое для работы с PDF-файлами в ваших приложениях .NET, что упрощает извлечение текста. В этом руководстве мы проведем вас через процесс поиска и извлечения текста из PDF-файла с помощью Aspose.PDF для .NET. Независимо от того, создаете ли вы инструмент для анализа текста или просто хотите автоматизировать извлечение данных из отчетов PDF, вы находитесь в правильном месте!

Предпосылки

Прежде чем перейти к коду, давайте убедимся, что у вас все настроено:

  1. Aspose.PDF для .NET: Вам нужно будет скачать и установить Aspose.PDF для .NET. Вы можете получить его на странице загрузкиздесь.
  2. Среда .NET: убедитесь, что на вашем компьютере для разработки установлены .NET Framework или .NET Core.
  3. Базовые знания C##: рекомендуется некоторое знакомство с C# и работа с проектами .NET.
  4. PDF Document: Образец PDF-файла, из которого мы будем извлекать текст. В этом примере мы будем использоватьSearchAndGetTextFromAll.pdf.

Импортные пакеты

Перед написанием кода вам необходимо импортировать необходимые пространства имен в свой проект для работы с Aspose.PDF.

using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using System;

Эти пространства имен обеспечивают доступ к объектной модели документа PDF и позволяют нам манипулировать текстом в файле.

Давайте разобьем процесс на простые шаги, чтобы вам было легче его выполнять.

Шаг 1: Укажите каталог документов

Прежде всего, вам нужно указать путь к каталогу, где находится ваш PDF. Это поможет приложению найти файл, из которого вы будете извлекать текст.

// Путь к каталогу документов.
string dataDir = "YOUR DOCUMENT DIRECTORY";
  • ThedataDir переменная должна указывать на каталог, где находится вашSearchAndGetTextFromAll.pdf файл сохранен.
  • Заменять"YOUR DOCUMENT DIRECTORY" с реальным путем на вашем компьютере.

Шаг 2: Откройте PDF-документ.

Далее мы откроем PDF-документ с помощью Aspose.PDFDocument объект.

// Открыть документ
Document pdfDocument = new Document(dataDir + "SearchAndGetTextFromAll.pdf");
  • Мы создаем новый экземплярDocument класс, передавая полный путь к файлу PDF.
  • Это загрузит PDF-файл в память и подготовит его к обработке.

Шаг 3: Создайте поглотитель текста

TheTextFragmentAbsorber объект используется для поиска определенного текста в PDF. В этом случае мы будем искать слово «текст».

// Создайте объект TextAbsorber для поиска всех вхождений введенной поисковой фразы.
TextFragmentAbsorber textFragmentAbsorber = new TextFragmentAbsorber("text");
  • TheTextFragmentAbsorber инициализируется строкой"text". Это означает, что он будет искать любые вхождения слова «текст» в документе PDF.

Шаг 4: Примите Absorber для всех страниц

Теперь мы дадим команду PDF-документу принять поглотитель и выполнить поиск текста на всех его страницах.

// Принять поглотитель для всех страниц
pdfDocument.Pages.Accept(textFragmentAbsorber);
  • TheAccept Метод применяется к страницам документа. Это позволит выполнить поиск указанного текста на всех страницах.

Шаг 5: Извлечение фрагментов текста

После того как поглотитель отсканирует документ, мы можем извлечь извлеченные фрагменты текста.

// Получить извлеченные фрагменты текста
TextFragmentCollection textFragmentCollection = textFragmentAbsorber.TextFragments;
  • TheTextFragments собственностьTextFragmentAbsorber возвращает коллекцию всех текстовых фрагментов, соответствующих поисковому запросу.

Шаг 6: Просмотрите фрагменты текста

Теперь, когда у нас есть коллекция текстовых фрагментов, мы пройдемся по ним и извлечем детали.

// Просмотрите фрагменты
foreach (TextFragment textFragment in textFragmentCollection)
{
    Console.WriteLine("Text : {0} ", textFragment.Text);
    Console.WriteLine("Position : {0} ", textFragment.Position);
    Console.WriteLine("XIndent : {0} ", textFragment.Position.XIndent);
    Console.WriteLine("YIndent : {0} ", textFragment.Position.YIndent);
    Console.WriteLine("Font - Name : {0}", textFragment.TextState.Font.FontName);
    Console.WriteLine("Font - IsAccessible : {0} ", textFragment.TextState.Font.IsAccessible);
    Console.WriteLine("Font - IsEmbedded : {0} ", textFragment.TextState.Font.IsEmbedded);
    Console.WriteLine("Font - IsSubset : {0} ", textFragment.TextState.Font.IsSubset);
    Console.WriteLine("Font Size : {0} ", textFragment.TextState.FontSize);
    Console.WriteLine("Foreground Color : {0} ", textFragment.TextState.ForegroundColor);
}
  • Theforeach цикл проходит через каждыйTextFragment в коллекции.
  • Мы печатаем различные свойства каждого фрагмента, такие как сам текст, его положение на странице, сведения о шрифте и его размер.
  • TheXIndent иYIndent Свойства задают точные координаты фрагмента текста в PDF-файле.

Заключение

И вот оно! Всего несколькими строками кода мы успешно выполнили поиск и извлекли текст из PDF-файла с помощью Aspose.PDF для .NET. Гибкость Aspose.PDF позволяет вам манипулировать PDF-файлами множеством способов, что делает его отличным выбором для разработчиков, которым нужны надежные решения для PDF в средах .NET. Вы можете легко расширить этот пример для поиска других слов, извлечения дополнительных сведений или даже манипулирования содержимым PDF-файла в соответствии с вашими потребностями. Надеюсь, это руководство дало вам ясный и понятный подход к работе с PDF-файлами. Попробуйте сделать это со своими собственными PDF-файлами!

Часто задаваемые вопросы

Могу ли я искать несколько слов одновременно?

Да, вы можете изменитьTextFragmentAbsorber для поиска нескольких фраз, соответствующим образом изменив строку поиска.

А что, если текст занимает несколько строк?

Aspose.PDF все равно распознает и извлечет текст, даже если он занимает несколько строк. Вы можете обрабатывать эти фрагменты по отдельности.

Как сохранить извлеченный текст в файл?

Вы можете записать извлеченный текст в файл, используя стандартные операции ввода-вывода файлов C#, такие какStreamWriter.

Поддерживает ли Aspose.PDF извлечение текста из отсканированных PDF-файлов?

Aspose.PDF не поддерживает OCR. Для сканированных PDF-файлов вам понадобится инструмент OCR для распознавания текста.

Как работать с зашифрованными PDF-файлами?

Если ваш PDF-файл защищен паролем, вы можете разблокировать его с помощью Aspose.PDF, указав пароль при загрузке документа.