Извлечение данных из PDF

У меня есть система, которая в конечном итоге создает файлы PDF из файла HTML. Это работает очень похоже на слияние почты. Он захватывает данные из базы данных, объединяет данные с держателями в html-документе, а затем преобразует html-файл в pdf.

При модульном тестировании html-файла я могу посмотреть значения в моем заполнителе. Например, если у меня был Джон Смит, и я хочу проверить, что это имя «Джон Смит», я просто смотрю значение div после слияния.

Мне нужно сделать что-то подобное с проверкой данных в PDF. Используя pdfbox и itext, я смог извлечь текст из местоположения, а также текст из документа, но я не могу найти ничего, что позволило бы мне создать «тег / заполнитель / ...» и извлечь из него информацию, аналогичную той, что Я делаю с html файлом.

Возможно ли это с pdf?

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

Andrew S 16.10.2018 21:11

Я уже делал нечто подобное. Что мое руководство ищет от меня, чтобы создать что-то, что они могут получить в конечном результате (pdf) и проводить контроль качества через каждые 1000 или около того в производстве

user889829 16.10.2018 21:31

Вы можете сравнить рендеринг ... но проблема в том, что рендеринг может немного отличаться в разных версиях jdk. Другой вариант - это PDF-файл с тегами, но он плохо поддерживается в PDFBox или его очень сложно сделать, а извлечение текста не имеет к нему никакого отношения. Третья идея - бусинки… они похожи на невидимые прямоугольники, которые огибают части текста. Ваш текст может получить эти бусинки и затем использовать их координаты для выделения области (требуется преобразование в экранные координаты). Не так сложно, как тегирование, но все же не так просто.

Tilman Hausherr 17.10.2018 08:41
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
230
1

Ответы 1

Это вполне возможно с помощью pdf2Data, который является решением из пакета iText.

Вы можете найти демо здесь
http://pdf2data.online/

По сути, он делает именно то, что вы описали, вам предоставляется средство просмотра и некоторые инструменты, которые позволяют вам определять области интересов (то, что вы назвали «заполнителями»).

Области интереса можно определить с помощью:

  • координаты
  • относительно других областей интересов
  • относительно текста или регулярных выражений
  • соответствие определенному регулярному проявлению
  • соответствие таблицы
  • так далее

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

Вам предоставляется структура данных в стиле json или XML-файл. Это должно упростить проверку того, содержит ли данная область интереса фрагмент текста.

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