Код ошибки распознавания Google Cloud Vision 7 - В доступе отказано - PullRequest
1 голос
/ 15 марта 2020

Я создаю веб-приложение, которое использует OCR Google Cloud Vision. 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 и использую Node.js для веб-приложения. Спасибо!

1 Ответ

1 голос
/ 15 марта 2020

Вы проходите аутентификацию, используя учетные данные конечного пользователя из Google Cloud SDK или Google Cloud Shell, а не учетные данные учетной записи службы.

1. Создайте новый каталог

mkdir ocr
cd ocr

2. Загрузите image.

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.Создайте ключ. * Файл 1030 *.

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. Экспортируйте переменную env

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.Output

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

...