1. 项目概述
最近在财务部门帮朋友处理了一批电子发票,发现手动录入Excel实在太费时间。作为一个Python开发者,我决定写个自动化工具来解放双手。这个Python脚本能够批量读取PDF格式的发票,提取关键信息后自动整理到Excel表格中。
核心功能很简单:指定一个放PDF发票的文件夹,程序会自动识别所有PDF文件,提取发票号码、金额、日期等关键信息,最后生成结构化的Excel表格。整个过程不到10行命令就能搞定,比手动操作效率提升至少20倍。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与工具准备
2.1 为什么选择pdfplumber
在Python中处理PDF的库不少,我对比了几个主流选择:
- PyPDF2:基础功能完善但文本提取准确率一般
- pdfminer:功能强大但API复杂
- pdfplumber:基于pdfminer但接口更友好,文本定位精准
实测发现pdfplumber对中文PDF的解析效果最好,特别是处理带表格的发票时,能准确获取文本位置信息。安装也很简单:
bash复制pip install pdfplumber openpyxl
注意:如果遇到权限问题,可以加上--user参数或在虚拟环境中安装
2.2 辅助工具选择
- openpyxl:比pandas更轻量,适合简单的Excel写入需求
- re模块:Python内置正则表达式库,用于字段提取
- os模块:文件路径处理
3. 核心代码解析
3.1 类结构设计
采用面向对象方式封装主要功能:
python复制class PDFInvoiceParser:
def __init__(self):
self.data = [] # 存储所有发票数据
self.fields = ['文件名', '发票号码', '开票日期', '供应商', '金额'] # 输出字段
def process_folder(self, folder_path):
"""处理整个文件夹的PDF文件"""
for filename in os.listdir(folder_path):
if filename.endswith('.pd
