使用Azure认知服务读取GIF图像文本时返回Bad Request错误如何解决
报错原因
Azure认知服务的计算机视觉Read API原生不支持GIF格式的图像输入,官方指定支持的输入格式仅包含JPEG、PNG、BMP、PDF、TIFF五类。你直接传入GIF格式的图像链接调用接口时,接口会校验到格式不符合要求,直接返回*Operation returned an invalid status code 'Bad Request'*错误。
解决方案
你可以通过对GIF图像做格式转码后再调用API实现文本提取,具体操作步骤如下:
- 第一步:获取GIF图像资源,提取需要识别文本的帧(动态GIF可提取全部分帧逐一识别,也可直接提取第一帧做静态识别)
- 第二步:将提取出的帧转换为JPEG/PNG等API支持的格式,转码时注意满足API的图像限制要求:单张图像大小不超过20MB,像素尺寸在5050到1000010000区间内
- 第三步:将转码后的图像(本地文件或可公网访问的静态URL)传入Read API调用,即可正常提取文本
参考修改后的代码示例:
from PIL import Image import requests from io import BytesIO print("===== Read File - remote ======") # 原GIF链接 read_image_url = "https://ci6.googleusercontent.com/proxy/5NB2CkeM22wqFhiQSmRlJVVinEp3o2nEbZQcy6_8CCKlKst_WW25N0PcsPaYiWAASXO52hufvUAEimUd3IreGowknEXy322x5oYG3lzkBGyctLI0M3eH_w-qHH9qPqtobjpGYooM7AvyNX2CCZtcnEgu8duKlee2GGaswg=s0-d-e1-ft#https://image.e.us.partycity.com/lib/fe301570756406747c1c72/m/10/93d08fa0-c760-4d8b-8e35-ddd5308ec311.gif" # 下载GIF并转码为PNG格式 gif_resp = requests.get(read_image_url) gif = Image.open(BytesIO(gif_resp.content)) first_frame = gif.convert("RGB") png_buffer = BytesIO() first_frame.save(png_buffer, format="PNG") png_buffer.seek(0) # 调用API传入转码后的文件流 read_response = computervision_client.read_in_stream(png_buffer, raw=True)
内容的提问来源于stack exchange,提问作者Ayaz Khan
相关产品推荐
相关产品推荐

