короткий ответ:
Да (вероятно) есть
длинный ответ:
PDF не похож надокумент Word или страница HTML.Документы PDF могут содержать структурную информацию (указывающую, какие глифы составляют строку текста, какие строки составляют абзац и т. Д.).Но спецификация не обязывает их делать это.
Большинство документов PDF, которые вы найдете в дикой природе, на самом деле не содержат структурную информацию.
iText (и многие другие библиотеки)использовать простую эвристику.Они анализируют инструкции рендеринга, сохраняют их и сортируют в «логическом порядке чтения».То есть сверху вниз, слева направо.
Конечно, в документах, подобных этому, эффект довольно слабый.
iText действительно позволяет вам выбрать эвристику, которую вы хотитеиспользовать.Если ничего не указано, вы используете SimpleTextExtractionStrategy
, который выплевывает глифы в порядке появления в потоке команд (который может не совпадать с порядком чтения).
Как сказал @mkl, однако, некаждый обязан читать документ одинаково.Это становится еще более интересным (и сложным), если вы думаете о научных статьях (сноски, встроенная графика, встроенные таблицы и т. Д.) Или журнальных статьях (встроенные цитаты или фрагменты).
Я думаю, вам будет лучшепробовать инструмент типа pdf2Data
, который является частью семейства iText.Он считывает входной документ, сопоставляет его с шаблоном, а затем выплевывает информацию либо в виде JSON-подобной структуры данных, либо в виде HTML.
Таким образом, вы можете сопоставить этот документ с шаблоном, исначала решите, какую информацию вы хотите извлечь.