Библиотека парсинга PDF, совместимая с .NET Core

Вопрос или проблема

Я ищу способ разбора 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-документов.

Оцените материал
Добавить комментарий

Капча загружается...