2016-02-28 1 views
4

Я пытаюсь использовать API облачного зрения, и я могу сделать успешный запрос, но мой ответ возвращается пустым, даже с тестовым изображением, представленным на API-документы.Пустой ответ API Google Vision с изображением, хранящимся в облачном хранилище Google

Запрос кузова:

const imagePath = `gs://[bucket_name]/faulkner.jpg`; 
const requestObject = { 
    requests: [ 
    { 
     image: { 
     source: { 
      gcsImageUri: imagePath 
     } 
     }, 
     features:[ 
     { 
      type: 'LABEL_DETECTION', 
      maxResults: 100 
     } 
     ] 
    } 
    ] 
}; 

faulkner.jpg

Response Body:

{ 
    "responses": [{}] 
} 

Я даже попытался с помощью консоли облака API и скопировать поля запроса, и это тоже не работает

const apiKey = 'myAPIKey'; 
const fields = `fields=responses(labelAnnotations)&`; 
const visionAPI = `https://vision.googleapis.com/v1/images:annotate?${fields}key=${apiKey}`; 

Любая помощь будет принята с благодарностью.

ответ

0

у меня был именно этот вопрос, это то, что работает для меня ...

  1. Вам не нужно OAuth, только ключ API.

Это то, что я делаю неправильно ...

В моем HTTP вызов мне нужно, чтобы обернуть мою просьбу в новом объекте буквальный как в

{data: requestBody } 

Чтобы уточнить,

// My old call 
HTTP.call("POST", "https://vision.googleapis.com/v1/images:annotate?key=myAPIKey", requestBody, myCallback); 

// To my new call 
HTTP.call("POST", "https://vision.googleapis.com/v1/images:annotate?key=myAPIKey", {data: requestBody}, myCallback); 

// reqeustBody example 

{ 
    "requests": 
    [ 
     { 
     "features": 
      [ 
      { 
       "type": "LABEL_DETECTION" 
      } 
      ], 
     "image": 
      { 
      "source": 
       { 
       "gcsImageUri": "gs://myBucketNameHere/myDemoImageNameHere.jpg" 
       } 
      } 
     } 
    ] 
    } 

ПРИМЕЧАНИЕ: Несколько вещей, которые необходимо выполнить.

  1. Изображение находится в вашем хранилище Google Cloud Platform Storage Bucket.
  2. Имя изображения точно в вызове, так как оно находится на складе.
  3. Изображение должно иметь что-то, чтобы обнаружить, то есть при использовании FACE_DETECTION изображение должно иметь человеческое лицо.
  4. Изображение в Google Cloud Platform Storage ДОЛЖНО быть проверено на Публиковать.

Я использую тот же самый вызов выше с моим изображением с именем демо-image.jpg и все работает теперь, когда я завернул requestBody.

0

Вы делаете OAuth2 с соответствующим токеном. Для использования Vision API с gCS Images мы не можем просто использовать API-ключ.

0

Вы пробовали сделать запрос, используя ключ доступа oauth2? Там быстрый и грязный способ проверить это в командной строке, если у вас есть gcloud инструмент:

  • Create and downloadservice account json key
  • Set gcloud использовать эту учетную запись службы:

    gcloud auth activate-service-account --key-file <service-account-file.json> 
    
  • Получите токен доступа с использованием gcloud auth print-access-token и выполните запрос curl:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ 
        -H "content-type: application/json" \ 
        --data-binary '{"requests": [{"image": {"source": {"gcs_image_uri": "gs://your-bucket/your-object.jpg"}}, "features": [{"type": "LABEL_DETECTION", "maxResults": 100}]}]}' \ 
        "https://vision.googleapis.com/v1/images:annotate?alt=json" 
    

Для использования в производстве, однако, вы хотите явно использовать oauth2 flow, чтобы получить свои маркеры доступа, поскольку они недолговечны и требуют освежающим.

Смежные вопросы