使用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
相关产品推荐
相关产品推荐

