1

我正在從github repo開始使用Cloud Vision API的python示例。Google Vision API文本檢測Python示例使用項目:「google.com:cloudsdktool」而不是我自己的項目

我已經設置了項目並使用其密鑰激活了服務帳戶。我也叫gcloud auth並輸入我的憑據。

這裏是我的代碼(如從視覺API文本檢測的Python的例子得出):

import base64 
import os 
import re 
import sys 

from googleapiclient import discovery 
from googleapiclient import errors 
import nltk 
from nltk.stem.snowball import EnglishStemmer 
from oauth2client.client import GoogleCredentials 
import redis 

DISCOVERY_URL = 'https://{api}.googleapis.com/$discovery/rest?version={apiVersion}' # noqa 
BATCH_SIZE = 10 


class VisionApi: 
    """Construct and use the Google Vision API service.""" 

    def __init__(self, api_discovery_file='/home/saadq/Dev/Projects/TM-visual-search/credentials-key.json'): 
     self.credentials = GoogleCredentials.get_application_default() 
     print self.credentials.to_json() 
     self.service = discovery.build(
      'vision', 'v1', credentials=self.credentials, 
      discoveryServiceUrl=DISCOVERY_URL) 
     print DISCOVERY_URL 

    def detect_text(self, input_filenames, num_retries=3, max_results=6): 
     """Uses the Vision API to detect text in the given file. 
     """ 
     images = {} 
     for filename in input_filenames: 
      with open(filename, 'rb') as image_file: 
       images[filename] = image_file.read() 

     batch_request = [] 
     for filename in images: 
      batch_request.append({ 
       'image': { 
        'content': base64.b64encode(
          images[filename]).decode('UTF-8') 
       }, 
       'features': [{ 
        'type': 'TEXT_DETECTION', 
        'maxResults': max_results, 
       }] 
      }) 
     request = self.service.images().annotate(
      body={'requests': batch_request}) 

     try: 
      responses = request.execute(num_retries=num_retries) 
      if 'responses' not in responses: 
       return {} 
      text_response = {} 
      for filename, response in zip(images, responses['responses']): 
       if 'error' in response: 
        print("API Error for %s: %s" % (
          filename, 
          response['error']['message'] 
          if 'message' in response['error'] 
          else '')) 
        continue 
       if 'textAnnotations' in response: 
        text_response[filename] = response['textAnnotations'] 
       else: 
        text_response[filename] = [] 
      return text_response 
     except errors.HttpError as e: 
      print("Http Error for %s: %s" % (filename, e)) 
     except KeyError as e2: 
      print("Key error: %s" % e2) 



vision = VisionApi() 
print vision.detect_text(['test_article.png']) 

這是錯誤消息我得到:

Http Error for test_article.png: <HttpError 403 when requesting https://vision.googleapis.com/v1/images:annotate?alt=json returned "Google Cloud Vision API has not been used in project google.com:cloudsdktool before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/vision.googleapis.com/overview?project=google.com:cloudsdktool then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry."> 

我希望能夠使用我自己的項目作爲示例,而不是默認的(google.com:cloudsdktool)。

回答

相關問題