Как извлечь таблицу из плохо отформатированного PDF?

Мой клиент должен иметь CSV с именем, фамилией, DOB из своей базы данных учета.

Проблема в том, что их бухгалтерское программное обеспечение находится «в облаке» (следовательно, на чужом компьютере и в свободном доступе из любой точки мира), и все, что может сделать это веб-приложение, — это создать очень плохо отформатированную «приветственную открытку в формате pdf», например

hi <newline>
<lots of spaces>my name is %name% <lots of spaces> %surname%
<lots of newlines and spaces to simulate text alignment to the right>I was born in %dob
<newpage>

Итак, все, что я могу получить, это PDF-файл на 500 страниц с этим непригодным для использования содержимым.

Есть ли способ извлечь данные из такого файла?


person Magnetic_dud    schedule 22.04.2015    source источник
comment
конечно, но если формат такой глупый, вас ждет много строк проб и ошибок и операций с регулярными выражениями... удачи.   -  person Marc B    schedule 22.04.2015
comment
Если форматирование одинаково на каждой странице, создание регулярного выражения для извлечения данных не должно быть большой проблемой.   -  person Robert    schedule 22.04.2015


Ответы (2)


Важно знать, нужно ли вам делать это несколько раз или только один раз для одного 500-страничного файла. Я предположу только один раз.

В этом случае конвертируйте PDF в XML (если это вообще возможно) или в текстовый файл (доступно много конвертеров — просто погуглите).

Затем важно знать, все ли «записи» отформатированы одинаково, то есть формат: .... имя... фамилия... доб... адресная строка1.... (где ... ты не хочешь)

Всегда ли существуют «метки» или «теги», которые сообщают вам, что следующая вещь — «адресная строка 1», или если значение пропущено, вы можете сказать?

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

person PaulG    schedule 22.04.2015

Я это сделал! Спасибо за подсказки, вот как я превратил бесполезный PDF в полезный CSV:

  1. Я преобразовал PDF в TXT с помощью cloudconvert.com
  2. Смотрел как файл, с cat -A
  3. Я заметил, что перед каждой полезной информацией стояла новая строка.
  4. Я заметил, что каждая страница заканчивалась символом FORM FEED.
  5. Я заменил каждый символ новой строки на ;
  6. Я заменил каждый символ FORM FEED символом новой строки
  7. Я импортировал (недавно созданный) CSV в Libreoffice и удалил бесполезные столбцы.
person Magnetic_dud    schedule 22.04.2015