Realiza una solicitud a la API de Vision

La API de Cloud Vision es una API de REST que usa las operaciones POST de HTTP para realizar un análisis de datos en las imágenes que envías en la solicitud. La API usa JSON en las solicitudes y respuestas.

Resumen

Extremo

La API de Vision consta de un único extremo (https://vision.googleapis.com/v1/images) que admite un método de solicitud HTTP (annotate):

POST https://vision.googleapis.com/v1/images:annotate

Autenticación

La solicitud POST debe autenticarse a través del paso de una clave de API o un token de OAuth. Para obtener más información, consulta la página Autenticar.

Formato de solicitud JSON

El cuerpo de la solicitud POST consta de un objeto JSON, que incluye una sola lista de requests, que contiene uno o más objetos de tipo AnnotateImageRequest:

{
  "requests":[
    {
      "image":{
        "content":"/9j/7QBEUGhvdG9...image contents...eYxxxzj/Coa6Bax//Z"
      },
      "features":[
        {
          "type":"LABEL_DETECTION",
          "maxResults":1
        }
      ]
    }
  ]
}

Cada solicitud debe cumplir esta condición:

  • Debe contener una lista de requests.

Dentro de la lista de requests, se especifica lo siguiente:

  • image especifica el archivo de imagen. Se puede enviar como una string codificada en base64, una ubicación de archivo de Cloud Storage o como una URL de acceso público. Consulta Proporciona la imagen para obtener más detalles.

  • features enumera los tipos de anotaciones que se realizarán en la imagen. Puedes especificar uno o varios tipos, así como los maxResults que se mostrarán para cada uno.

  • imageContext especifica sugerencias al servicio para ayudar con la anotación: cuadros de límite, idiomas y relaciones de aspecto de las sugerencias de recorte (no se muestra en el ejemplo anterior).

Proporciona la imagen

Puedes proporcionar la imagen en tu solicitud de una de las siguientes tres maneras:

  • Como una string de imagen codificada en base64. Si la imagen se almacena de forma local, puedes convertirla en una string y pasarla como el valor de image.content:

    {
      "requests":[
        {
          "image":{
            "content":"/9j/7QBEUGhvdG9zaG9...image contents...fXNWzvDEeYxxxzj/Coa6Bax//Z"
          },
          "features":[
            {
              "type":"FACE_DETECTION",
              "maxResults":10
            }
          ]
        }
      ]
    }
    

    Consulta codificación en Base64 a fin de obtener instrucciones para codificar en varias plataformas.

  • Como un URI de Cloud Storage. Pasa el URI completo como el valor de image.source.imageUri:

    {
      "requests":[
        {
          "image":{
            "source":{
              "imageUri":
                "gs://bucket_name/path_to_image_object"
            }
          },
          "features":[
            {
              "type":"LABEL_DETECTION",
              "maxResults":1
            }
          ]
        }
      ]
    }
    

    El archivo en Cloud Storage debe ser accesible al método de autenticación que usas. Si usas una clave de API, el archivo debe ser de acceso público. Si usas una cuenta de servicio, el archivo debe ser accesible para el usuario que creó la cuenta de servicio.

  • Como una URL HTTP o HTTPS de acceso público. Pasa la URL como el valor de image.source.imageUri:

    {
      "requests":[
        {
          "image":{
            "source":{
              "imageUri":
                "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"
            }
          },
          "features":[
            {
              "type":"LOGO_DETECTION",
              "maxResults":1
            }
          ]
        }
      ]
    }
    

    Cuando se recuperan imágenes de URL HTTP/HTTPS, Google no puede garantizar que se completará la solicitud. Tu solicitud puede fallar si el host especificado niega la solicitud (p. ej., debido a una regulación de solicitud o una prevención de DoS) o si Google regula las solicitudes al sitio para evitar abusos. No debes depender de imágenes alojadas de forma externa para las aplicaciones de producción.

Formato de respuesta JSON

La solicitud annotate recibe una respuesta JSON de tipo AnnotateImageResponse. Aunque las solicitudes para cada tipo de característica son similares, las respuestas de cada uno de ellos pueden ser muy diferentes. Consulta la referencia de la API de Vision para obtener más información.

El código siguiente muestra una respuesta de detección de etiquetas de muestra para la foto que verás a continuación:

{
  "responses": [
    {
      "labelAnnotations": [
        {
          "mid": "/m/0bt9lr",
          "description": "dog",
          "score": 0.97346616
        },
        {
          "mid": "/m/09686",
          "description": "vertebrate",
          "score": 0.85700572
        },
        {
          "mid": "/m/01pm38",
          "description": "clumber spaniel",
          "score": 0.84881884
        },
        {
          "mid": "/m/04rky",
          "description": "mammal",
          "score": 0.847575
        },
        {
          "mid": "/m/02wbgd",
          "description": "english cocker spaniel",
          "score": 0.75829375
        }
      ]
    }
  ]
}

Bibliotecas cliente

Google proporciona bibliotecas cliente en varios lenguajes de programación para simplificar el proceso de compilación y envío de solicitudes y de recepción y análisis de respuestas.

Consulta las bibliotecas cliente para obtener más información sobre las instrucciones de instalación y uso.