У меня есть стопка PDF-файлов - потенциально сотни или тысячи. Они не все отформатированы одинаково, но в любой из них МОЖЕТ быть одна или несколько таблиц с интересной информацией, которую я хотел бы собрать в отдельную базу данных.
Конечно, я знаю, что для этого нужно что-то написать. Perl - это вариант для меня - или, возможно, Java. Мне все равно, какой язык, если он бесплатный (или дешевый с бесплатным пробным периодом, чтобы убедиться, что он соответствует моим целям).
Я смотрю на CAM::Parse (используя клубничный Perl), но я не уверен, как его использовать для поиска и извлечения таблиц из файлов. Я предполагаю, что предпочитаю Perl, но на самом деле мне нужно что-то надежно работающее и достаточно простое для манипуляций со строками.
Каков хороший подход для чего-то подобного? Я на первом месте, поэтому, если у java (или python и т. д.) есть лучшие хуки, сейчас самое время узнать об этом. Общие указатели хорошие; стартовый код был бы настоятельно предпочтительнее.
Ответ 1 · рейтинг 47 · Kurt Pfeifle
Формат PDF с момента своего появления (более 20 лет назад) никогда не предназначался для размещения извлекаемых, осмысленно структурированных данных.
Его цель состояла в том, чтобы быть надежным визуальным представлением текста, изображений и диаграмм в документе - своего рода цифровой бумаге (которая также надежно переносилась бы на реальную бумагу посредством печати). Только позже в его разработке были добавлены дополнительные функции, которые должны помочь в повторном извлечении данных (google для Tagged PDF).
Некоторые примеры проблем, возникающих при очистке таблиц данных из PDF-файлов, см. в этой статье:
Противоречит моему пункту "1". выше, а теперь я скажу следующее: потрясающее семейство инструментов, которое с каждой неделей становится все лучше и лучше для извлечения табличных данных из PDF-файлов (если только они не являются отсканированными страницами), смотрите по этим ссылкам:
Так что: иди ищи Табулу. Если какие-либо инструменты могут делать то, что вы хотите, в настоящее время Tabula, вероятно, является одним из лучших для этой работы!
Обновлять
Недавно я создал скринкаст ASCiinema, демонстрирующий использование интерфейса командной строки Tabula для извлечения большой таблицы из PDF-файла в формате CSV:
(Нажмите на изображение выше, чтобы увидеть, как он работает. Если он работает слишком быстро, чтобы вы могли прочитать весь текст, используйте кнопку "Пауза" (символ ||). )
Он размещен здесь: