
有一堆pdf发票文件,如何按照excel表中文件名进行模糊搜索筛选,并按照excel顺序排序重命名
你这个需求,本质上是:
用 Excel 里的“目标名称”→ 去一堆 PDF 发票中做“模糊匹配”→ 找到对应 PDF→ 按 Excel 顺序重新命名。
这个非常适合用 Python 自动化。
一、举个实际例子(你要实现的效果)
1. 你的 PDF 文件夹里:
广东XX科技有限公司_发票_38921.pdf深圳XX贸易有限公司_电子发票.pdf广州XX有限公司2025.pdf2. Excel 里:
3. 最终自动变成:
001_广东XX科技.pdf002_广州XX.pdf003_深圳XX贸易.pdf并且:
自动模糊匹配
自动排序
自动重命名
不需要一个个手动找
二、最推荐方案(简单稳定)
用:
Python
pandas(读Excel)
pathlib(操作文件)
rapidfuzz(模糊匹配,速度非常快)
三、先安装库
打开 CMD输入:
pip install pandas openpyxl rapidfuzz四、Excel格式(非常重要)
假设:
文件名:
名单.xlsx内容:
注意:
第一行必须是标题
列名必须叫:
公司名五、完整代码(推荐版)
下面这个是:
✅ 模糊匹配✅ 自动排序✅ 自动重命名✅ 防止重名✅ 自动输出结果✅ 适合初学者
from pathlib import Pathimport pandas as pdfrom rapidfuzz import fuzz# ========= 配置区域 =========# PDF文件夹pdf_folder = Path(r"发票PDF")# Excel路径excel_path = r"公司名.xlsx"# 匹配相似度(越低越宽松)MATCH_SCORE = 60# ===========================# 读取Exceldf = pd.read_excel(excel_path)# 获取公司名列表company_list = df["公司名"].tolist()# 获取所有PDFpdf_files = list(pdf_folder.glob("*.pdf"))# 记录已经匹配过的文件used_files = set()# 开始匹配for index, company in enumerate(company_list, start=1):best_score = 0best_file = None# 遍历所有PDFfor pdf_file in pdf_files:# 已经被使用过if pdf_file in used_files:continue# 文件名filename = pdf_file.stem# 模糊匹配score = fuzz.partial_ratio(company, filename)# 找最高分if score > best_score:best_score = scorebest_file = pdf_file# 达到阈值才重命名if best_score >= MATCH_SCORE and best_file:# 新文件名new_name = f"{index:03d}_{company}.pdf"# 新路径new_path = pdf_folder / new_name# 重命名best_file.rename(new_path)# 标记已使用used_files.add(new_path)print(f"√ 已匹配: {best_file.name} → {new_name}")else:print(f"× 未找到匹配: {company}")print("处理完成")
六、代码核心原理(你以后会经常用)
1. 读取Excel
pd.read_excel()把 Excel 变成表格数据。
2. 遍历PDF
glob("*.pdf")获取文件夹所有 PDF。
3. 模糊匹配
fuzz.partial_ratio()例如:
广东XX科技广东XX科技有限公司电子发票也能匹配。
这是核心。
4. 自动排序编号
f"{index:03d}"效果:
001002003避免:
1102这种乱序。
七、这个方案的优点
优点
1. 不要求文件名完全一致
这是最关键的。
发票文件名通常:
XX有限公司电子普通发票(3)最终版.pdf很乱。
模糊匹配非常适合。
2. 自动排序
Excel顺序就是最终顺序。
3. 速度快
几千个PDF也能跑。
4. 稳定
比 VBA 更适合这种文件处理。
八、进一步升级(你后面可以继续做)
你以后还能继续升级:
1. 自动识别发票内容(OCR)
不是匹配文件名。
而是:
读取PDF内容
识别公司名
自动匹配
适合:
扫描版发票你之前学的 OCR 就能接上。
2. 自动移动分类
例如:
增值税专票/普通发票/作废发票/自动分类。
3. 自动生成Excel结果
例如:
方便人工复核。
九、实际工作里建议你这样做
推荐目录结构:
项目文件夹/│├── 发票PDF/│├── 名单.xlsx│└── rename.py这样最清晰。
夜雨聆风