Вопрос или проблема
Я ищу способ разбора PDF (извлечение абзацев из них). Ранее я использовал iTextSharp
, но он не поддерживает .NET Core.
Я также пробовал эту библиотеку: https://github.com/VahidN/iTextSharp.LGPLv2.Core, но извлечение текста работает не очень хорошо. Она просто выводит случайные слова, не в правильном порядке, с множеством неправильных символов, действительно не пригодна к использованию.
Essential PDF может быть использован для загрузки PDF и извлечения содержимого из них. .NET Core также поддерживается.
// Загрузить существующий PDF.
PdfLoadedDocument загруженныйДокумент = new PdfLoadedDocument(имяФайла);
// Загрузить первую страницу.
PdfPageBase страница = загруженныйДокумент.Pages[0];
// Извлечь текст из первой страницы.
строка извлеченныйТекст = страница.ExtractText();
// Закрыть документ
загруженныйДокумент.Close(true);
Весь продукт доступен бесплатно без ограничений через общественную лицензию, если вы подходите под критерии.
Примечание: я работаю в Syncfusion
Библиотека XFINIUM.PDF поддерживает извлечение текста на платформе .NET Core.
// Загрузить PDF-документ
PdfFixedDocument документ = new PdfFixedDocument(вход);
// Создать извлекатель содержимого для нужной страницы
PdfContentExtractor ce = new PdfContentExtractor(документ.Pages[0]);
// Извлечь текст как объекты с информацией о позиции, шрифте, цвете и т.д.
PdfTextFragmentCollection tfc = ce.ExtractTextFragments();
// Или извлечь текст в виде простой строки.
строка текст = ce.ExtractText();
Оценочная версия доступна для загрузки на nuget.org, идентификатор пакета – xfinium.pdf.netcore.
Отказ от ответственности: я работаю в компании, которая разрабатывает библиотеку XFINIUM.PDF.
PdfLib CORE – это библиотека для современных приложений .NET Core для редактирования и чтения PDF-файлов.
Фрагмент из readme.md:
var dpiX, dpiY = 300D;
var i = 0;
using var pdfDocument = new PdfDocument(File.Open(<<file>>, FileMode.Open));
foreach (var page in pdfDocument.Pages)
{
using var pdfPage = page;
var pageWidth = (int) (dpiX * pdfPage.Size.Width / 72);
var pageHeight = (int) (dpiY * pdfPage.Size.Height / 72);
using var bitmap = new PdfiumBitmap(pageWidth, pageHeight, true);
pdfPage.Render(bitmap, PageOrientations.Normal, RenderingFlags.LcdText);
using var stream = bitmap.AsBmpStream(dpiX, dpiY);
// <<< делайте что-то с вашим потоком...>>>
}
Ответ или решение
Когда речь заходит о парсинге PDF документов в контексте .NET Core, важно учитывать множество доступных библиотек, каждая из которых обладает своими уникальными возможностями и особенностями. Ваша задача — эффективно извлекать текстовые данные из PDF-файлов без искажений и случайных символов, что является критически важным для успешной обработки данных. Рассмотрим несколько библиотек, которые подойдут для этой цели.
1. Syncfusion Essential PDF
Syncfusion предоставляет мощный инструмент для работы с PDF-файлами, который поддерживает .NET Core. Вы можете извлекать текст, используя следующий код:
// Загрузка существующего PDF
PdfLoadedDocument loadedDocument = new PdfLoadedDocument(fileName);
// Загрузка первой страницы
PdfPageBase page = loadedDocument.Pages[0];
// Извлечение текста с первой страницы
string extractedText = page.ExtractText();
// Закрытие документа
loadedDocument.Close(true);
Преимущества:
- Поддержка .NET Core.
- Простота использования и эффективный механизм извлечения текста.
- Доступен бесплатно через лицензию для сообщества для подходящих пользователей.
2. XFINIUM.PDF
Другой достойный вариант — библиотека XFINIUM.PDF, которая также полностью совместима с .NET Core. Пример кода для извлечения текста:
// Загрузка PDF документа
PdfFixedDocument document = new PdfFixedDocument(input);
// Создание извлекателя контента для нужной страницы
PdfContentExtractor ce = new PdfContentExtractor(document.Pages[0]);
// Извлечение текста в виде объектов с информацией о позиции, шрифте, цвете и т.д.
PdfTextFragmentCollection tfc = ce.ExtractTextFragments();
// Или извлечение текста в виде простой строки
string text = ce.ExtractText();
Преимущества:
- Высокая точность извлечения текста.
- Возможность анализа текста с дополнительной информацией о шрифтах и цветах.
- Предоставляется бесплатная версия для оценки.
3. PdfLib CORE
Если вы ищете библиотеку для редактирования и чтения PDF-файлов, стоит рассмотреть PdfLib CORE. Пример кода ниже демонстрирует, как можно работать с PDF-документами:
var dpiX, dpiY = 300D;
using var pdfDocument = new PdfDocument(File.Open("file.pdf", FileMode.Open));
foreach (var page in pdfDocument.Pages)
{
using var pdfPage = page;
// Дополнительные операции с pdfPage
}
Преимущества:
- Подходит для современных приложений на основе .NET Core.
- Эффективное управление ресурсами и поддержка обработки больших PDF-документов.
Заключение
При выборе библиотеки для парсинга PDF-файлов в .NET Core стоит учитывать такие факторы, как функциональность, простота использования, лицензирование и необходимость поддержки различных форматов. Библиотеки, такие как Syncfusion Essential PDF, XFINIUM.PDF и PdfLib CORE, предлагают различные решения, что позволяет выбрать наиболее подходящий инструмент для ваших потребностей.
Если у вас уже есть опыт работы с iTextSharp, вам будет легко перейти к одной из вышеупомянутых библиотек, так как они предлагают аналогичные функции, но с поддержкой .NET Core. Рекомендуется протестировать несколько из них, чтобы выбрать ту, которая лучше всего соответствует вашим требованиям по извлечению текста и обработке PDF-документов.