使用PyPDFDirectoryLoader加载PDF遇PdfReadError,求跳过或解析方案
跳过损坏PDF文件继续加载的解决方案
PyPDFDirectoryLoader在遇到损坏或无法解析的PDF时会直接抛出异常并终止整个加载流程,没有内置的跳过机制。要实现跳过异常文件、完成剩余PDF的解析,你可以手动遍历目标文件夹中的PDF文件,逐个使用PyPDFLoader加载并捕获异常:
实现代码
from langchain.document_loaders import PyPDFLoader from pypdf.errors import PdfReadError import os pdf_folder_path = "你的PDF文件夹路径" loaded_documents = [] # 遍历文件夹内所有PDF文件 for file_name in os.listdir(pdf_folder_path): if file_name.lower().endswith(".pdf"): full_path = os.path.join(pdf_folder_path, file_name) try: loader = PyPDFLoader(full_path) docs = loader.load() loaded_documents.extend(docs) print(f"已加载: {file_name}") except PdfReadError: print(f"跳过损坏文件: {file_name}") except Exception as e: # 捕获其他可能的异常,比如权限问题等 print(f"处理文件 {file_name} 时出错: {str(e)},已跳过") # loaded_documents 包含所有成功加载的文档内容
关键说明
- 直接遍历文件能精准控制每个PDF的加载流程,单个文件的解析错误不会影响其他文件
- 优先捕获
PdfReadError可以针对性处理PDF解析相关的错误,再用Exception兜底其他意外情况 - 这种方式完全替代
PyPDFDirectoryLoader的功能,同时增加了错误容错能力
内容的提问来源于stack exchange,提问作者aksg87
相关产品推荐
相关产品推荐

