C# решение для рендеринга PDF-файлов и распознавания получаемых изображений?

Я ищу решение C# для импорта данных из PDF-документов в нашу базу данных в коммерческом приложении. Наши клиенты будут стремиться импортировать любой произвольный документ. Обычно я бы списал это как полную невозможность, но документы, которые они импортируют, будут иметь свою собственную разметку.

Мой план состоит в том, чтобы PDF-файлы отображались на статических изображениях, а затем позволяли пользователям настраивать свои собственные шаблоны, которые по существу извлекают текст с предварительно определенными смещениями пикселей в PDF-файле с помощью OCR. Для таблиц они определяют местоположение таблицы и множество дополнительных значений для размеров столбцов и строк. Затем мы можем применить шаблон к этому типу документа.

Итак, что я действительно ищу, так это две библиотеки: одна для преобразования PDF-файлов в изображения, другая для распознавания этих изображений.

Требования:

  • Является ли pure-C# или имеет поддерживаемую оболочку C# для встроенной библиотеки DLL.
  • Не раскладывать процессы - в этом случае недопустимы обертки, которые просто создают параметры командной строки и запускают внешний исполняемый файл.
  • В случае FOSS позволяет нам освободиться от обычных лицензионных требований FOSS (т. Е. Опубликовать наш исходный код), заплатив лицензионный сбор.

Мы, конечно, не против заплатить за коммерческое решение, но мы бы не стали зацикливаться на плате за индивидуальное распространение программного обеспечения.

Я знаю, что это довольно специфический набор требований - возможно, достаточно, чтобы некоторые люди сочли этот вопрос слишком локализованным, но я надеюсь, что кто-то может предложить подход и некоторые библиотеки, которые могут быть полезны для меня, а также других в будущем,

Материал, который я изучил для PDF-стороны:

  • iTextSharp - Документация - это книга, которую вы должны купить, а не хорошее начало. Кажется, не очень много полезной документации по превращению PDF-файлов в изображения в свободном доступе. Лицензирование непрозрачно, похоже, что мы должны платить за каждого клиента, которому мы распространяем.
  • Docotic.Pdf - только текст, бесполезно для нас.
  • pdftohtml - опять же, не производит изображения. Было бы беспорядок, чтобы портировать на C# тоже.
  • PdfFileParser - все еще не то, что нам нужно.
  • GhostScript - в значительной степени именно то, что мы хотим, но требует разветвления для программы.

Что касается оптического распознавания текста, я, вероятно, в конечном итоге буду использовать Tesseract, поскольку лицензия Apache является разрешающей и имеет хорошие отзывы. Если есть альтернатива, я бы тоже заинтересовался этим.

2 ответа

Решение

Я думаю, вы могли бы дать Docotic.Pdf еще один шанс.

Библиотека может извлекать фрагменты текста, слова и даже отдельные символы с их ограничивающими прямоугольниками. Пожалуйста, посмотрите на образец для извлечения слов из PDF-файлов.

Кроме того, Docotic.Pdf может создавать изображения из PDF-файлов и рисовать страницы на System.Drawing.Graphics, Пожалуйста, взгляните на Draw и распечатайте группу образцов в формате PDF.

Отказ от ответственности: я один из разработчиков библиотеки.

Я хотел бы рекомендовать Amyuni PDF Creator .Net для этой задачи.

1-й сценарий:
Если ваши PDF-файлы четко определены (отсутствует информация о шрифтах и ​​т. Д.), Вы можете напрямую извлечь текст из PDF-файла, указав прямоугольную область в методе. GetObjectsInRectangle, Вы также должны использовать опцию acGetRectObjectsOptimize:

Оптимизируйте текстовые объекты перед их возвратом. То есть объединить текстовые объекты, которые расположены близко друг к другу, в один текстовый объект.

2-й сценарий:
Если есть изображения, которые также содержат текст, лучшим вариантом будет рендеринг всей страницы в изображение, а затем применение OCR. Вы можете сделать это с помощью Amyuni PDF Creator .Net с помощью методов ExportToTiff, ExportToJPeg или RasterizePageRange.

Из документации:

Метод IacDocument.RasterizePageRange
Метод RasterizePageRange преобразует содержимое страницы в цветное изображение или изображение в оттенках серого. При архивировании документов или выполнении OCR иногда предпочтительно, чтобы все страницы были сохранены в виде изображений, а не сложных текстовых и графических операций.

Затем вы можете использовать нашу надстройку OCR, которая интегрируется с Tesseract OCR, и, наконец, мы снова попадаем в 1-й сценарий (GetObjectsInRectangle). Чтобы применить OCR к вашим файлам, вы можете использовать метод OCRPageRange,

void OCRPageRange(int startPage, int EndPage, строковый язык, параметры acOCROptions)

Что касается лицензирования, Amyuni PDF Creator .Net предоставляет (за приложение) лицензионную бесплатную лицензию.

Обычный отказ от ответственности применяется

Другие вопросы по тегам