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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:34:47