Как извлечь таблицы с данными из PDF-файлов?
Выполнить эту процедуру можно в Python с помощью библиотеки Camelot.
Camelot дает возможность настроить извлечение таблиц в том случае, если невозможно получить желаемый результат с настройками библиотеки по умолчанию. Каждая извлекаемая таблица представляет собой pandas DataFrame, который легко интегрируется в ETL и рабочие процессы анализа данных. Использование Camelot позволяет экспортировать извлекаемую таблицу в форматы csv, JSON, Excel и HTML.
Хотим поделиться, как нам удалось осуществить.
Имеется pdf-файл (Table.pdf) следующего содержания:
Результаты подтверждены проверкой.
Извлекаем из этого файла таблицу и сохраняем ее в csv формате.
- Сначала нужно провести некоторые подготовительные действия, а именно: для работы библиотеки Camelot следует установить необходимые зависимости (tkinter и ghostscript) .
- Очень важно, друзья, проверить правильность установки этих зависимостей:
Для tkinter следует запустить Python и выполнить:
В случае некорректной установки tkinter будет выведено сообщение об ошибке.
Для ghostscript, установленной в среде Windows, выполнить действие, набрав в командной строке:
Или:
для 32-битной версии ОС.
В случае правильной установки будет выведена информация о версии ghostscript и об авторских правах.
- Далее устанавливаем библиотеку с помощью командной строки ОС:
- Теперь после установки всех требований, можно извлекать таблицы. Открываю новый файл Python и выполняю следующее:
Функция read_pdf () извлекает все таблицы в PDF-файле.
По умолчанию Camelot использует только первую страницу PDF-файла для извлечения таблиц.
Чтобы указать несколько страниц, можно использовать ключевое слово pages с аргументом:
Проверяем количество извлеченных таблиц:
Вывод результата:
Для экспортирования всех возможных таблиц, которые могут быть в загруженном pdf-файле в csv-файлы необходимо выполнить:
Для параметра compress задано значение True, это создаст zip-архив, содержащий все таблицы в формате csv.
Стоит уточнить, что Camelot работает именно с текстовыми PDF-файлами, а не с отсканированными документами.
"с текстовыми PDF-файлами". я понимаю, что изобретать велосипеды круто, но еще круче, когда они ездят ) текстовую пдфку любой может и так скопипастить и перерисовать в иксельке. быстрее будет, и специальных навыков не нужно )) было бы отлично, если был бы инструмент, который работает с изображениями (и он, наверняка, есть. но не в этом топике).
Есть. OCR и нейросетевое распознавание текста называется.