本文演示如何利用 pdfplumber
批量處理指定文件夾下 PDF 文檔:定位關鍵詞(如“主要會計數據”)出現的頁碼及下一頁,提取其中的表格并保存為獨立 Excel 文件。適用于財務報告、審計表格、統計報表等場景。
1?? 第一步:批量收集 PDF 文件路徑
import ospath = 'PDF'
files = [os.path.join(path, f) for f in os.listdir(path)]
-
使用
os.listdir()
獲取文件夾下所有 PDF; -
拼接完整路徑后存儲到
files
列表,便于批量處理。
2?? 示例腳本:查找關鍵詞并導出表格
import pdfplumber
from openpyxl import Workbookkey_words = "主要會計數據"for file in files:with pdfplumber.open(file) as pdf:wb = Workbook()wb.remove(wb.worksheets[0])pages_wanted = []for idx, page in enumerate(pdf.pages):if key_words in page.extract_text():pages_wanted.extend([idx, idx+1])breakfor i in pages_wanted:page = pdf.pages[i]tables = page.extract_tables()if tables:ws = wb.create_sheet(f"Sheet{i+1}")for table in tables:for row in table:ws.append(row)out_name = os.path.splitext(os.path.basename(file))[0]wb.save(f"Excel/{out_name}.xlsx")
-
.extract_text()
用于查找關鍵詞所在頁; -
.extract_tables()
提取該頁表格內容; -
使用
openpyxl
寫入 Excel,每個表對應一個工作表; -
模仿頁面編號給 sheet 命名。
📌 技術說明與推薦設置
-
pdfplumber.extract_tables()
默認以頁面中水平與垂直線條為依據提取單元格邊界,也可使用table_settings
參數調整策略
arXiv+10Python 包索引+10Stack Overflow+10 -
該方法適合掃描式 PDF 或數字 PDF,但若布局復雜可設定
vertical_strategy="text"
等方式
Stack Overflow+1Python 包索引+1 -
pdfplumber
基于pdfminer.six
,適用于結構化文檔提取,對 OCR 文檔支持有限
arXiv+2GitHub+2Python 包索引+2
🖼? 結果展示區
? 優化與擴展建議
功能 | 建議 |
---|---|
📦 批量處理 | 可接入 os.walk() 遞歸處理子目錄; |
?? 精準提取 | 使用 page.crop(...) 或 table_settings 定位表格區域(示例見pdfplumber文檔) arXiv+10Medium+10Python 包索引+10; |
🧩 排錯機制 | 若某頁未提取表格,可記錄日志或存儲空表; |
🗄 合并數據 | 可將多個表格結果匯總到一個 Excel 并生成摘要頁; |
🚀 更換工具 | 對于更復雜財務表格,可考慮 Camelot 或 Tabula 提供更多控制和效果優化; |
?更多實用案例,代碼,素材如下:
自取鏈接:https://pan.quark.cn/s/a46f30accea2
🧠 總結
本文提供了一種 關鍵詞驅動 + 表格提取 + Excel 輸出 的自動化腳本流程,適合常見金融、財務、審計類 PDF 報表的快速結構化處理。