Разработка
NTA

Как извлечь таблицы с данными из PDF-файлов?

Выполнить эту процедуру можно в Python с помощью библиотеки Camelot.

Camelot дает возможность настроить извлечение таблиц в том случае, если невозможно получить желаемый результат с настройками библиотеки по умолчанию. Каждая извлекаемая таблица представляет собой pandas DataFrame, который легко интегрируется в ETL и рабочие процессы анализа данных. Использование Camelot позволяет экспортировать извлекаемую таблицу в форматы csv, JSON, Excel и HTML.

Хотим поделиться, как нам удалось осуществить.

Имеется pdf-файл (Table.pdf) следующего содержания:

Таблица экономии топлива на маршруте следования спецтранспорта при различных показателях движения

Результаты подтверждены проверкой.

Извлекаем из этого файла таблицу и сохраняем ее в csv формате.

  • Сначала нужно провести некоторые подготовительные действия, а именно: для работы библиотеки Camelot следует установить необходимые зависимости (tkinter и ghostscript) .
  • Очень важно, друзья, проверить правильность установки этих зависимостей:

Для tkinter следует запустить Python и выполнить:

import tkinter

В случае некорректной установки tkinter будет выведено сообщение об ошибке.

Для ghostscript, установленной в среде Windows, выполнить действие, набрав в командной строке:

C:\> gswin64c.exe -version

Или:

C:\> gswin32c.exe -version

для 32-битной версии ОС.

В случае правильной установки будет выведена информация о версии ghostscript и об авторских правах.

  • Далее устанавливаем библиотеку с помощью командной строки ОС:
pip install camelot-py[cv]
  • Теперь после установки всех требований, можно извлекать таблицы. Открываю новый файл Python и выполняю следующее:
import camelot # PDF-файл с извлекаемой таблицей file = 'Table.pdf'

Функция read_pdf () извлекает все таблицы в PDF-файле.

# извлечение всех таблиц в PDF-файле tables = camelot.read_pdf(file)

По умолчанию Camelot использует только первую страницу PDF-файла для извлечения таблиц.

Чтобы указать несколько страниц, можно использовать ключевое слово pages с аргументом:

tables = camelot.read_pdf(file, pages='1,2,3')

Проверяем количество извлеченных таблиц:

print('Количество извлеченных таблиц:', tables.n)

Вывод результата:

Количество извлеченных таблиц: 1

Для экспортирования всех возможных таблиц, которые могут быть в загруженном pdf-файле в csv-файлы необходимо выполнить:

# экспорт всех таблиц в zip-архив tables.export('export.csv', f='csv', compress=True)

Для параметра compress задано значение True, это создаст zip-архив, содержащий все таблицы в формате csv.

Стоит уточнить, что Camelot работает именно с текстовыми PDF-файлами, а не с отсканированными документами.

{ "author_name": "NTA", "author_type": "editor", "tags": [], "comments": 2, "likes": 2, "favorites": 9, "is_advertisement": false, "subsite_label": "dev", "id": 145377, "is_wide": true, "is_ugc": false, "date": "Mon, 27 Jul 2020 14:36:16 +0300", "is_special": false }
0
2 комментария
Популярные
По порядку
2

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

Ответить
0

Есть. OCR и нейросетевое распознавание текста называется.

Ответить
Читать все 2 комментария
Сотрудник «Сбербанка» авторизовался в моём аккаунте — это было сделано без моего согласия

Привет. Недавно я купил дом в ипотеку через «Домклик». На этапе сделки произошло кое-что странное — менеджер Сбербанка со своего компьютера авторизовалась в моем аккаунте в «Домклике», чтобы написать самой себе хороший отзыв.

Робототехника и облачные мощности: почему роботам нужны облака

Настроить автопилот квадрокоптера и запрограммировать коллаборативного робота проще с виртуальными серверами.

Создатели Maps.me запустили сервис Organic Maps с офлайн-картами без трекеров и регистрации Статьи редакции

В приложении есть велосипедные маршруты, автомобильная навигация и места, которые не отмечены на других картах.

Россия возобновит авиасообщение с курортами Турции с 22 июня Статьи редакции

С 28 июня возобновляются полёты в Италию, Болгарию, США и ещё пять стран.

Что такое пассивное инвестирование. Рассказывает персональный брокер

Как правильно вкладывать деньги на годы или даже десятилетия, и как Уоррен Баффет выиграл пари

Лето с HONOR: скидки до 60 000 рублей на ноутбуки и не только

HONOR объявляет о специальных летних скидках на ноутбуки и другую продукцию бренда. С 18 июня пользователи смогут приобрести устройства HONOR с выгодой до 60 000 рублей. Подробнее об условиях акции вы можете узнать на официальном сайте интернет-магазина HONOR и в официальных монобрендовых магазинах HONOR в Москве и других городах России.

Москва вошла в тройку рейтинга экосистем для стартапов среди европейских городов
Занять столь высокое место в рейтинге столице позволили городские программы развития технологического сервиса.

Таким образом, столица улучшила свою позицию на один пункт по сравнению с предыдущим годом. Обогнать Москву удалось лишь Лондону. Замыкает тройку лидеров – Париж.

Дороги будущего: когда в России оцифруют строительство инфраструктуры и как это изменит индустрию

Использование данных и больших данных помогает различным отраслям работать более эффективно. Строительство — не исключение. Юлия Штрек, CFO группы компаний «Автобан», рассказывает о том, как использование цифровых технологий и информационное моделирование поможет развитию строительства дорог в России.

Власти Китая попросили одного из богатейших бизнесменов страны «залечь на дно» после поста со стихотворением — Bloomberg Статьи редакции

Это уже второй случай из-за публичных выступлений — в 2020 году на два месяца «ушёл в тень» основатель Alibaba Джек Ма.

Дизайн-джем #33: AR-фильтры для Massive Attack и Уилла Смита от Эдуарда Михайлова, 3D-реконструкции МРТ от Magic Leap

И другие впечатляющие проекты из мира дополненной реальности в дайджесте от Futura by red_mad_robot.

В обложке использованы фрагменты из работ моушн-дизайнера Эдуарда Михайлова
Облачные игры стали доступны клиентам Yota
Комментарии
null