Detectar etiquetas en una imagen mediante la línea de comandos

En esta página se muestra cómo enviar tres solicitudes de detección y anotación de características a la API Vision mediante la interfaz REST y el comando curl.

La API Vision permite integrar fácilmente las tecnologías de reconocimiento de visión de Google en las aplicaciones de desarrolladores. Puedes enviar datos de imagen y los tipos de funciones que quieras a la API Vision, que devolverá una respuesta correspondiente en función de los atributos de la imagen que te interesen. Para obtener más información sobre los tipos de funciones que se ofrecen, consulta la lista de todas las funciones de la API Vision.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  4. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vision API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable vision.googleapis.com
  8. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  9. Install the Google Cloud CLI.

  10. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

  11. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  12. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  13. Verify that billing is enabled for your Google Cloud project.

  14. Enable the Vision API:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable vision.googleapis.com
  15. Grant roles to your user account. Run the following command once for each of the following IAM roles: roles/storage.objectViewer

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    Replace the following:

    • PROJECT_ID: your project ID.
    • USER_IDENTIFIER: the identifier for your user account—for example, myemail@example.com.
    • ROLE: the IAM role that you grant to your user account.
  16. Hacer una solicitud de anotación de imagen

    Después de completar los pasos de la sección Antes de empezar, puedes usar la API Vision para anotar un archivo de imagen.

    En este ejemplo, se usa curl para enviar una solicitud a la API Vision con la siguiente imagen:

    URI de Cloud Storage:

    gs://cloud-samples-data/vision/using_curl/shanghai.jpeg

    URL HTTPS:

    https://console.cloud.google.com/storage/browser/cloud-samples-data/vision/using_curl/shanghai.jpeg

    Imagen de una calle de Shanghái.
    Crédito de la imagen: Steve Long en Unsplash.

    Crear el JSON de la solicitud

    El siguiente archivo request.json muestra cómo solicitar tres images:annotate funciones y limitar los resultados en la respuesta.

    Crea el archivo de solicitud JSON con el siguiente texto y guárdalo como un archivo de texto sin formato request.json en tu directorio de trabajo:

    request.json

    {
      "requests": [
        {
          "image": {
            "source": {
              "imageUri": "gs://cloud-samples-data/vision/using_curl/shanghai.jpeg"
            }
          },
          "features": [
            {
              "type": "LABEL_DETECTION",
              "maxResults": 3
            },
            {
              "type": "OBJECT_LOCALIZATION",
              "maxResults": 1
            },
            {
              "type": "TEXT_DETECTION",
              "maxResults": 1,
              "model": "builtin/latest"
            }
          ]
        }
      ]
    }

    Enviar la solicitud

    Usa curl y el contenido del cuerpo de request.json para enviar la solicitud a la API Vision. Introduce lo siguiente en la línea de comandos:

    curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "x-goog-user-project: PROJECT_ID" \
        -H "Content-Type: application/json; charset=utf-8" \
        https://vision.googleapis.com/v1/images:annotate -d @request.json

    Interpretar la respuesta

    Debería ver una respuesta JSON similar a la siguiente.

    El cuerpo JSON de la solicitud especificaba maxResults para cada tipo de anotación. Por lo tanto, verás lo siguiente en el JSON de respuesta:

    Resultados de detección de etiquetas

    1. description: "Personas", score: 0.950
    2. description: "Street", score: 0.891
    3. description: "Mode of transport", score: 0.890
    Imagen de una calle de Shanghái que contiene resultados de detección de etiquetas.
    Crédito de la imagen: Steve Long en Unsplash (anotaciones añadidas).

    Resultados de la detección de texto

    • texto: 牛牛面馆\n
    • Vértices: (x: 159, y: 212), (x: 947, y: 212), (x: 947, y: 354), (x: 159, y: 354)
    Imagen de una calle de Shanghái que contiene resultados de detección de texto.
    Crédito de la imagen: Steve Long en Unsplash (anotaciones añadidas).

    Resultados de detección de objetos

    • name: "Person", score: 0.944
    • Vértices normalizados: (x: 0.260, y: 0.468), (x: 0.407, y: 0.468), (x: 0.407, y: 0.895), (x: 0.260, y: 0.895)
    Imagen de una calle de Shanghái que contiene resultados de detección de objetos.
    Crédito de la imagen: Steve Long en Unsplash (anotaciones añadidas).

    ¡Enhorabuena! Has enviado tu primera solicitud a la API Vision.

    Limpieza

    Para evitar que se apliquen cargos en tu Google Cloud cuenta por los recursos utilizados en esta página, elimina el Google Cloud proyecto con los recursos.

    Optional: Revoke credentials from the gcloud CLI.

    gcloud auth revoke

    Siguientes pasos