在Google Colab中使用huggingface load_dataset加载数据集报错
解决Colab加载
nielsr/funsd-layoutlmv3数据集的UnidentifiedImageError问题 问题根源是Colab环境中下载的数据集缓存内图片文件损坏或不完整,而本地VS Code环境的数据集文件完整。以下是几种可行的解决方法:
方法1:强制重新下载数据集
加载数据集时添加force_redownload=True参数,跳过本地缓存,重新拉取完整的数据集文件:
dataset_id = "nielsr/funsd-layoutlmv3" from datasets import load_dataset # 强制重新下载,避免使用损坏的缓存 dataset = load_dataset(dataset_id, force_redownload=True) print(f"Train dataset size: {len(dataset['train'])}") print(f"Test dataset size: {len(dataset['test'])}")
方法2:手动清除损坏的缓存目录
直接删除对应数据集的缓存文件夹,再重新加载:
# 删除该数据集的缓存目录 !rm -rf /root/.cache/huggingface/datasets/nielsr___funsd-layoutlmv3
执行后重新运行原加载代码即可。
方法3:更新Pillow库
Colab默认的Pillow版本可能存在兼容性问题,更新到最新版本可修复部分图片识别错误:
!pip install --upgrade pillow
更新完成后重启Colab运行时,再重新加载数据集。
方法4:验证单个图片文件(排查用)
如果以上方法无效,可以手动检查报错的图片文件是否完整:
from PIL import Image import os img_path = "/root/.cache/huggingface/datasets/downloads/extracted/e5bbbc543f8cc95554da124f3e80a57ed24d67d06ae1467da5810703f851e3f9/dataset/training_data/images/0000971160.png" # 检查文件大小 print(f"File size: {os.path.getsize(img_path)} bytes") # 尝试打开图片 try: img = Image.open(img_path) print("Image opened successfully") except Exception as e: print(f"Error opening image: {e}")
如果文件大小异常(远小于正常PNG文件),说明下载不完整,回到方法1或2重新下载即可。
内容的提问来源于stack exchange,提问作者Luiz Felipe Bromfman
相关产品推荐
相关产品推荐

