Anotación de archivos por lotes sin conexión

La API Vision puede detectar cualquier función de la API Vision en archivos PDF y TIFF almacenados en Cloud Storage.

La detección de funciones de PDF y TIFF debe solicitarse mediante la función files:asyncBatchAnnotate, que realiza una solicitud sin conexión (asíncrona) y proporciona su estado mediante los recursos operations.

La salida de una solicitud de PDF o TIFF se escribe en un archivo JSON creado en el segmento de Cloud Storage especificado.

Limitaciones

La API Vision acepta archivos PDF o TIFF de hasta 2000 páginas. Si los archivos son más grandes, se devolverá un error.

Autenticación

Las claves de API no se admiten en las solicitudes de files:asyncBatchAnnotate. Consulta Usar una cuenta de servicio para obtener instrucciones sobre cómo autenticarte con una cuenta de servicio.

La cuenta utilizada para la autenticación debe tener acceso al segmento de Cloud Storage que especifiques para la salida (roles/editor o roles/storage.objectCreator o versiones posteriores).

Puedes usar una clave de API para consultar el estado de la operación. Consulta las instrucciones en Usar una clave de API.

Solicitudes de detección de funciones

Actualmente, la detección de documentos PDF o TIFF solo está disponible para los archivos almacenados en segmentos de Cloud Storage. Los archivos JSON de respuesta se guardan de forma similar en un segmento de Cloud Storage.

Línea de comandos

Para detectar texto en documentos PDF o TIFF, haz una solicitud POST y proporciona el cuerpo de la solicitud adecuado:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
https://vision.googleapis.com/v1/files:asyncBatchAnnotate -d "{
  'requests':[
    {
      'inputConfig': {
        'gcsSource': {
          'uri': 'gs://your-source-bucket-name/folder/multi-page-file.pdf'
        },
        'mimeType': 'application/pdf'
      },
      'features': [
        {
          'type': 'DOCUMENT_TEXT_DETECTION'
        }
      ],
      'outputConfig': {
        'gcsDestination': {
          'uri': 'gs://your-bucket-name/folder/'
        },
        'batchSize': 1
      }
    }
  ]
}"

Donde:

  • inputConfig: sustituye al campo image que se usa en otras solicitudes de la API Vision. Contiene dos campos secundarios:

    • gcsSource.uri: el URI de Cloud Storage del archivo PDF o TIFF (al que puede acceder el usuario o la cuenta de servicio que hace la solicitud).
    • mimeType: uno de los tipos de archivo aceptados (application/pdf o image/tiff).
  • outputConfig: especifica los detalles de la salida. Contiene dos campos secundarios:

    • gcsDestination.uri: un URI de Cloud Storage válido. El usuario o la cuenta de servicio que hace la solicitud debe tener permiso de escritura en el bucket. El nombre del archivo será output-x-to-y, donde x y y representan los números de página del PDF o TIFF incluidos en ese archivo de salida. Si el archivo existe, su contenido se sobrescribirá.
    • batchSize: especifica el número de páginas de salida que se deben incluir en cada archivo JSON de salida.

Respuesta:

Una solicitud asyncBatchAnnotate correcta devuelve una respuesta con un solo campo de nombre:

{
  "name": "projects/usable-auth-library/operations/1efec2285bd442df"
}

Este nombre representa una operación de larga duración con un ID asociado (por ejemplo, 1efec2285bd442df), que se puede consultar mediante la API v1.operations.

Para recuperar la respuesta de anotación de Vision, envía una solicitud GET al endpoint v1.operations e incluye el ID de operación en la URL.

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "Content-Type: application/json" \
https://vision.googleapis.com/v1/operations/1efec2285bd442df

Si la operación está en curso:

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "RUNNING",
    "createTime": "2019-05-15T21:10:08.401917049Z",
    "updateTime": "2019-05-15T21:10:33.700763554Z"
  }
}

Una vez que se haya completado la operación, el icono state se mostrará como DONE y los resultados se escribirán en el archivo de Cloud Storage que hayas especificado:

{
  "name": "operations/1efec2285bd442df",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.OperationMetadata",
    "state": "DONE",
    "createTime": "2019-05-15T20:56:30.622473785Z",
    "updateTime": "2019-05-15T20:56:41.666379749Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.vision.v1.AsyncBatchAnnotateFilesResponse",
    "responses": [
      {
        "outputConfig": {
          "gcsDestination": {
            "uri": "gs://your-bucket-name/folder/"
          },
          "batchSize": 1
        }
      }
    ]
  }
}

El JSON de tu archivo de salida es similar al de una solicitud de detección de texto de un documento de una imagen, con la adición de un campo context que muestra la ubicación del PDF o TIFF especificado y el número de páginas del archivo:

output-1-to-1.json