Как извлечь текст из PDF с помощью C#
Извлечение текста из PDF-файлов — это распространенная задача в приложениях для обработки документов. Независимо от того, нужно ли вам получить конкретный контент, проанализировать данные или автоматизировать извлечение текста, надежная библиотека может упростить задачу. В этом посте мы рассмотрим, как использовать Free Spire.PDF for .NET, мощную библиотеку C#, для извлечения текста из PDF в различных сценариях, включая:
Извлечение текста с конкретной страницы
Извлечение текста из прямоугольной области
Извлечение таблиц из PDF
Бесплатная библиотека C# для извлечения текста из PDF
Free Spire.PDF for .NET — это легкая, но мощная библиотека, которая позволяет разработчикам работать с PDF-файлами в приложениях .NET. Она поддерживает различные операции с PDF, включая извлечение текста, без необходимости использования Adobe Acrobat.
Чтобы начать, установите библиотеку с помощью диспетчера пакетов NuGet в Visual Studio:
Install-Package FreeSpire.PDF
Либо найдите "FreeSpire.PDF" в диспетчере пакетов NuGet и установите ее.
Извлечение текста с конкретной страницы
Если вы хотите извлечь весь текст с конкретной страницы в PDF, Free Spire.PDF предлагает простые методы для этого. Сначала загрузите PDF-файл из заданного пути. Затем получите доступ к нужной странице и создайте объект PdfTextExtractor для управления процессом извлечения.
Используя объект PdfTextExtractOptions, вы можете настроить параметры извлечения. Установите IsExtractAllText в true, чтобы убедиться, что весь текст на странице будет захвачен. Наконец, вызовите метод ExtractText() у PdfTextExtractor, чтобы получить текст с указанной страницы.
Пример кода:
using System;
using System.IO;
using Spire.Pdf;
using Spire.Pdf.Texts;
namespace ExtractTextFromPage
{
class Program
{
static void Main(string[] args)
{
// Создаем объект PdfDocument
PdfDocument doc = new PdfDocument();
// Загружаем PDF-файл
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\input.pdf");
// Получаем конкретную страницу
PdfPageBase page = doc.Pages[0];
// Создаем объект PdfTextExtractor
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
// Создаем объект PdfTextExtractOptions
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
// Устанавливаем isExtractAllText в true
extractOptions.IsExtractAllText = true;
// Извлекаем текст со страницы
string text = textExtractor.ExtractText(extractOptions);
// Записываем в текстовый файл
File.WriteAllText("Extracted.txt", text);
}
}
}
Этот код извлекает весь текст с первой страницы PDF и сохраняет его в текстовом файле.
Извлечение текста из прямоугольной области
Иногда может понадобиться извлечь текст из определенной прямоугольной области страницы. Начните с загрузки PDF-файла и нацеливания на нужную страницу. Затем создайте PdfTextExtractor и определите область извлечения, используя объект RectangleF, указав его координаты и размеры. Наконец, вызовите метод ExtractText() у PdfTextExtractor, чтобы получить текст в определенной области.
Пример кода:
using Spire.Pdf;
using Spire.Pdf.Texts;
using System.IO;
using System.Drawing;
namespace ExtractTextFromRectangleArea
{
class Program
{
static void Main(string[] args)
{
// Создаем объект PdfDocument
PdfDocument doc = new PdfDocument();
// Загружаем PDF-файл
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\input.pdf");
// Получаем конкретную страницу
PdfPageBase page = doc.Pages[1];
// Создаем объект PdfTextExtractor
PdfTextExtractor textExtractor = new PdfTextExtractor(page);
// Создаем объект PdfTextExtractOptions
PdfTextExtractOptions extractOptions = new PdfTextExtractOptions();
// Устанавливаем область прямоугольника
extractOptions.ExtractArea = new RectangleF(0, 0, 800, 200);
// Извлекаем текст из прямоугольника
string text = textExtractor.ExtractText(extractOptions);
// Записываем в текстовый файл
File.WriteAllText("Extracted.txt", text);
}
}
}
Этот код извлекает текст только из указанного прямоугольного региона (координаты (0, 0) до (800, 200)) на второй странице.
Извлечение таблиц с конкретной страницы
Извлечение таблиц из PDF может быть сложной задачей, но Free Spire.PDF упрощает процесс с помощью класса PdfTableExtractor. Сначала инициализируйте PdfTableExtractor и используйте метод ExtractTable(), чтобы получить таблицы с первой страницы документа.
Извлеченные таблицы хранятся в массиве, который вы можете перебрать. Для каждой таблицы пройдите по ее строкам и столбцам, чтобы собрать текст из каждой ячейки. Наконец, добавьте объединенный текст в StringBuilder и сохраните его в "Table.txt".
Пример кода:
using System.IO;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Utilities;
namespace ExtractPdfTable
{
class Program
{
static void Main(string[] args)
{
// Создаем объект PdfDocument
PdfDocument doc = new PdfDocument();
// Загружаем образец PDF-файла
doc.LoadFromFile(@"C:\Users\Administrator\Desktop\input.pdf");
// Создаем объект StringBuilder
StringBuilder builder = new StringBuilder();
// Инициализируем экземпляр класса PdfTableExtractor
PdfTableExtractor extractor = new PdfTableExtractor(doc);
// Объявляем массив PdfTable
PdfTable[] tableList = null;
// Извлекаем таблицы с конкретной страницы
tableList = extractor.ExtractTable(0);
// Проверяем, не является ли список таблиц нулевым
if (tableList != null && tableList.Length > 0)
{
// Перебираем таблицы в списке
foreach (PdfTable table in tableList)
{
// Получаем количество строк и столбцов определенной таблицы
int row = table.GetRowCount();
int column = table.GetColumnCount();
// Перебираем строки и столбцы
for (int i = 0; i < row; i++)
{
for (int j = 0; j < column; j++)
{
// Получаем текст из конкретной ячейки
string text = table.GetText(i, j);
// Добавляем текст в StringBuilder
builder.Append(text + " ");
}
builder.Append("\r\n");
}
}
}
// Записываем в .txt файл
File.WriteAllText("Table.txt", builder.ToString());
}
}
}
Этот код извлекает все таблицы с первой страницы и сохраняет их в структурированном текстовом формате.
Заключение
Free Spire.PDF for .NET — отличный выбор для извлечения текста и таблиц из PDF в C#. Независимо от того, нужно ли вам извлечь целые страницы, конкретные области или структурированные таблицы, эта библиотека предлагает эффективные и простые методы.
Следуя приведенным выше примерам, вы можете легко интегрировать извлечение текста из PDF в свои приложения .NET.