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
相关产品推荐
相关产品推荐

