Anotación sin conexión de archivos en lotes

La API de Vision puede detectar cualquier característica de la API de Vision de archivos PDF y TIFF almacenados en Cloud Storage.

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

El resultado de una solicitud de PDF o TIFF se escribe en un archivo JSON que se crea en el bucket de Cloud Storage especificado.

Limitaciones

La API de Vision acepta archivos PDF o TIFF de hasta 2,000 páginas. Los archivos más grandes mostrarán un error.

Autenticación

Las claves de API no son compatibles con las solicitudes files:asyncBatchAnnotate. Consulta Usa una cuenta de servicio si deseas obtener instrucciones sobre la autenticación con una cuenta de servicio.

La cuenta que se use en la autenticación debe tener acceso al bucket de Cloud Storage que especifiques para la salida (roles/editor, roles/storage.objectCreator o uno superior).

Puedes usar una clave de API a fin de consultar el estado de la operación. Consulta Usa una clave de API para obtener instrucciones.

Solicitudes de detección de características

Por el momento, la detección en documentos PDF o TIFF solo está disponible para archivos almacenados en depósitos de Cloud Storage. Los archivos JSON de respuesta se guardan de manera similar en un bucket de Cloud Storage.

Línea de comandos

Para realizar la detección de texto en documentos PDF o TIFF, envía una solicitud de POST y proporciona el cuerpo de la solicitud correspondiente:

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
      }
    }
  ]
}"

Aquí:

  • inputConfig: reemplaza el campo image que se usó en otras solicitudes a la API de Vision. Contiene dos campos secundarios:

    • gcsSource.uri: El URI de Cloud Storage del archivo PDF o TIFF (accesible para el usuario o la cuenta de servicio que realiza la solicitud)
    • mimeType: Es uno de los tipos de archivo aceptados, application/pdf o image/tiff.
  • outputConfig: Especifica los detalles del resultado. Contiene dos campos secundarios:

    • gcsDestination.uri: Es un URI de Cloud Storage válido. El usuario o la cuenta de servicio que realiza la solicitud debe poder escribir el bucket. El nombre del archivo será output-x-to-y, en el que x y y representan los números de página del archivo PDF o TIFF que se incluyen en ese archivo de salida. Si existe un archivo, se sobrescribirán sus contenidos.
    • batchSize: Especifica cuántas páginas de resultado se deben incluir en cada archivo JSON de resultado.

Respuesta:

Una solicitud asyncBatchAnnotate correcta muestra 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 de v1.operations.

Para recuperar tu respuesta de anotación de Vision, envía una solicitud GET al extremo v1.operations y pasa 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 se encuentra 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 la operación se completa, el state se muestra como DONE, y los resultados se escriben en el archivo de Cloud Storage que especificaste:

{
  "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 en tu archivo de resultado es similar al de la solicitud de detección de texto de documento de una imagen, con la adición de un campo context que muestra la ubicación del PDF o TIFF que se especificó y el número de páginas en el archivo:

output-1-to-1.json