Скопируйте таблицы из 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/
Спасибо за чтение