Python中Google Cloud Vision API批量标注结果读取方法咨询
遍历Google Cloud Vision批量标注响应的正确方式
我之前刚处理过类似的批量请求场景,其实这个BatchAnnotateImagesResponse的结果读取逻辑非常直接——它自带一个responses属性,本质就是与你提交的请求列表一一对应的结果数组,每个元素对应单张图片的标注结果。
核心步骤与代码示例
你可以直接通过batch_response.responses来遍历所有结果,每个元素是AnnotateImageResponse类型,包含了对应图片的所有检测数据(比如标签检测的label_annotations)。这里给你一个完整的示例:
from google.cloud import vision_v1 # 初始化客户端 client = vision_v1.ImageAnnotatorClient() # 构造批量请求(假设你有一个图片路径列表image_paths) requests = [] for img_path in image_paths: # 读取图片内容 with open(img_path, "rb") as img_file: img_content = img_file.read() # 创建Image对象 image = vision_v1.Image(content=img_content) # 指定要执行的检测类型(标签检测) feature = vision_v1.Feature(type_=vision_v1.Feature.Type.LABEL_DETECTION) # 组装单条请求 single_request = vision_v1.AnnotateImageRequest(image=image, features=[feature]) requests.append(single_request) # 发送批量请求并获取响应 batch_response = client.batch_annotate_images(requests=requests) # 遍历所有结果 for req_index, img_response in enumerate(batch_response.responses): # 先检查当前请求是否有错误 if img_response.error.message: print(f"第 {req_index+1} 张图片请求失败: {img_response.error.message}") continue # 读取标签检测结果 label_results = img_response.label_annotations print(f"\n第 {req_index+1} 张图片的标签检测结果:") for label in label_results: print(f"- 标签: {label.description} | 置信度: {label.score:.2f}")
关键细节说明
- 结果顺序对应:
batch_response.responses的顺序和你提交的requests列表完全一致,所以可以用enumerate来对应到具体的图片请求。 - 错误处理:一定要先检查
img_response.error字段,避免遇到错误请求时后续代码崩溃。 - 探索响应结构:如果不确定某个响应有哪些属性,直接用
dir()函数查看,比如print(dir(img_response))就能列出所有可用的属性和方法,快速找到你需要的字段。
内容的提问来源于stack exchange,提问作者Lukasz Tracewski
相关产品推荐
相关产品推荐

