Извлечь весь текст с позициями строки из PDF - PullRequest
4 голосов
/ 02 апреля 2012

Это может показаться старым вопросом, но я не нашел исчерпывающего ответа, потратив полчаса на поиск по всему SO.

Я использую PDFBox и хотел бы извлечь весь текст изфайл PDF вместе с координатами каждой строки.Я использую их PrintTextLocations пример (http://pdfbox.apache.org/apidocs/org/apache/pdfbox/examples/util/PrintTextLocations.html), но с тем видом PDF, который я использую (E-Tickets), программе не удается распознать строки, печатая каждый символ отдельно. В результате получается список строк (каждыйпредставляющий объект TextPosition), например:

String[414.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.0] s
String[418.93896,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] a
String[423.38696,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=1.776001] l
String[425.16296,637.2442 fs=1.0 xscale=8.0 height=4.94 space=2.2240002 width=4.447998] e

Хотелось бы, чтобы программа распознала строку «продажа» как уникальную TextPosition и указала мне свою позицию. Я также пытался поиграть сметоды setSpacingTolerance() и setAverageCharacterTolerance() PDFTextStripper, устанавливающие различные значения выше и ниже стандартных значений (для которых FYI составляет 0,5 и 0,3 соответственно), но выход не изменился вообще. Где я иду неправильно? Спасибо ввперед.

1 Ответ

4 голосов
/ 04 июня 2012

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

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

...