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