小编速览
生活中我们都会遇到处理各种PDF格式文件的问题,如查找、合并、分割、压缩等等,如果还是像以前一样用Adobe Acrobat或Pdfgear手工操作,不仅费时耗力,还让我们身心俱疲。人工智能时代,我们可以充分利用AI+Python来批量操作PDF文件,彻底“解放双手”,告别“996”,准点下班。
一、问题背景
也许你是行政、财务或HR部门的一员,定期都要处理大量PDF文件,比如,需要把每个人的个人简历和对应的入职申请表合并成一个PDF,或者把项目报告和费用清单打包在一起。手动操作就是:打开A文件,追加B文件,再保存为C文件…这样重复一百遍。
这样的“职场搬砖”,枯燥且极易出错,有没有更加省力的方法?今天,我们的思路是用『DeepSeek』编写Python代码,让Python替我们完成这份苦力活。
二、思路分析
写代码前,先梳理需求,树立“产品思维”。首先,确定程序目标:查找文件,根据其文件名自动匹配另一个文件,再把者合二为一,生成我指定文件名。
于是,我们有了下面的“作战计划”:
1.定点存放:把个人简历和入职申请这两类PDF分别放进两个文件夹,分别命名为:【简历】和【申请表】。
2.智能匹配:程序的核心是“按名索骥”。比如,申请表文件叫张三.pdf,那就在简历文件夹里找文件名里查找包含“张三”的那个文件,或以两个PDF都有的报名号为标记来查找,毕竟在实际工作中还可能有重名的人。
3.批量作业:找到一对文件后,按规定的顺序(先简历后申请表),将它们合并成一个新PDF,存放到一个【合并结果】文件夹当中,如果这个文件夹不存在还要建立起来。
4.完美交付:把合并好的文件统一输出到合并结果,整整齐齐,方便查阅。
整个程序编写逻辑就是一个“遍历文件+智能匹配+批量处理”的流水线,全程无需人工干预,效率直接拉满。
三、解决办法与代码编写
工欲善其事,必先利其器。我们需要请出『DeepSeek』,利用os和glob这两个模块来编写强大的程序大代码。在这个过程中我们用到了os, glob用于处理路径和遍历文件,fitz(PyMuPDF)处理PDF。我编写的提示词如下:
当前目录下,有简历和申请表两个文件夹,先遍历每一个申请表pdf文件,然后获取其不带扩展名的文字(即申请ID),去简历目录下找到包含【申请ID】的PDF文件,然后把两个文件按照简历pdf文件在前,申请表PDF文件在后的形式合并在一起,不增加、删除或改原有pdf内容,名称命名为:XX公司_{简历名}.pdf,请给出python代码
下面是完整的代码解决方案,大家可以直接“抄作业”,但一定要理解每一行在做什么。
import osimport globimport fitz # PyMuPDF
def merge_pdfs(): # 定义文件夹路径 list_dir = './申请表' record_dir = './简历' output_dir = './合并结果' # 输出目录
# 创建输出目录(如果不存在) if not os.path.exists(output_dir): os.makedirs(output_dir)
# 获取所有清单PDF文件 list_pdfs = glob.glob(os.path.join(list_dir, '*.pdf'))
for list_pdf_path in list_pdfs: # 获取不带扩展名的文件名 list_filename = os.path.splitext(os.path.basename(list_pdf_path))[0]
# 在简历目录中查找对应的PDF文件 record_pdf_path = os.path.join(record_dir, f"{list_filename}.pdf")
if os.path.exists(record_pdf_path): try: # 创建新的PDF文档 output_doc = fitz.open()
# 打开申请表PDF并添加其所有页面 list_doc = fitz.open(list_pdf_path) output_doc.insert_pdf(list_doc) list_doc.close()
# 打开简历PDF并添加其所有页面 record_doc = fitz.open(record_pdf_path) output_doc.insert_pdf(record_doc) record_doc.close()
# 生成输出文件名 output_filename = f"{list_filename}_20250612.pdf" output_path = os.path.join(output_dir, output_filename)
# 保存合并后的PDF output_doc.save(output_path) output_doc.close()
print(f"已成功合并: {output_filename}") except Exception as e: print(f"处理文件 {list_filename} 时出错: {str(e)}") else: print(f"未找到对应的申请表文件: {list_filename}.pdf")
if __name__ == "__main__": merge_pdfs()
四、功能演示
实践阶段,可以把你需要合并的两类PDF分别放入【简历】和【申请表】文件夹,把代码py文件放到同级目录,一键运行,程序会自动开始匹配和合并,并在控制台打印实时日志。
完成后,所有合并好的文件都会整齐地躺在【合并结果】文件夹里。这样原本需要手动操作一二小时的工作,现在几十秒就搞定。效率直接拉满。
五、注意事项
代码写好了,但要想真正跑起来,这几个“坑”一定要注意:
1.命名规范:这个脚本的核心是字符串匹配。如果两边文件名风格差异巨大(比如一个用中文名,一个用工号),那就匹配不上。和你的同事约定好统一、清晰的命名规则,是成功运行代码的第一步。
2. 环境配置:运行前,务必用 pip install pymupdf 命令安装好 PyMuPDF 库。别让“库没安装”这种小问题挡住了你准点下班的路。
3. 异常处理:代码里的 try...except可以捕获一些意外错误(如PDF加密、损坏),让程序不会轻易崩溃,保证大部分文件能正常处理。
这个脚本是一个通用模板,你可以对其灵活调整,增加新的功能。你可以根据实际需求修改匹配规则、合并顺序或输出文件的命名方式,让它更适合你的具体业务。
特别说明:本文仅用于学术交流,如有侵权请后台联系小编删除。转载来源:攀登英语