Saya sedang membangun aplikasi web yang menggunakan OCR Google Cloud Vision. OCR berfungsi dengan baik untuk sekitar 7-8 permintaan, setelah itu saya mendapatkan kesalahan seperti:

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

Masalahnya, saya sudah menyiapkan akun penagihan dan akun layanan.

Saya telah mencoba menggunakan beberapa perintah GCloud untuk memperbaikinya, dan ketika saya menjalankan gcloud auth list, saya dapat melihat bahwa akun layanan saya adalah akun yang aktif. Saya juga telah mencoba membuat kunci JSON dan menyetel jalur ke kunci itu di variabel lingkungan saya - seperti yang diinstruksikan di sini: https://cloud.google.com/docs/authentication/getting-started

Adakah yang pernah mengalami masalah ini sebelumnya? Untuk referensi, saya menjalankan Windows 10 dan menggunakan Node.js untuk aplikasi web. Terima kasih!

1
Luke Fox 15 Maret 2020, 15:26

1 menjawab

Jawaban Terbaik

Anda mengautentikasi menggunakan kredensial pengguna akhir dari Google Cloud SDK atau Google Cloud Shell dan bukan kredensial akun layanan.

1.Buat direktori baru

mkdir ocr
cd ocr

2.Unduh gambar.

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

3.Instal perpustakaan klien.

sudo pi3 install --upgrade google-cloud-vision

4.Buat akun layanan.

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

gcloud iam service-accounts list

5.Buat file key.json.

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

6.Menetapkan peran pemilik ke akun layanan.

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

7.Ekspor variabel env

export GOOGLE_APPLICATION_CREDENTIALS=key.json

8.Jalankan skrip

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

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

1
MLu 2 Mei 2020, 12:34