[特殊字符] 扫描式处理:Python 自动提取 PDF 中关键词相关表格并导出为 Excel
本文演示如何利用 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 报表的快速结构化处理。