Envía una solicitud de procesamiento
Después de configurar tu cuenta deGoogle Cloud y crear un procesador, puedes enviar una solicitud a tu procesador de Document AI.
El código que se usa para enviar la solicitud es el mismo para todos los procesadores. Ves diferencias en el funcionamiento del procesador en la información que cada procesador genera.
Si usas la versión de la API de v1
de Document AI o la consola de Google Cloud, puedes enviar solicitudes de procesamiento a esa versión específica del procesador. Si no especificas una versión del procesador, se usa la versión predeterminada.
Para obtener más información, consulta Administra versiones de procesadores.
Procesamiento en línea
Las solicitudes en línea (síncronas) te permiten enviar un solo documento para su procesamiento.
Document AI procesa la solicitud de inmediato y muestra un document
.
Envía una solicitud a un encargado del tratamiento de datos
En las siguientes muestras de código, se muestra cómo enviar una solicitud a un procesador.
REST
En este ejemplo, se muestra cómo proporcionar contenido de documentos (contenido de documentos sin procesar en bytes a través de una cadena codificada en base64) en el objeto rawDocument
.
Como alternativa, también puedes especificar inlineDocument
, que es el mismo formato JSON Document
que muestra Document AI. Esto te permite encadenar solicitudes pasando el mismo formato de ida y vuelta (por ejemplo, si clasificas un documento y, luego, extraes su contenido).
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de tu procesador, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- PROCESSOR_ID: Es el ID de tu procesador personalizado.
- skipHumanReview: Es un valor booleano para inhabilitar la revisión manual (solo es compatible con los procesadores de interacción humana).
true
: Omite la revisión humana.false
: Habilita la revisión manual (opción predeterminada).
- MIME_TYPE†: Es una de las opciones válidas de tipo de MIME.
- IMAGE_CONTENT†: Es uno de los contenidos de documentos intercalados válidos, representado como un flujo de bytes. Para las representaciones JSON, la codificación en base64 (cadena ASCII) de los datos binarios de la imagen. Esta cadena debería ser similar a la siguiente:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: Especifica qué campos se deben incluir en el resultado de
Document
. Esta es una lista separada por comas de los nombres de campos completamente calificados en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
- INDIVIDUAL_PAGES: Es una lista de páginas individuales que se procesarán.
† Este contenido también se puede especificar con 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 completa de forma correcta, el servidor muestra 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ómo enviar una solicitud a una versión del procesador
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de tu procesador, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- PROCESSOR_ID: Es el ID de tu procesador personalizado.
- PROCESSOR_VERSION: Es el identificador de la versión del procesador. Consulta Cómo seleccionar una versión de procesador para obtener más información. Por ejemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- skipHumanReview: Es un valor booleano para inhabilitar la revisión manual (solo es compatible con los procesadores de interacción humana).
true
: Omite la revisión humana.false
: Habilita la revisión manual (opción predeterminada).
- MIME_TYPE†: Es una de las opciones válidas de tipo de MIME.
- IMAGE_CONTENT†: Es uno de los contenidos de documentos intercalados válidos, representado como un flujo de bytes. Para las representaciones JSON, la codificación en base64 (cadena ASCII) de los datos binarios de la imagen. Esta cadena debería ser similar a la siguiente:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: Especifica qué campos se deben incluir en el resultado de
Document
. Esta es una lista separada por comas de los nombres de campos completamente calificados en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† Este contenido también se puede especificar con 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 completa de forma correcta, el servidor muestra 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 de Document AI C#.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener más información, consulta la documentación de referencia de la API de Document AI Java.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener más información, consulta la documentación de referencia de la API de Document AI Node.js.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Procesamiento por lotes
Las solicitudes por lotes (asíncronas) te permiten enviar varios documentos en una sola
solicitud. Document AI responde con un operation
que puedes sondear para conocer el estado de la solicitud. Cuando finaliza esta operación,
contiene un BatchProcessMetadata
que apunta al bucket de Cloud Storage en el que se almacenan los resultados procesados.
Si los archivos de entrada a los que deseas acceder se encuentran en un bucket de otro proyecto, debes proporcionar acceso a ese bucket antes de poder acceder a los archivos. Consulta cómo configurar el acceso a archivos.
Envía una solicitud a un encargado del tratamiento de datos
En las siguientes muestras de código, se muestra cómo enviar una solicitud de procesamiento por lotes a un procesador.
REST
En este ejemplo, se muestra cómo enviar una solicitud POST
al método
batchProcess
para el procesamiento asíncrono de documentos grandes.
En el ejemplo, se usa el token de acceso correspondiente a la configuración de una cuenta de servicio para el proyecto con Google Cloud CLI. Si deseas obtener instrucciones para instalar Google Cloud CLI, configurar un proyecto con una cuenta de servicio y obtener un token de acceso, consulta Antes de comenzar.
Una solicitud batchProcess
inicia una operación de larga duración y almacena los resultados en un bucket de Cloud Storage. En este ejemplo, también se muestra cómo obtener el estado de esta operación de larga duración después de que se inicia.
Envía la solicitud de proceso
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de tu procesador, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- PROCESSOR_ID: Es el ID de tu procesador personalizado.
- INPUT_BUCKET_FOLDER†: Es un bucket o directorio de Cloud Storage desde el que se leen los archivos de entrada, que se expresa de la siguiente manera:
gs://bucket/directory/
- MIME_TYPE: Es una de las opciones válidas de tipo de MIME.
- OUTPUT_BUCKET_FOLDER: Es un bucket o directorio de Cloud Storage para guardar archivos de salida, que se expresa de la siguiente manera:
gs://bucket/directory/
- skipHumanReview: Es un valor booleano para inhabilitar la revisión manual (solo es compatible con los procesadores de interacción humana).
true
: Omite la revisión humana.false
: Habilita la revisión manual (opción predeterminada).
- FIELD_MASK: Especifica qué campos se deben incluir en el resultado de
Document
. Esta es una lista separada por comas de los nombres de campos completamente calificados en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† En lugar de usar gcsPrefix
para incluir todos los archivos en una carpeta de GCS, también puedes usar documents
para enumerar cada archivo de forma individual:
"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 que se muestra a continuación:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Cómo enviar una solicitud a una versión del procesador
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- LOCATION: La ubicación de tu procesador, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- PROCESSOR_ID: Es el ID de tu procesador personalizado.
- PROCESSOR_VERSION: Es el identificador de la versión del procesador. Consulta Cómo seleccionar una versión de procesador para obtener más información. Por ejemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- INPUT_BUCKET_FOLDER†: Es un bucket o directorio de Cloud Storage desde el que se leen los archivos de entrada, que se expresa de la siguiente manera:
gs://bucket/directory/
- MIME_TYPE: Es una de las opciones válidas de tipo de MIME.
- OUTPUT_BUCKET_FOLDER: Es un bucket o directorio de Cloud Storage para guardar archivos de salida, que se expresa de la siguiente manera:
gs://bucket/directory/
- skipHumanReview: Es un valor booleano para inhabilitar la revisión manual (solo es compatible con los procesadores de interacción humana).
true
: Omite la revisión humana.false
: Habilita la revisión manual (opción predeterminada).
- FIELD_MASK: Especifica qué campos se deben incluir en el resultado de
Document
. Esta es una lista separada por comas de los nombres de campos completamente calificados en formatoFieldMask
.- Ejemplo:
text,entities,pages.pageNumber
- Ejemplo:
† En lugar de usar gcsPrefix
para incluir todos los archivos en una carpeta de GCS, también puedes usar documents
para enumerar cada archivo de forma individual:
"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 que se muestra a continuación:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Si la solicitud se realiza correctamente, la API de Document AI muestra el nombre de tu operación.
Obtén 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.
Puedes obtener más información en la documentación sobre operaciones de larga duración.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
- PROJECT_ID: El Google Cloud ID de tu proyecto.
- LOCATION: Es la ubicación en la que se ejecuta la LRO, por ejemplo:
us
: Estados Unidoseu
: Unión Europea
- OPERATION_ID: El ID de la operación. El ID es el último elemento del nombre de la 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 siguiente comando:
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 siguiente comando:
$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 que se muestra a continuación:
{ "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 completó correctamente, el campo metadata
se propagará 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 de Document AI C#.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para obtener más información, consulta la documentación de referencia de la API de Document AI Go.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener más información, consulta la documentación de referencia de la API de Document AI Java.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener más información, consulta la documentación de referencia de la API de Document AI Node.js.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener más información, consulta la documentación de referencia de la API de Document AI Python.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Go
Para obtener más información, consulta la documentación de referencia de la API de Document AI Go.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Ruby
Para obtener más información, consulta la documentación de referencia de la API de Document AI Ruby.
Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Crea lotes de documentos con el SDK de Python
El procesamiento por lotes permite un máximo de 1,000 archivos por solicitud. Si tienes más documentos para 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 Cómo controlar la respuesta de procesamiento para obtener más información sobre cómo Document AI Toolbox ayuda con el procesamiento posterior.
Muestras de código
En las siguientes muestras de código, se muestra cómo usar Document AI Toolbox.