You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyPDF2提取PDF首页后文件损坏,求排查脚本问题

PDF第一页提取脚本的问题修复

你的脚本存在多处关键错误,导致生成的PDF文件损坏无法读取,具体问题和修复方案如下:

核心错误点

  • PdfWriter用法完全错误:你把提取的文本和文件名拼接后传给PdfWriter,这不符合API规范。PdfWriter初始化不需要这类参数,应该创建空实例后再添加页面。
  • 未执行写入操作:创建PdfWriter后,没有调用write()方法将内容写入输出流,导致生成的文件没有有效PDF数据。
  • 输出路径逻辑混乱:直接用输入文件名作为输出路径,没有放到指定的output_directory,且未提前创建输出目录(目录不存在时会直接报错)。
  • 未过滤非PDF文件:遍历目录时没有判断文件类型,遇到非PDF文件会直接抛出异常。

修复后的完整脚本

import os
from PyPDF2 import PdfReader, PdfWriter

input_directory = "Fund_Docs_Sample"
output_directory = "First Pages"

# 确保输出目录存在,不存在则自动创建
os.makedirs(output_directory, exist_ok=True)

# 遍历输入目录下的所有文件
for input_file_name in os.listdir(input_directory):
    # 只处理PDF格式文件
    if not input_file_name.lower().endswith(".pdf"):
        continue
    
    # 用系统兼容的方式拼接路径,避免Windows/Linux路径分隔符问题
    input_path = os.path.join(input_directory, input_file_name)
    # 构造输出文件名(添加前缀避免覆盖原文件)
    output_file_name = f"FirstPage_{input_file_name}"
    output_path = os.path.join(output_directory, output_file_name)
    
    try:
        reader = PdfReader(input_path)
        # 检查PDF是否至少包含一页
        if len(reader.pages) < 1:
            print(f"{input_file_name} 无有效页面可提取")
            continue
        
        # 正确初始化PdfWriter并添加第一页
        writer = PdfWriter()
        writer.add_page(reader.pages[0])
        
        # 将内容写入输出文件
        with open(output_path, "wb") as output_stream:
            writer.write(output_stream)
        print(f"已完成:{input_file_name} → {output_path}")
    except Exception as e:
        print(f"处理 {input_file_name} 失败:{str(e)}")

修复说明

  1. 新增os.makedirs确保输出目录存在,避免路径错误
  2. 过滤非PDF文件,防止无效文件触发异常
  3. 使用os.path.join拼接路径,适配不同操作系统
  4. 正确调用PdfWriter的add_page和write方法生成有效PDF
  5. 添加异常捕获,方便排查单个文件的处理问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:45:38