詳解Python如何利用pdfplumber提取PDF中的表格
前言
pdfplumber
是一個開源的 python
工具庫 ,它可以輕松的獲取 PDF
文本內(nèi)容、標(biāo)題、表格、尺寸等各種信息,今天來介紹如何使用它來提取 PDF
中的表格。
安裝
首先通過下面命令安裝 pdfplumber
模塊。
pip install pdfplumber
或是使用豆瓣鏡像源安裝。
pip install -i https://pypi.douban.com/simple pdfplumber
案例
這里有一份2020年中國大學(xué)生計算機設(shè)計大賽參賽作品獲獎名單,文件為 PDF
格式,每頁都包含表格,表格中包含為各支隊伍的獲獎信息,共158頁。表格前兩頁內(nèi)容如下。
下面將 PDF
中的表格提取出來,并保存到 Excel
中。
首先導(dǎo)入所需要的模塊:
import pdfplumber import pandas as pd
讀取 PDF
文件
read_path = '2020年中國大學(xué)生計算機設(shè)計大賽參賽作品獲獎名單.pdf' pdf_2020 = pdfplumber.open(read_path)
pages
屬性包含 PDF
中每頁的信息,循環(huán)每頁內(nèi)容,使用 extract_table()
方法提取每頁中的表格數(shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)為 DataFrame
,最后合并每頁的數(shù)據(jù)。
result_df = pd.DataFrame() for page in pdf_2020.pages: table = page.extract_table() df_detail = pd.DataFrame(table[1:], columns=table[0]) # 合并每頁的數(shù)據(jù)集 result_df = pd.concat([df_detail, result_df], ignore_index=True)
此時DataFrame中數(shù)據(jù)如下:
可以看到通過 extract_table()
提取后的數(shù)據(jù)有許多包含缺失值的列,我們還需要對DataFrame進行進一步處理,刪除全為缺失值的列。
result_df.dropna(axis=1, how='all', inplace=True)
刪了缺失值后,列名也一并刪除了,還需要指定對應(yīng)列名。
result_df.columns = ['獎項', '作品編號', '作品名稱', '參賽學(xué)校', '作者', '指導(dǎo)老師']
到現(xiàn)在我們就成功將表格信息完整的提取出來了!
完整代碼
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 = ['獎項', '作品編號', '作品名稱', '參賽學(xué)校', '作者', '指導(dǎo)老師'] result_df.to_excel(excel_writer=save_path, index=False, encoding='utf-8') read_path = r'2020年中國大學(xué)生計算機設(shè)計大賽參賽作品獲獎名單.pdf' save_path = r'2020年中國大學(xué)生計算機設(shè)計大賽參賽作品獲獎名單.xlsx' read_pdf(read_path, save_path)
到此這篇關(guān)于詳解Python如何利用pdfplumber提取PDF中的表格的文章就介紹到這了,更多相關(guān)Python pdfplumber提取PDF表格內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文帶你掌握Python中enumerate函數(shù)和for循環(huán)的對比
在Python編程中,循環(huán)是一項常見的任務(wù),而for循環(huán)是最常見的一種,然而,Python提供了enumerate函數(shù),它允許在迭代過程中訪問元素的同時獲得它們的索引,下面我們就來學(xué)習(xí)一下二者的區(qū)別吧2023-11-11Django rest framework工具包簡單用法示例
這篇文章主要介紹了Django rest framework工具包簡單用法,結(jié)合匿名訪問控制的具體實例分析了Django rest framework工具包的注冊、路由設(shè)置、視圖、權(quán)限控制、配置等相關(guān)操作技巧,需要的朋友可以參考下2018-07-07Python高效定時任務(wù)處理APScheduler庫深入學(xué)習(xí)
這篇文章主要為大家介紹了Python高效定時任務(wù)處理APScheduler庫深入學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08Python?shapefile轉(zhuǎn)GeoJson的2種方式實例
geojson是地圖可視化系統(tǒng)中最常用的地理數(shù)據(jù)格式,幾乎所有主流地圖可視化庫或框架都支持geojson數(shù)據(jù)的加載,下面這篇文章主要給大家介紹了關(guān)于Python?shapefile轉(zhuǎn)GeoJson的2種方式的相關(guān)資料,需要的朋友可以參考下2023-03-03