Как извлечь данные из файла PDF, следя за его структурой? - PullRequest
16 голосов
/ 02 июня 2009

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

Я пробовал несколько разных вещей, но я не очень далеко продвинулся ни в одном из них:

  • Конвертировать PDF в текст. Это не работает для меня, так как я теряю изображения и структуру документа.
  • Конвертировать PDF в HTML. Я нашел несколько инструментов, которые помогли мне в этом, и лучший из них на сегодняшний день - pdftohtml. Этот инструмент действительно хорош для презентации, но я не смог успешно разобрать HTML.
  • Конвертировать PDF в XML. То же, что и выше.

У кого-нибудь есть какие-либо предложения по решению этой проблемы?

Ответы [ 6 ]

10 голосов
/ 03 мая 2014

По сути, это нелегкое решение, потому что PDF не очень интересует структура. На этом сайте есть много других ответов, которые расскажут вам вещи более подробно, но этот должен дать вам основные моменты:

Если определить текстовую структуру в документах PDF так сложно, как читатели PDF так хорошо это делают?

Если вы хотите сделать это в самом PDF (где у вас будет большая часть контроля над процессом), вам придется циклически перебирать весь текст на страницах и идентифицировать заголовки, просматривая их свойства текста (используемые шрифты, размер относительно другого текста на странице и т. д.).

Кроме того, вам также придется идентифицировать абзацы, просматривая расположение фрагментов текста, пробелы на странице, близость определенных букв, слов и строк ... Сам по себе PDF даже не имеет Понятие слова, не говоря уже о строках или абзацах.

Чтобы еще больше усложнить ситуацию, способ отрисовки текста на странице (и, следовательно, порядок, в котором он появляется в самом файле PDF) даже не должен быть правильным порядком чтения (или тем, что мы, люди, считаем быть правильным порядком чтения).

2 голосов
/ 16 февраля 2015

Вы можете использовать следующий подход с iTextSharp или другими библиотеками с открытым исходным кодом:

  • Чтение PDF-файла с помощью iTextSharp или аналогичных инструментов с открытым исходным кодом и сбор всех текстовых объектов в массив (или преобразование PDF в HTML с помощью такого инструмента, как pdftohtml , а затем анализ HTML)
  • Сортировка всех текстовых объектов по координатам, чтобы у вас были все вместе
  • Затем выполните итерации по объектам и проверьте расстояние между ними, чтобы увидеть, можно ли объединить 2 или более объектов в один абзац или нет

Или вы можете использовать коммерческий инструмент, такой как ByteScout PDF Extractor SDK , который способен делать именно это:

  • извлечение текста и изображений вместе с анализом макета текста
  • XML или CSV, где текстовые объекты объединяются или разбиваются на абзацы внутри сетки виртуального макета
  • доступ к объектам через специальный API, который позволяет обращаться к каждому объекту через его «виртуальный» индекс строки и столбца, независимо от того, как он хранится в исходном PDF.

Отказ от ответственности: я связан с ByteScout

0 голосов
/ 09 февраля 2019

PDF-файлы можно анализировать с помощью tabula-py или tabula-java.

Я написал полное руководство по использованию tabula-py на этой статье . Вы также можете табулировать в веб-браузере, если у вас установлена ​​Java.

0 голосов
/ 17 марта 2018

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

Grobid доступен на github в качестве открытого источника.

https://github.com/kermitt2/grobid

0 голосов
/ 23 февраля 2018

iText api: PdfReader pr = новый PdfReader ("C: \ test.pdf");

Ссылка: PDFReader

0 голосов
/ 02 июня 2009

Если это не помеченное содержимое, PDF не имеет структуры .... Вы должны «угадать», что делают различные инструменты. Есть хорошее сообщение в блоге, объясняющее проблемы в http://blog.idrsolutions.com/2010/09/the-easy-way-to-discover-if-a-pdf-file-contains-structured-content/

...