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

Base64图片转PIL Image报错PIL.UnidentifiedImageError求助

解决Base64转图片后PIL无法识别的问题

问题原因

你的Base64字符串带有数据URI前缀(data:image/jpeg;base64,),直接调用base64.b64decode()会把前缀也当作Base64内容解码,导致生成的字节流不是有效的JPEG文件,因此PIL抛出UnidentifiedImageError。

解决方案

先剥离数据URI前缀,只保留纯Base64编码部分再解码:

修改后的完整代码

import base64
import io
from PIL import Image
import pytesseract

# 带前缀的Base64字符串
base64_string = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFh....."

# 剥离前缀,获取纯Base64编码部分
if "," in base64_string:
    base64_data = base64_string.split(",")[1]
else:
    base64_data = base64_string

# 解码为图片字节流
img_data = base64.b64decode(base64_data)

# 读取图片并识别文字
img = Image.open(io.BytesIO(img_data))
text = pytesseract.image_to_string(img, config='--psm 6')

print(text)

验证步骤(可选)

如果担心解码后的数据仍有问题,可以先将字节流写入本地文件,确认图片能正常打开:

with open("test.jpg", "wb") as f:
    f.write(img_data)

打开test.jpg确认是有效图片后,再继续用pytesseract识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:56:19