You need to enable JavaScript to run this app. 如何使用PyPDF2读取目录下多个PDF文件并按列存入XLS文件
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PyPDF2读取目录下多个PDF文件并按列存入XLS文件

多PDF目录批量提取内容写入Excel实现

完整可运行代码

import os
import PyPDF2
import xlsxwriter

# 配置参数:修改为你自己的PDF存放目录和输出Excel路径
PDF_DIR = "./pdf_files"
OUTPUT_XLS = "./pdf_content.xlsx"

# 初始化Excel工作簿和工作表
workbook = xlsxwriter.Workbook(OUTPUT_XLS)
worksheet = workbook.add_worksheet("PDF内容")
# 写入表头,可根据实际需求调整
worksheet.write(0, 0, "PDF文件名")
worksheet.write(0, 1, "提取内容")
# 行号计数器,从第二行开始写数据
row_idx = 1

# 遍历目录下所有PDF文件
for root, dirs, files in os.walk(PDF_DIR):
    for file in files:
        # 筛选后缀为pdf的文件,忽略大小写
        if file.lower().endswith(".pdf"):
            pdf_path = os.path.join(root, file)
            try:
                # 读取PDF内容
                with open(pdf_path, 'rb') as f:
                    read_pdf = PyPDF2.PdfFileReader(f)
                    # 这里默认取第一页内容,要提取所有页可以循环遍历页码
                    if read_pdf.getNumPages() > 0:
                        page = read_pdf.getPage(0)
                        page_content = page.extractText()
                        # 内容格式化,可根据你的结构化需求调整规则
                        text = page_content.replace("\n", " ").replace("\t", " ").replace("  ", "")
                        # 写入Excel,第一列存文件名,第二列存提取的内容
                        worksheet.write(row_idx, 0, file)
                        worksheet.write(row_idx, 1, text)
                        row_idx += 1
            except Exception as e:
                # 读取失败的文件标记错误信息
                worksheet.write(row_idx, 0, file)
                worksheet.write(row_idx, 1, f"读取失败:{str(e)}")
                row_idx += 1

# 保存关闭Excel
workbook.close()

代码修改说明

  • 新增os模块调用,通过os.walk递归遍历指定目录下的所有文件,筛选后缀为.pdf的文件生成待处理列表,支持嵌套子目录内的PDF识别
  • 补全了xlsxwriter的Workbook、Worksheet初始化逻辑,提前设置表头方便内容查看,新增行号计数器自动累加写入位置,不会出现内容覆盖
  • 新增异常捕获逻辑,避免个别损坏的PDF文件导致整个程序中断,读取失败的文件会在Excel中标记错误原因
  • 保留了你原有的内容格式化规则,若需要结构化提取指定字段,可在text = page_content...之后新增正则匹配、关键词截取等逻辑

内容的提问来源于stack exchange,提问作者Carlos Paes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 13:36:03