Нужно ли использовать облачное хранилище Google для пакетной аннотации? - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь выполнить asyncBatchAnnotation() запрос на аннотирование группы изображений с помощью API Google Cloud Vision.

Вот фрагмент моего кода: Моя функция для создания запроса на пакетирование:

module.exports = createRequests

const LABEL_DETECTION = 'LABEL_DETECTION'
const WEB_DETECTION = 'WEB_DETECTION'

function createRequests(imageUris) {
  let resources = {
    requests: [], 
    outputConfig
  } 
  for (let i = 0; i < imageUris.length; i++) {
    let request = {
      image: {source: {imageUri: imageUris[i]}},
      features: [{type: LABEL_DETECTION}, {type: WEB_DETECTION}]
    }
    resources.requests.push(request)
  }
  console.log(resources)
  return resources
}

Моя функция для создания самого запроса:

// Imports the Google Cloud Client Library
const vision = require('@google-cloud/vision')

// Creates a client
const client = new vision.ImageAnnotatorClient()

const getImageUrls = require('./get-image-urls.js')
const createRequests = require('./create-requests.js')
const BUCKET_NAME = 'creative-engine'

function detectLabelsFromImage() {
  return new Promise(async(resolve, reject) => {
    try {
      let imageUris = await getImageUrls(BUCKET_NAME)
      let resources = createRequests(imageUris)
      try {
        let responses = await client.asyncBatchAnnotateImages(resources)
        const imageResponses = responses[0].responses
        imageResponses.forEach(imageResponse => {
          console.log('LABELS: ')
          const labels = imageResponse.labelAnnotations
          labels.forEach(label => {
            console.log(`label: ${label.description} | score: ${label.score}`)
          });
          console.log('WEB ENTITIES: ')
          const webEntities = imageResponse.webDetection.webEntities
          webEntities.forEach(webEntity => {
            console.log(`label: ${webEntity.description} | score: ${webEntity.score}`)
          });
        })

      } catch (err) {
        console.error('ERROR: ', err)
      }
    } catch (e) {
      reject(e)
    }
  })
}

Вот ошибка, которую я получаю:

ERROR: Error: 3 INVALID_ARGUMENT: OutputConfig is required.

Когда я смотрю на Документация Google здесь гласит, что мне нужно использовать Google Cloud Storage для вывода JSON.

Я не хочу создавать платежную учетную запись с моей информацией для Google Cloud. Есть ли способ сделать это, когда я пишу в локальный файл JSON?

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 09 января 2020

Согласно указанной вами ссылке, невозможно написать локальный файл JSON с помощью API Cloud Vision. Вы должны использовать GCS для хранения файла.

...