Google Cloud Vision OCR 错误代码 7 - 权限被拒绝

Posted

技术标签:

【中文标题】Google Cloud Vision OCR 错误代码 7 - 权限被拒绝【英文标题】:Google Cloud Vision OCR Error Code 7 - Permission Denied 【发布时间】:2020-06-26 18:59:49 【问题描述】:

我正在构建一个利用 Google Cloud Vision 的 OCR 的网络应用。 OCR 可以正常处理大约 7-8 个请求,之后出现如下错误:

Error: 7 PERMISSION_DENIED: Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the vision.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/.

问题是,我已经设置了结算帐号和服务帐号。

我尝试使用多个 GCloud 命令来解决此问题,当我运行 gcloud auth list 时,我可以看到我的服务帐户是活动帐户。我还尝试在我的环境变量中生成一个 JSON 密钥并设置该密钥的路径 - 如下所示:https://cloud.google.com/docs/authentication/getting-started

以前有人遇到过这个问题吗?作为参考,我正在运行 Windows 10 并为 webapp 使用 Node.js。谢谢!

【问题讨论】:

【参考方案1】:

您正在使用来自 Google Cloud SDK 或 Google Cloud Shell 的最终用户凭据而不是服务帐户凭据进行身份验证。

1.新建目录

mkdir ocr
cd ocr

2.下载图片。

curl https://www.python.org/static/apple-touch-icon-144x144-precomposed.png > image.png

3.安装客户端库。

sudo pi3 install --upgrade google-cloud-vision

4.创建服务帐号。

gcloud iam service-accounts create ocr-vision \
      --description "ocr-vision" \
      --display-name "ocr-vision"

gcloud iam service-accounts list

5.创建key.json文件。

gcloud iam service-accounts keys create key.json \
      --iam-account ocr-vision@your-project.iam.gserviceaccount.com 

6.将所有者角色分配给服务帐号。

gcloud projects add-iam-policy-binding your-project \
      --member serviceAccount:ocr-vision@your-project.iam.gserviceaccount.com \
      --role roles/owner

7.导出环境变量

export GOOGLE_APPLICATION_CREDENTIALS=key.json

8.运行脚本

 python script.py
import io
import os
# Imports the Google Cloud client library
from google.cloud import vision
from google.cloud.vision import types
# Instantiates a client
client = vision.ImageAnnotatorClient()

# The name of the image file to annotate
file_name = os.path.abspath('image.png')

# Loads the image into memory
with io.open(file_name, 'rb') as image_file:
    content = image_file.read()

image = types.Image(content=content)

# Performs label detection on the image file
response = client.label_detection(image=image)
labels = response.label_annotations

print('Labels:')
for label in labels:
    print(label.description)

9.输出

Labels:
Yellow
Font
Line
Material property
Clip art
Logo
Symbol
Icon
Graphics
Illustration

【讨论】:

感谢您的帮助!我刚刚使用了您提供的 gcloud 命令,它解决了我的问题。

以上是关于Google Cloud Vision OCR 错误代码 7 - 权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Google Cloud Vision OCR 错误代码 7 - 权限被拒绝

使用 Google Cloud Vision 的 OCR PDF 文件?

KeyError:使用 Google Cloud Vision API 进行 OCR 时出现“textAnnotations”

Google Cloud Vision OCR 遗漏了单个数字和符号

将 Google Cloud Vision OCR X 和 Y 坐标转换为 bbox 坐标

google vision - 在 c# 中从 google.cloud.vision.v1.entity 注释转换为 json