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

能否使用Python提取文件夹中损坏PDF文件的元数据?

提取PDF元数据(含损坏文件)并生成DataFrame的Python实现

完全可以实现,核心思路是捕获PDF读取时的异常,把损坏文件的信息(比如文件名、错误类型)一并记录,而非直接跳过。下面是具体实现方案:

依赖库准备

先安装所需的第三方库:

pip install pandas PyPDF2

完整代码示例

import os
import pandas as pd
from PyPDF2 import PdfReader, errors

def extract_pdf_metadata(pdf_path):
    """提取单个PDF的元数据,捕获损坏文件的异常"""
    metadata = {
        "文件名": os.path.basename(pdf_path),
        "文件路径": pdf_path,
        "标题": None,
        "作者": None,
        "创建时间": None,
        "修改时间": None,
        "文件状态": "正常"
    }
    try:
        reader = PdfReader(pdf_path)
        info = reader.metadata
        # 提取常见元数据字段,兼容不同PDF的字段命名格式
        metadata["标题"] = info.get("/Title") or info.get("Title")
        metadata["作者"] = info.get("/Author") or info.get("Author")
        metadata["创建时间"] = info.get("/CreationDate") or info.get("CreationDate")
        metadata["修改时间"] = info.get("/ModDate") or info.get("ModDate")
    except errors.PdfReadError:
        metadata["文件状态"] = "损坏(无法读取PDF结构)"
    except Exception as e:
        metadata["文件状态"] = f"异常:{str(e)}"
    return metadata

def process_pdf_folder(folder_path):
    """遍历文件夹下所有PDF,收集元数据并生成DataFrame"""
    metadata_list = []
    # 遍历文件夹内所有文件
    for root, _, files in os.walk(folder_path):
        for file in files:
            if file.lower().endswith(".pdf"):
                pdf_path = os.path.join(root, file)
                metadata = extract_pdf_metadata(pdf_path)
                metadata_list.append(metadata)
    # 转换为DataFrame
    df = pd.DataFrame(metadata_list)
    return df

# 示例使用
if __name__ == "__main__":
    target_folder = "你的PDF文件夹路径"  # 替换为实际路径
    result_df = process_pdf_folder(target_folder)
    # 保存结果到CSV(可选)
    result_df.to_csv("pdf_metadata.csv", index=False, encoding="utf-8-sig")
    # 打印前5行查看
    print(result_df.head())

关键说明

  • 异常处理:专门捕获PdfReadError(PyPDF2识别的PDF损坏错误),同时用通用Exception兜底其他意外情况,确保所有文件都被处理。
  • 元数据兼容:PDF的元数据字段可能有不同的命名格式(比如带/前缀或不带),代码中做了兼容处理;如果需要其他字段,可以查看info对象的所有属性自行添加。
  • 结果区分:通过文件状态字段明确标记正常、损坏或异常的文件,方便后续筛选处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:09:57