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

Google Colab中PDF转图片OCR提取文本时TypeError报错解决

解决LangChain UnstructuredImageLoader的TypeError问题

错误原因

UnstructuredImageLoader要求传入图片文件的路径字符串/PathLike对象,但你直接传了PIL加载后的JpegImageFile对象,导致路径校验时触发stat参数类型错误。

修复方案

方案1:先保存图片到本地,再用路径加载

把PDF转出来的图片先存成本地文件,再把文件路径传给加载器:

from pdf2image import convert_from_path
from langchain.document_loaders import UnstructuredImageLoader
import os

# PDF转图片并保存
pdf_path = "你的PDF文件路径.pdf"
images = convert_from_path(pdf_path)
save_dir = "pdf_extracted_images"
os.makedirs(save_dir, exist_ok=True)

image_paths = []
for idx, img in enumerate(images):
    img_path = os.path.join(save_dir, f"page_{idx+1}.jpg")
    img.save(img_path, "JPEG")
    image_paths.append(img_path)

# 加载图片提取文本
for path in image_paths:
    loader = UnstructuredImageLoader(path)
    data = loader.load()
    print(data[0].page_content)

方案2:内存中处理图片(无需存本地)

如果不想生成本地文件,用BytesIO把PIL图片转成字节流,再用PillowLoader加载:

from pdf2image import convert_from_path
from langchain.document_loaders import PillowLoader
from io import BytesIO

pdf_path = "你的PDF文件路径.pdf"
images = convert_from_path(pdf_path)

for img in images:
    # 把PIL图片转成字节流
    img_bytes = BytesIO()
    img.save(img_bytes, format='JPEG')
    img_bytes.seek(0)
    
    # 加载内存中的图片
    loader = PillowLoader(img_bytes)
    data = loader.load()
    print(data[0].page_content)

核心提醒

  • 别直接把PIL图片对象丢给需要文件路径的加载器,必须转成路径或字节流
  • UnstructuredImageLoader只认文件路径,要处理内存图片就用PillowLoader

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:52:38