Конвертування PDF у текст у C# - Блог ITVDN
ITVDN: курси програмування
Відеокурси з
програмування
УКР
  • РУС
  • УКР

    Вибери свою IT спеціальність

    Підписка
    УКР
    • РУС
    • УКР
    Arrow
    27 березня відбудеться вебінар «Підготовка до співбесіди з PHP» Подробиці і реєстрація
    Arrow

    Конвертування PDF у текст у C#

    advertisement advertisement

    Как интерпретировать PDF-файлы

    Существует несколько основных методов извлечения текста из PDF файлов в .NET:

    • Microsoft IFilter interface и Adobe IFilter implementation;
    • iTextSharp;
    • PDFBox.

    Эти методы PDF-интерпретации неидеальны. Ниже подробно рассмотрим каждый из них.


    1. Разбор PDF с помощью Adobe PDF IFilter

    Для того, чтобы разобрать PDF-файлы с помощью IFilter, Вам понадобится:

    Пример кода:

    using IFilter;

    // ...

    public static string ExtractTextFromPdf(string path) {

           return DefaultParser.Extract(path);

    }

    Загружаем пример проекта:

    Интерпретация PDF-файлов, используя IFilter

    Если Вы используете PDF IFilter, работующий с Adobe Acrobat Reader, Вам нужно переименовать процесс "filtdump.exe", иначе интерфейс IFilter вернёт код ошибки E_NOTIMPL. Детально смотрите на Parsing PDF Files using IFilter.

    Недостатки:

    1. Использование ненадежного COM Interop. Он обрабатывает интерфейс IFilter (сочетание IFilter COM и Adobe PDF IFilter может быть проблематичным).

    2. Раздельная установка Adobe IFilter на целевой системе. Неудобно распространять индексное решение другим пользователям.

    3. Нужно использовать имя файла "filtdump.exe" для Вашего приложения с последним PDF IFilter, прилагающимся к Acrobat Reader.

         2. Разбор PDF с помощью iTextSharp

    iTextSharp – .NET порт  iText, PDF библиотеки для Java. Его основная функция – создание, а не чтение PDF-файлов, но он также позволяет извлекать текст из PDF-файлов.

    Пример кода:

    using iTextSharp.text.pdf;

    using iTextSharp.text.pdf.parser;

    // ...

    public static string ExtractTextFromPdf(string path)

    {

           using (PdfReader reader = new PdfReader(path))

           {

                  StringBuilder text = new StringBuilder();

                  for (int i = 1; i <= reader.NumberOfPages; i++)

                  {

                         text.Append(PdfTextExtractor.GetTextFromPage(reader, i));

                  }

                  return text.ToString();

           }

    }

    Загружаем пример проекта:

    Интерпретация PDF-файлов с iTextSharp

    Вы можете использовать LocationTextExtractionStrategy, чтобы получить более высокую точность.

    public static string ExtractTextFromPdf(string path)

    {

           ITextExtractionStrategy its = new iTextSharp.text.pdf.parser.LocationTextExtractionStrategy();

           using (PdfReader reader = new PdfReader(path))

           {

                  StringBuilder text = new StringBuilder();

                  for (int i = 1; i <= reader.NumberOfPages; i++)

                  {

                         string thePage = PdfTextExtractor.GetTextFromPage(reader, i, its);

                         string[] theLines = thePage.Split('\n');

                         foreach(var theLine in theLines)

                         {

                                text.AppendLine(theLine);

                         }

                  }

                  return text.ToString();

           }

    }

    Недостатки iTextSharp:

    Лицензирование, если Вы недовольны AGPL лицензией.

          3. Разбор PDF с помощью PDFBox

    PDFBox – другая Java PDF библиотека. Она может использоваться с оригинальной Java Lucene (LucenePDFDocument).

    К счастью, существует .NET версия PDFBox, созданная с помощью IKVM.NET (загрузите  PDFBox package).

    Для использования PDFBox в .NET требуется:

    1. Добавление ссылок:

    • IKVM.OpenJDK.Core.dll
    • IKVM.OpenJDK.SwingAWT.dll
    • pdfbox-1.8.7.dll

    2. Копирование таких файлов каталога Bin:

    • commons-logging.dll
    • fontbox-1.8.7.dll
    • IKVM.OpenJDK.Text.dll
    • IKVM.OpenJDK.Util.dll
    • IKVM.Runtime.dll

    Использование PDFBox для разбора файлов PDF достаточно простое:

    using org.apache.pdfbox.pdmodel;

    using org.apache.pdfbox.util;

    // ...

    private static string ExtractTextFromPdf(string path)

    {

           PDDocument doc = null;

           try {

                  doc = PDDocument.load(path)

                         PDFTextStripper stripper = new PDFTextStripper();

                  return stripper.getText(doc);

           }

           finally {

                  if (doc != null) {

                         doc.close();

                  }

           }

    }

    Загружаем пример проекта:

    Как конвертировать PDF в текст в C# (.NET)

    Как конвертировать PDF в текст VB (.NET)

    Размер требуемой сборки составит почти 18 Мбайт:

    • IKVM.OpenJDK.Core.dll (4 MB)
    • IKVM.OpenJDK.SwingAWT.dll (6 MB)
    • pdfbox-1.8.7.dll (4 MB)
    • commons-logging.dll (82 kB)
    • fontbox-1.8.7.dll (180 kB)
    • IKVM.OpenJDK.Text.dll (800 kB)
    • IKVM.OpenJDK.Util.dll (2 MB)
    • IKVM.Runtime.dll (1 MB)

    Недостатки:

    1. IKVM.NET Dependencies (18 MB).

    2. Скорость (особенно скорость IKVM.NET).

    Источник: http://www.codeproject.com/Articles/12445/Converting-PDF-to-Text-in-C

    КОМЕНТАРІ ТА ОБГОВОРЕННЯ
    advertisement advertisement

    Купуй передплатуз доступом до всіх курсів та сервісів

    Бібліотека сучасних IT знань у зручному форматі

    Вибирай свій варіант підписки залежно від завдань, що стоять перед тобою. Але якщо потрібно пройти повне навчання з нуля до рівня фахівця, краще вибирати Базовий або Преміум. А для того, щоб вивчити 2-3 нові технології, або повторити знання, готуючись до співбесіди, підійде Пакет Стартовий.

    Стартовий
    • Усі відеокурси на 3 місяці
    • Тестування з 10 курсів
    • Перевірка 5 домашніх завдань
    • Консультація з тренером 30 хв
    59.99 $
    Придбати
    Весняний
    • Усі відеокурси на 15 місяців
    • Тестування з 24 курсів
    • Перевірка 20 домашніх завдань
    • Консультація з тренером 120 хв
    90.00 $
    219.99 $
    Придбати
    Акція
    Преміум
    • Усі відеокурси на 12 місяців
    • Тестування з 24 курсів
    • Перевірка 20 домашніх завдань
    • Консультація з тренером 120 хв
    169.99 $
    Придбати
    Notification success