因為工作原因,我每天都要接觸大量的數據報表,PDF轉Excel這種格式轉換場景也非常多。

目前市場上有很多pdf工具,大部分是閲讀類,也有支持對pdf的修改、轉換等功能,但這部分工具不少是收費的。

這次介紹一個開源python工具庫-pdfplumber,可以方便地獲取pdf的各種信息,包括文本、表格、圖表、尺寸等。

從PDF中提取Excel,這個工具真的好用_命令行

python中有很多庫可以處理pdf,比如PyPDF2、pdfminer等,那pdfplumber的優勢在哪呢?

首先,pdfplumber能輕鬆訪問有關PDF對象的所有詳細信息,且用於提取文本和表格的方法高級可定製,使用者可根據表格的具體形式來調整參數。

最關鍵的是pdfplumber作者持續在維護該庫,而同樣受歡迎的PyPDF2已經不再維護了。

同其他python庫一樣,pdfplumber支持使用pip安裝,在命令行輸入

pip install pdfplumber

如果遇到安裝慢的問題,可以替換鏡像源,會快很多。

pdfplumber安裝後,用import導入即可使用。

再看下如何用pdfplumber提取pdf表格?

以NBA 2020-2021 常規賽數據作為範例,pdf表格如下:

從PDF中提取Excel,這個工具真的好用_命令行_02

第一步:使用pdfplumber提取表格文本

# 導入pdfplumber
import pdfplumber

# 讀取pdf文件,保存為pdf實例
pdf =  pdfplumber.open("E:\\nba.pdf") 

# 訪問第二頁
first_page = pdf.pages[1]

# 自動讀取表格信息,返回列表
table = first_page.extract_table()

輸出:

從PDF中提取Excel,這個工具真的好用_數據_03

第二步:整理成dataframe格式,保存為excel

import pandas as pd

# 將列表轉為df
table_df = pd.DataFrame(table_2[1:],columns=table_2[0])

# 保存excel
table_df.to_excel('test.xlsx')

table_df

從PDF中提取Excel,這個工具真的好用_數據_04

一個小小的腳本,不到十行代碼,便將pdf表格提取並轉化為dataframe格式,最終保存到excel。

可見pdfplumber處理PDF表格數據還是蠻方便的,而且比較準確。