Una vez que haya configurado su Google Cloud cuenta y creado un procesador, podrá enviar una solicitud a su procesador de Document AI.
El código usado para enviar la solicitud es el mismo para todos los procesadores. Observas diferencias en el funcionamiento del procesador en la información que genera cada procesador.
Si usas la v1
versión de la API de Document AI Google Cloud o la consola, puedes enviar solicitudes de procesamiento a esa versión específica del procesador. Si no especificas una versión del procesador, se usará la versión predeterminada.
Para obtener más información, consulta Gestionar versiones de procesador.
Procesamiento online
Las solicitudes online (síncronas) te permiten enviar un solo documento para procesarlo.
Document AI procesa inmediatamente la solicitud y devuelve un document
.
Enviar una solicitud a un encargado del tratamiento
En los siguientes ejemplos de código se muestra cómo enviar una solicitud a un procesador.
REST
En este ejemplo se muestra cómo proporcionar el contenido de un documento (contenido sin formato en bytes a través de una cadena codificada en Base64) en el objeto rawDocument
.
También puedes especificar inlineDocument
, que es el mismo formato JSON Document
que devuelve Document AI. Esto te permite encadenar solicitudes pasando el mismo formato de un lado a otro (por ejemplo, si clasificas un documento y, después, extraes su contenido).
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la ubicación de tu procesador, por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- PROJECT_ID: tu ID de proyecto Google Cloud .
- PROCESSOR_ID: el ID de tu procesador personalizado.
- skipHumanReview: booleano para inhabilitar la revisión humana (solo admitido por los procesadores con intervención humana).
true
- omite la revisión humanafalse
: habilita la revisión humana (opción predeterminada).
- MIME_TYPE†: una de las opciones válidas de tipo MIME.
- IMAGE_CONTENT†: uno de los contenidos de documentos insertados válidos, representado como un flujo de bytes. En el caso de las representaciones JSON, la codificación base64 (cadena ASCII) de los datos de imagen binarios. Esta cadena debe ser similar a la siguiente:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: especifica los campos que se incluirán en el resultado de
Document
. Se trata de una lista separada por comas de nombres completos de campos en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
- INDIVIDUAL_PAGES: lista de páginas concretas que se van a procesar.
† Este contenido también se puede especificar mediante contenido codificado en base64 en el objeto inlineDocument
.
Método HTTP y URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process
Cuerpo JSON de la solicitud:
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK", "processOptions": { "individualPageSelector" { "pages": [INDIVIDUAL_PAGES] } } }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process" | Select-Object -Expand Content
Si la solicitud se realiza de forma correcta, el servidor devuelve un código de estado HTTP 200 OK
y la respuesta en formato JSON. El cuerpo de la respuesta contiene una instancia de Document
.
Enviar una solicitud a una versión del procesador
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la ubicación de tu procesador, por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- PROJECT_ID: tu ID de proyecto Google Cloud .
- PROCESSOR_ID: el ID de tu procesador personalizado.
- PROCESSOR_VERSION: identificador de la versión del procesador. Consulta Seleccionar una versión del procesador para obtener más información. Por ejemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- skipHumanReview: booleano para inhabilitar la revisión humana (solo admitido por los procesadores con intervención humana).
true
- omite la revisión humanafalse
: habilita la revisión humana (opción predeterminada).
- MIME_TYPE†: una de las opciones válidas de tipo MIME.
- IMAGE_CONTENT†: uno de los contenidos de documentos insertados válidos, representado como un flujo de bytes. En el caso de las representaciones JSON, la codificación base64 (cadena ASCII) de los datos de imagen binarios. Esta cadena debe ser similar a la siguiente:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: especifica los campos que se incluirán en el resultado de
Document
. Se trata de una lista separada por comas de nombres completos de campos en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† Este contenido también se puede especificar mediante contenido codificado en base64 en el objeto inlineDocument
.
Método HTTP y URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process
Cuerpo JSON de la solicitud:
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK" }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process" | Select-Object -Expand Content
Si la solicitud se realiza de forma correcta, el servidor devuelve un código de estado HTTP 200 OK
y la respuesta en formato JSON. El cuerpo de la respuesta contiene una instancia de Document
.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Procesamiento por lotes
Las solicitudes en lote (asíncronas) te permiten enviar varios documentos en una sola solicitud. Document AI responde con un operation
que puedes consultar para ver el estado de la solicitud. Cuando finalice esta operación, contendrá un BatchProcessMetadata
que apunta al segmento de Cloud Storage donde se almacenan los resultados procesados.
Si los archivos de entrada a los que quieres acceder están en un segmento de otro proyecto, debes proporcionar acceso a ese segmento antes de poder acceder a los archivos. Consulta cómo configurar el acceso a archivos.
Enviar una solicitud a un encargado del tratamiento
En los siguientes ejemplos de código se muestra cómo enviar una solicitud de proceso por lotes a un procesador.
REST
En este ejemplo se muestra cómo enviar una solicitud POST
al método
batchProcess
para procesar de forma asíncrona documentos grandes.
En el ejemplo se usa el token de acceso de una cuenta de servicio configurada para el proyecto con la CLI de Google Cloud. Para obtener instrucciones sobre cómo instalar la CLI de Google Cloud, configurar un proyecto con una cuenta de servicio y obtener un token de acceso, consulta la sección Antes de empezar.
Una solicitud batchProcess
inicia una operación de larga duración y almacena los resultados en un segmento de Cloud Storage. En este ejemplo también se muestra cómo obtener el estado de esta operación de larga duración una vez que se ha iniciado.
Enviar la solicitud de proceso
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la ubicación de tu procesador, por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- PROJECT_ID: tu ID de proyecto Google Cloud .
- PROCESSOR_ID: el ID de tu procesador personalizado.
- INPUT_BUCKET_FOLDER†: un segmento o directorio de Cloud Storage para leer los archivos de entrada, expresado de la siguiente forma:
gs://bucket/directory/
- MIME_TYPE: una de las opciones válidas de tipo MIME.
- OUTPUT_BUCKET_FOLDER: un segmento o directorio de Cloud Storage en el que guardar los archivos de salida. Se expresa de la siguiente forma:
gs://bucket/directory/
- skipHumanReview: booleano para inhabilitar la revisión humana (solo admitido por los procesadores con intervención humana).
true
- omite la revisión humanafalse
: habilita la revisión humana (opción predeterminada).
- FIELD_MASK: especifica los campos que se incluirán en el resultado de
Document
. Se trata de una lista separada por comas de nombres completos de campos en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† En lugar de usar gcsPrefix
para incluir todos los archivos de una carpeta de GCS, también puedes usar documents
para enumerar cada archivo individualmente:
"inputDocuments": { "gcsDocuments": { "documents": [ { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT1.ext", "mimeType": "MIME_TYPE" }, { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT2.ext", "mimeType": "MIME_TYPE" } ] } }
Método HTTP y URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess
Cuerpo JSON de la solicitud:
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Enviar una solicitud a una versión del procesador
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- LOCATION: la ubicación de tu procesador, por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- PROJECT_ID: tu ID de proyecto Google Cloud .
- PROCESSOR_ID: el ID de tu procesador personalizado.
- PROCESSOR_VERSION: identificador de la versión del procesador. Consulta Seleccionar una versión del procesador para obtener más información. Por ejemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- INPUT_BUCKET_FOLDER†: un segmento o directorio de Cloud Storage para leer los archivos de entrada, expresado de la siguiente forma:
gs://bucket/directory/
- MIME_TYPE: una de las opciones válidas de tipo MIME.
- OUTPUT_BUCKET_FOLDER: un segmento o directorio de Cloud Storage en el que guardar los archivos de salida. Se expresa de la siguiente forma:
gs://bucket/directory/
- skipHumanReview: booleano para inhabilitar la revisión humana (solo admitido por los procesadores con intervención humana).
true
- omite la revisión humanafalse
: habilita la revisión humana (opción predeterminada).
- FIELD_MASK: especifica los campos que se incluirán en el resultado de
Document
. Se trata de una lista separada por comas de nombres completos de campos en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† En lugar de usar gcsPrefix
para incluir todos los archivos de una carpeta de GCS, también puedes usar documents
para enumerar cada archivo individualmente:
"inputDocuments": { "gcsDocuments": { "documents": [ { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT1.ext", "mimeType": "MIME_TYPE" }, { "gcsUri": "gs://BUCKET/PATH/TO/DOCUMENT2.ext", "mimeType": "MIME_TYPE" } ] } }
Método HTTP y URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess
Cuerpo JSON de la solicitud:
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
Para enviar tu solicitud, elige una de estas opciones:
curl
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess"
PowerShell
Guarda el cuerpo de la solicitud en un archivo llamado request.json
y ejecuta el siguiente comando:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Si la solicitud se realiza correctamente, la API Document AI devuelve el nombre de la operación.
Obtener los resultados
Para obtener los resultados de tu solicitud, debes enviar una solicitud GET
al recurso operations
. A continuación, se muestra cómo enviar una solicitud de este tipo.
Para obtener más información, consulta la documentación sobre operaciones de larga duración.
Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
- PROJECT_ID: tu ID de proyecto Google Cloud .
- LOCATION: la ubicación en la que se está ejecutando la operación de larga duración. Por ejemplo:
us
- Estados Unidoseu
- Unión Europea
- OPERATION_ID: el ID de tu operación. El ID es el último elemento del nombre de tu operación. Por ejemplo:
- Nombre de la operación:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID de operación:
bc4e1d412863e626
- Nombre de la operación:
Método HTTP y URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Para enviar tu solicitud, elige una de estas opciones:
curl
Ejecuta el comando siguiente:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
PowerShell
Ejecuta el comando siguiente:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" | Select-Object -Expand Content
Deberías recibir una respuesta JSON similar a la siguiente:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessMetadata", "state": "SUCCEEDED", "stateMessage": "Processed 1 document(s) successfully", "createTime": "TIMESTAMP", "updateTime": "TIMESTAMP", "individualProcessStatuses": [ { "inputGcsSource": "INPUT_BUCKET_FOLDER/DOCUMENT1.ext", "status": {}, "outputGcsDestination": "OUTPUT_BUCKET_FOLDER/OPERATION_ID/0", "humanReviewStatus": { "state": "ERROR", "stateMessage": "Sharded document protos are not supported for human review." } } ] }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.documentai.v1.BatchProcessResponse" } }
El cuerpo de la respuesta contiene una instancia de Operation
con información sobre el estado de la operación.
Si la operación se ha completado correctamente, el campo metadata
se rellenará con una instancia de BatchProcessMetadata
, que contiene información sobre los documentos procesados.
C#
Para obtener más información, consulta la documentación de referencia de la API C# de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para obtener más información, consulta la documentación de referencia de la API Java de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para obtener más información, consulta la documentación de referencia de la API Node.js de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Go
Para obtener más información, consulta la documentación de referencia de la API Go de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Ruby
Para obtener más información, consulta la documentación de referencia de la API Ruby de Document AI.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Crear lotes de documentos con el SDK de Python
El procesamiento por lotes permite un máximo de 1000 archivos por solicitud. Si tienes más documentos que procesar, debes dividirlos en varios lotes.
Document AI Toolbox es un SDK para Python que proporciona funciones de utilidad para Document AI. Una de las funciones es crear lotes de documentos para procesarlos desde una carpeta de Cloud Storage.
Consulta Gestionar la respuesta del procesamiento para obtener más información sobre cómo te ayuda Document AI Toolbox con el posprocesamiento.
Códigos de ejemplo
En los siguientes ejemplos de código se muestra cómo usar Document AI Toolbox.