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

使用Langchain加载多PDF遇UnboundLocalError问题求助

问题

尝试使用langchain包中的VectorstoreIndexCreator().from_loaders(loaders)方法,其中loaders是多个UnstructuredPDFLoader实例组成的列表,用于加载不同PDF文件时,遇到了与局部变量isalnum相关的UnboundLocalError。

错误回溯相关片段:

File …/site-packages/unstructured/documents/elements.py:1007, in process_metadata….
UnboundLocalError: local variable 'isalnum' referenced before assignment

简化代码示例:

from langchain.document_loaders import UnstructuredPDFLoader
from langchain.indexes import VectorstoreIndexCreator

loaders = [UnstructuredPDFLoader(filepath) for filepath in filepaths]
index = VectorstoreIndexCreator().from_loaders(loaders)

有趣的是,使用WebBaseLoader加载网页文档时,代码运行完全正常:

from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator

loader = WebBaseLoader("https://example.com")
index = VectorstoreIndexCreator().from_loaders([loader])

疑问:有没有人遇到过langchain中UnstructuredPDFLoader的类似问题?如果有,是如何解决的?


解决方法

这个问题是unstructured库内部的代码bug导致的:在process_metadata函数中,isalnum变量仅在元数据键满足特定条件时才会被赋值,否则会出现未定义就被引用的情况。

可以通过以下方式解决:

  • 升级unstructured库:执行命令pip install --upgrade unstructured,官方后续版本大概率修复了这个变量未提前声明的问题。
  • 临时修复源码:找到本地Python环境中unstructured/documents/elements.py文件里的process_metadata函数,在函数开头添加isalnum = False,确保变量始终有定义。
  • 替换PDF加载器:暂时改用langchain支持的其他PDF加载器,比如PyPDFLoader,修改后的代码示例:
    from langchain.document_loaders import PyPDFLoader
    from langchain.indexes import VectorstoreIndexCreator
    
    loaders = [PyPDFLoader(filepath) for filepath in filepaths]
    index = VectorstoreIndexCreator().from_loaders(loaders)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 17:27:22