Скопируйте таблицы из PDF, HTML, веб-страниц в одну строку кода Python

Сбор данных - это начальный этап жизненного цикла разработки модели науки о данных. Набор данных может быть представлен в любом формате, инженеру данных или специалисту по данным необходимо предварительно обработать необработанный набор данных, чтобы он подходил для моделирования. Многие структурированные или частично структурированные наборы данных могут быть представлены в файлах PDF, HTML, веб-страницах или в формате изображений. Очистка наборов данных или таблиц из таких неструктурированных документов - утомительная задача. Кроме того, разработка специального инструмента для извлечения таблиц требует много работы.

Checklist:
(1) Pandas read_html() function
(2) Tabula-py library
(3) Camelot

В этой статье мы обсудим 3 таких пакета с открытым исходным кодом, которые могут вырезать или извлекать таблицы из файлов PDF, HTML или веб-страниц и преобразовывать их во фрейм данных Pandas.

(1.) Панды read_html ():

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

Использование:

import pandas as pd
df = pd.read_html('-- web address --')

Функция read_html () из Pandas извлекает все таблицы с веб-страницы. Таблицы читаются в том порядке, в котором они написаны в HTML-коде веб-страницы.

На вышеупомянутой веб-странице представлены 4 таблицы. Каждая из таблиц может отображаться как фрейм данных Pandas по индексу.

(2) Табула-ру:

Tabula-py - это библиотека Python с открытым исходным кодом, которая позволяет очищать таблицы из документов PDF или конвертировать весь документ PDF в форматы CSV, TSV, JSON. Это Python-оболочка пакета tabula-java.

Установка и использование:

tabula-py пакет можно установить из PyPI с помощью

pip install tabula-py

Для чтения PDF-документов и преобразования таблиц в список фреймов данных используйте:

import tabula
tables = tabula.read_pdf('file.pdf', pages = "all")

tabula-py может извлекать таблицы из одного PDF-документа и сохранять их в формате CSV.

# convert PDF into CSV file
tabula.convert_into("test.pdf", "output.csv", output_format="csv", pages='all')

(3.) Камелот:

Camelot - еще одна библиотека Python, которая извлекает таблицы из документов PDF, которые можно экспортировать в формат данных CSV, TSV, JSON. Camelot лучше всего работает с текстовыми PDF-документами, а не с отсканированными документами или изображениями.

Камелот в основном использовал два метода синтаксического анализа для извлечения таблиц из документов PDF:

  • Парсинг потока
  • Разбор решетки

Прочтите эту статью, чтобы получить пошаговый подход к вышеупомянутой технике синтаксического анализа.

Установка и использование:

Camelot требует наличия зависимости Ghostscript, обе библиотеки можно установить из PyPI:

!pip install "camelot-py[cv]"
!apt install python3-tk ghostscript

После импорта библиотеки Camelot import camelot таблицы можно извлечь из документа PDF с помощью функции read_pdf().

df_table = camelot.read_pdf('file.pdf', pages='1,2,4-5')

По умолчанию таблицы извлекаются с первой страницы документа PDF. Используя параметр pages, можно извлечь таблицы, указанные в списке номеров страниц. После очистки таблиц к каждой из таблиц можно получить доступ, используя номера индексов.

#To display the ith table as Pandas Data frame
tables[i].df

Заключение:

В этой статье мы обсудили 3 библиотеки Python с открытым исходным кодом, которые могут извлекать или очищать таблицы из документов PDF, HTML или веб-страниц в виде фрейма данных Pandas. Это удобные инструменты, позволяющие ускорить рабочий процесс сбора данных всего несколькими строками кода Python.

Существуют различные другие такие библиотеки, включая pdftables, pdf-table-extract, pdfplumber, которые выполняют аналогичные функции.

Использованная литература:

[1] Tabula-py GitHub: https://github.com/chezou/tabula-py

[2] Документация Камелота: https://camelot-py.readthedocs.io/en/master/

Спасибо за чтение