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

