Научите, как использовать Python для извлечения таблиц в PDF

искусственный интеллект Python
Научите, как использовать Python для извлечения таблиц в PDF

«Это 18-й день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г.".

предисловие

pdfplumberявляется открытым исходным кодомpythonбиблиотека инструментов, которую можно легко получитьPDFРазличная информация, такая как текстовое содержимое, заголовок, таблица, размер и т. Д., Сегодня мы расскажем, как использовать ее для извлечения.PDFформа в .

Установить

Сначала установите его с помощью следующей командыpdfplumberмодуль.

pip install pdfplumber

Или используйте зеркальный источник Douban для установки.

pip install -i https://pypi.douban.com/simple pdfplumber

кейс

Вот список победителей конкурса компьютерного дизайна для студентов 2020 года в Китае.PDFФормат, каждая страница содержит таблицу, таблица содержит информацию о победе для каждой команды, всего 158 страниц. Первые две страницы формы выглядят следующим образом. Следующее будетPDFИзвлеките таблицу и сохраните ее вExcelсередина.

Сначала импортируйте необходимые модули:

import pdfplumber
import pandas as pd

читатьPDFдокумент

read_path = '2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
pdf_2020 = pdfplumber.open(read_path)

pagesсвойство содержитPDFинформация на каждой странице, просмотрите содержимое каждой страницы, используйтеextract_table()Метод извлекает данные таблицы на каждой странице и преобразует данные вDataFrameи, наконец, объединить данные каждой страницы.

result_df = pd.DataFrame()
for page in pdf_2020.pages:
    table = page.extract_table()
    df_detail = pd.DataFrame(table[1:], columns=table[0])
    # 合并每页的数据集
    result_df = pd.concat([df_detail, result_df], ignore_index=True)

На данный момент данные в DataFrame выглядят следующим образом:можно увидеть сквозьextract_table()Извлеченные данные содержат много столбцов с отсутствующими значениями. Нам также необходимо дополнительно обработать DataFrame, чтобы удалить все столбцы с отсутствующими значениями.

result_df.dropna(axis=1, how='all', inplace=True)

После удаления отсутствующего значения имя столбца также удаляется, и необходимо указать соответствующее имя столбца.

result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']

На данный момент мы успешно извлекли полную информацию из формы!

полный код

import pdfplumber
import pandas as pd

def read_pdf(read_path, save_path):
    pdf_2020 = pdfplumber.open(read_path)
    result_df = pd.DataFrame()
    for page in pdf_2020.pages:
        table = page.extract_table()
        print(table)
        df_detail = pd.DataFrame(table[1:], columns=table[0])
        result_df = pd.concat([df_detail, result_df], ignore_index=True)
    result_df.dropna(axis=1, how='all', inplace=True)
    result_df.columns = ['奖项', '作品编号', '作品名称', '参赛学校', '作者', '指导老师']
    result_df.to_excel(excel_writer=save_path, index=False, encoding='utf-8')

read_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.pdf'
save_path = r'2020年中国大学生计算机设计大赛参赛作品获奖名单.xlsx'
read_pdf(read_path, save_path)

Это то, чем я хочу поделиться сегодня, поиск WeChatНовые горизонты Python, приносить вам больше полезных знаний каждый день.Организовано более тысячи наборов шаблонов резюме, и сотни электронных книг ждут, когда вы их соберете! Существует также группа обмена Python Xiaobai.Если вы заинтересованы, вы можете связаться со мной указанным выше способом!