Извлечение текста с помощью текстового устройства
Введение
Извлечение текста из PDF может быть сложным, особенно при работе с документами, имеющими различные форматы, встроенные шрифты или сложную компоновку. Но с Aspose.PDF для .NET этот процесс становится легким! Хотите ли вы преобразовать страницы PDF в обычный текст для дальнейшего анализа или просто извлечь определенные разделы, Aspose.PDF вам поможет. В этом уроке мы шаг за шагом разберем, как извлекать текст из PDF с помощью класса TextDevice в Aspose.PDF. Мы также дадим понятные объяснения, чтобы вы могли с легкостью применять те же методы к своим собственным проектам.
Предпосылки
Прежде чем мы перейдем к коду, убедитесь, что у вас все готово для дальнейшего изучения. Вот что вам понадобится:
- Aspose.PDF для .NET: Загрузите последнюю версию с сайтаСтраница загрузки Aspose.PDF для .NET.
- Среда разработки: Visual Studio или любая другая среда разработки C#.
- .NET Framework: убедитесь, что ваш проект ориентирован на .NET Framework 4.x или выше.
- Входной PDF-файл: PDF-файл, который вы будете использовать для извлечения текста. Поместите его в каталог на вашем компьютере (мы будем называть его
YOUR DOCUMENT DIRECTORY
).
Импортные пакеты
В верхней части кода вам необходимо импортировать необходимые пространства имен для работы с Aspose.PDF:
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Text;
using Aspose.Pdf.Devices;
using System;
using System.Text;
Шаг 1: Загрузите ваш PDF-документ
Перед извлечением текста нам нужно загрузить PDF-документ в память. На этом этапе вы откроете свой PDF-файл с помощью Aspose.PDFDocument
класс. Это позволит вам получить доступ ко всем страницам и содержимому файла.
// Определите путь к вашему PDF-документу
string dataDir = "YOUR DOCUMENT DIRECTORY";
// Загрузите PDF-документ
Document pdfDocument = new Document(dataDir + "input.pdf");
Здесь мы используемDocument pdfDocument = new Document(dataDir + "input.pdf");
для загрузки PDF.dataDir
переменная содержит путь к каталогу вашего файла PDF. Это даст нам доступ ко всему документу, позволяя нам проходить по страницам и извлекать содержимое.
Шаг 2: Настройка конструктора строк для хранения текста
Теперь, когда документ загружен, нам нужен способ сохранить извлеченный текст. Для этого мы будем использоватьStringBuilder
что позволяет эффективно объединять строки.
// StringBuilder для хранения извлеченного текста
StringBuilder builder = new StringBuilder();
Мы инициализируемStringBuilder
экземпляр, который будет собирать текст, извлеченный с каждой страницы. Это более эффективный способ обработки больших строк по сравнению с обычной конкатенацией строк в цикле.
Шаг 3: Просмотрите страницы PDF-файла
Далее мы пройдемся по каждой странице документа PDF, чтобы извлечь текст. Мы обработаем каждую страницу по отдельности, используяTextDevice
класс, который отвечает за преобразование содержимого PDF-файла в текстовый формат.
// Просмотрите все страницы в PDF-файле
foreach (Page pdfPage in pdfDocument.Pages)
{
// Обработать каждую страницу для извлечения текста
}
Этот цикл проходит по каждой странице PDF-файла (pdfDocument.Pages
). Для каждой страницы мы извлечем текст и добавим его в нашStringBuilder
.
Шаг 4: Извлечение текста с каждой страницы
Теперь мы настроим процесс извлечения текста для каждой страницы. Здесь мы создадимTextDevice
объект и использовать его для обработки страниц PDF.TextDevice
извлекает необработанный или форматированный текст на основе установленных нами параметров извлечения.
using (MemoryStream textStream = new MemoryStream())
{
// Создать текстовое устройство для извлечения текста
TextDevice textDevice = new TextDevice();
// Установите параметры извлечения текста в режим «Чистый»
TextExtractionOptions textExtOptions = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Pure);
textDevice.ExtractionOptions = textExtOptions;
//Извлечь текст с текущей страницы и сохранить его в потоке памяти
textDevice.Process(pdfPage, textStream);
// Преобразовать поток памяти в текст
string extractedText = Encoding.Unicode.GetString(textStream.ToArray());
// Добавить извлеченный текст в StringBuilder
builder.Append(extractedText);
}
TextDevice textDevice = new TextDevice();
:TextDevice
класс используется для извлечения текста из PDF-файла.TextExtractionOptions textExtOptions = new TextExtractionOptions(TextExtractionOptions.TextFormattingMode.Pure);
: Эта опция извлекает необработанный текст без сохранения форматирования, например шрифтов или позиций. Вы также можете использоватьTextFormattingMode.Raw
если вам нужен больший контроль над форматированием.textDevice.Process(pdfPage, textStream);
: обрабатывает каждую страницу PDF-файла и сохраняет извлеченный текст вMemoryStream
.- Наконец, мы преобразуем текст из
MemoryStream
в строку и добавить ее кStringBuilder
.
Шаг 5: Сохраните извлеченный текст в файл
После обработки всех страниц текст сохраняется вStringBuilder
. Последний шаг — сохранить извлеченный текст в файл.
// Определите выходной путь для текстового файла
dataDir = dataDir + "input_Text_Extracted_out.txt";
// Сохранить извлеченный текст в файл
File.WriteAllText(dataDir, builder.ToString());
Console.WriteLine("\nText extracted successfully from PDF document.\nFile saved at " + dataDir);
File.WriteAllText(dataDir, builder.ToString());
: Это записывает все содержимоеStringBuilder
в текстовый файл.- Путь к выходному файлу задается путем добавления имени файла (
"input_Text_Extracted_out.txt"
) кdataDir
путь.
Заключение
Извлечение текста из PDF с помощью Aspose.PDF для .NET — простой и эффективный процесс. Следуя шагам, описанным в этом руководстве, вы сможете легко открывать PDF-документы, перебирать страницы и извлекать текст в текстовый файл. Это особенно полезно для обработки больших объемов данных PDF, выполнения анализа текста или преобразования документов для дальнейшей обработки.
С Aspose.PDF вы не ограничены извлечением текста — вы можете обрабатывать аннотации, манипулировать изображениями или даже конвертировать PDF-файлы в другие форматы, такие как HTML или Word. Гибкость и мощь этой библиотеки делают ее бесценным инструментом для управления PDF-файлами в приложениях .NET.
Часто задаваемые вопросы
Может ли Aspose.PDF извлекать текст из PDF-файлов на основе изображений?
Нет, Aspose.PDF предназначен для извлечения текста из PDF-файлов на основе контента. Для PDF-файлов на основе изображений необходима технология OCR.
Сохраняет ли Aspose.PDF форматирование при извлечения текста?
По умолчанию текст извлекается без форматирования, но вы можете настроить параметры извлечения, если хотите сохранить некоторое форматирование.
Могу ли я извлечь текст из определенного диапазона страниц?
Да, вы можете изменить код, чтобы цикл охватывал определенный диапазон страниц, а не все страницы.
Какие режимы извлечения текста есть в Aspose.PDF?
Aspose.PDF предоставляет два режима: Raw и Pure. Raw режим пытается сохранить исходную компоновку, в то время как Pure режим извлекает только текст без форматирования.
Совместим ли Aspose.PDF для .NET с .NET Core?
Да, Aspose.PDF для .NET полностью совместим с .NET Core и .NET Framework.