属性错误:“文档”对象没有属性“lazy_load”

问题描述 投票:0回答:2
def load_docs(folder_path):

data_list = []
for file_path in glob.glob(os.path.join(folder_path, "*.pdf")):
    loader = PyPDFLoader(file_path)
    docs = loader.load()
    
    loader_all = MergedDataLoader(docs) #
    docs_all = loader_all.load() #
    print(len(docs_all)) # here I'm expecting len of all pdf pages for ex. (pdf-1 has 1 pg, pdf-2 has 2 pg then total len should be 3)
    # data = docs[0].page_content
    # data_list.append((file_path, data))


return data_list

上面的代码用于加载每个 PDF,然后将其内容存储在 data_list 中,但我想将所有 PDF 文件加载到单个文档中,以便我可以将其传递到进一步处理。我尝试使用 MergedDataLoader 但出现上述错误。 有什么建议或解决方案吗?

提前致谢。

python pdf langchain pypdf
2个回答
0
投票

MergedDataLoader 应该接收加载器列表,而不是文档列表。您应该向其提供 pdf 文件的所有加载器的列表(即,在将其提供给 MergedDataLoader 之前不要运行 .load(),并将 MergedDataLoader 放在 for 循环之外)。


0
投票
def load_docs(folder_path):
all_docs = []  # Initialize an empty list to hold all pages of all PDFs

for file_path in glob.glob(os.path.join(folder_path, "*.pdf")):
    loader = PyPDFLoader(file_path)
    docs = loader.load()  # Load the PDF pages
    
    all_docs.extend(docs)  # Add all pages of this PDF to the list

print(len(all_docs))  # Total number of pages across all PDFs

return all_docs  # Return the combined list of all pages

要将所有 PDF 文件的页面合并到单个文档对象中以进行进一步处理,您不需要单独的 MergedDataLoader。相反,您可以手动将每个 PDF 中加载的页面聚合到单个列表中。

© www.soinside.com 2019 - 2024. All rights reserved.