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

使用MergedDataLoader合并PDF文档遇AttributeError问题求助

解决AttributeError: 'Document' object has no attribute 'lazy_load'问题

错误原因

你误用了MergedDataLoader的参数类型。这个类的设计目的是合并多个数据加载器(Loader实例),而非接收已经加载完成的Document对象列表。你现在把单个PDF加载后得到的docs(Document对象的列表)传给它,自然会触发属性不存在的错误。

解决方案

方案1:正确使用MergedDataLoader

先收集所有PDF对应的PyPDFLoader实例,再传给MergedDataLoader统一加载:

def load_docs(folder_path):
    # 收集所有PDF的加载器实例
    loaders = []
    for file_path in glob.glob(os.path.join(folder_path, "*.pdf")):
        loaders.append(PyPDFLoader(file_path))
    
    # 合并加载器并加载所有文档
    merged_loader = MergedDataLoader(loaders)
    docs_all = merged_loader.load()
    
    print(len(docs_all))  # 输出所有PDF的总页数
    return docs_all

方案2:手动收集所有Document对象(更直观)

如果不需要复用加载器逻辑,直接遍历每个PDF并将页面对象追加到总列表即可:

def load_docs(folder_path):
    docs_all = []
    for file_path in glob.glob(os.path.join(folder_path, "*.pdf")):
        loader = PyPDFLoader(file_path)
        docs = loader.load()
        docs_all.extend(docs)  # 将当前PDF的所有页面加入总列表
    
    print(len(docs_all))  # 输出总页数
    return docs_all

方案说明

  • 方案1适合后续需要复用加载器的场景,MergedDataLoader会统一处理加载逻辑
  • 方案2代码更简洁直接,适合仅需合并最终Document列表的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 23:50:58