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 但出现上述错误。 有什么建议或解决方案吗?
提前致谢。
MergedDataLoader 应该接收加载器列表,而不是文档列表。您应该向其提供 pdf 文件的所有加载器的列表(即,在将其提供给 MergedDataLoader 之前不要运行 .load(),并将 MergedDataLoader 放在 for 循环之外)。
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 中加载的页面聚合到单个列表中。