如何在Python中用服务账号JSON实现Cloud Vision API访问非公开GCS对象
解决Cloud Vision API访问非公开GCS对象的认证问题
我来帮你一步步搞定这个认证的事儿!你手里的服务账号JSON文件就是关键,咱们直接用它来配置Python脚本的认证就行,具体步骤如下:
1. 配置环境变量(推荐方式)
首先,把你的服务账号JSON文件路径设置成环境变量,这样Google的客户端库会自动读取它:
- 在终端里(Windows用命令提示符,Mac/Linux用终端)执行对应的命令:
# Mac/Linux系统 export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your/service-account-file.json" # Windows命令提示符 set GOOGLE_APPLICATION_CREDENTIALS=C:\path\to\your\service-account-file.json # Windows PowerShell $env:GOOGLE_APPLICATION_CREDENTIALS="C:\path\to\your\service-account-file.json"
2. Python脚本示例
接下来写调用Cloud Vision API的脚本,这里以标签检测为例,访问你的非公开GCS对象:
from google.cloud import vision_v1 def detect_labels(gcs_uri): # 初始化客户端,会自动读取环境变量里的认证信息 client = vision_v1.ImageAnnotatorClient() # 构建请求,指定非公开GCS对象的路径 image = vision_v1.Image(source=vision_v1.ImageSource(gcs_image_uri=gcs_uri)) # 调用Cloud Vision API response = client.label_detection(image=image) labels = response.label_annotations # 处理并打印返回的标签结果 print("识别到的标签:") for label in labels: print(f"- {label.description} (置信度: {label.score:.2f})") # 处理可能的错误 if response.error.message: raise Exception(f"API调用出错:{response.error.message}") # 替换成你的非公开GCS对象路径,格式为gs://bucket-name/object-path detect_labels("gs://your-bucket/your-non-public-image.jpg")
3. 直接在代码里加载JSON文件(可选方案)
如果你不想依赖环境变量,也可以直接在代码里加载服务账号文件:
from google.cloud import vision_v1 from google.oauth2 import service_account def detect_labels(gcs_uri): # 直接加载服务账号凭证文件 credentials = service_account.Credentials.from_service_account_file( "/path/to/your/service-account-file.json" ) # 初始化客户端时传入凭证 client = vision_v1.ImageAnnotatorClient(credentials=credentials) # 后续逻辑和上面的示例一致 image = vision_v1.Image(source=vision_v1.ImageSource(gcs_image_uri=gcs_uri)) response = client.label_detection(image=image) print("识别到的标签:") for label in labels: print(f"- {label.description} (置信度: {label.score:.2f})") if response.error.message: raise Exception(f"API调用出错:{response.error.message}") detect_labels("gs://your-bucket/your-non-public-image.jpg")
重要注意事项
- 确保你的服务账号已经被授予GCS对象的读取权限(比如
storage.objects.get权限),可以在GCS控制台的对象权限设置里添加该账号并分配对应权限。 - 先安装所需的依赖包:
pip install google-cloud-vision
内容的提问来源于stack exchange,提问作者lordcenzin
相关产品推荐
相关产品推荐

