Enviar uma solicitação de processamento
Depois de configurar sua contaGoogle Cloud e criar um processador, você pode enviar uma solicitação para o processador da Document AI.
O código usado para enviar a solicitação é o mesmo para todos os processadores. Você vai notar diferenças no funcionamento do processador nas informações que cada processador produz.
Usando a versão v1
da API do Document AI ou no console do Google Cloud, é possível enviar solicitações de processamento para essa versão específica do processador. Se você não
especificar uma versão do processador, a versão padrão será usada.
Para mais informações, consulte Como gerenciar versões do processador.
Processamento on-line
Com as solicitações on-line (síncronas), você pode enviar um único documento para processamento.
A Document AI processa a solicitação imediatamente e retorna um document
.
Enviar uma solicitação para um processador
Os exemplos de código abaixo mostram como enviar uma solicitação para um processador.
REST
Este exemplo mostra como fornecer o conteúdo do documento (conteúdo bruto do documento em bytes
por uma string codificada em base64) no objeto
rawDocument
.
Como alternativa, você também pode especificar inlineDocument
,
que é o mesmo formato JSON Document
retornado
pelo Document AI. Isso permite encadear solicitações transmitindo o mesmo formato várias vezes,
por exemplo, se você classificar um documento e extrair o conteúdo dele.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do processador, por exemplo:
us
- Estados Unidoseu
- União Europeia
- PROJECT_ID: o ID do Google Cloud projeto.
- PROCESSOR_ID: o ID do processador personalizado.
- skipHumanReview: um booleano para desativar a revisão humana (compatível apenas com processadores human-in-the-loop).
true
: pula a revisão humanafalse
: ativa a revisão humana (padrão)
- MIME_TYPE†: uma das opções válidas de tipo MIME.
- IMAGE_CONTENT†: um dos conteúdos
válidos do documento inline, representado como
um fluxo de bytes. Para representações JSON, a codificação base64 (string ASCII) dos dados da imagem binária. Essa string precisa ser semelhante à
seguinte:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: especifica quais campos incluir na saída
Document
. É uma lista separada por vírgulas de nomes de campos totalmente qualificados no formatoFieldMask
.- Exemplo:
text,entities,pages.pageNumber
- Exemplo:
- INDIVIDUAL_PAGES: uma lista de páginas individuais a serem processadas.
† Esse conteúdo também pode ser especificado usando conteúdo codificado em base64 no
objeto inlineDocument
.
Método HTTP e URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process
Corpo JSON da solicitação:
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK", "processOptions": { "individualPageSelector" { "pages": [INDIVIDUAL_PAGES] } } }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Quando a solicitação é bem-sucedida, o servidor retorna um código de status HTTP 200 OK
e a
resposta no formato JSON. O corpo da resposta contém uma instância de
Document
.
Enviar solicitação para uma versão do processador
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do processador, por exemplo:
us
- Estados Unidoseu
- União Europeia
- PROJECT_ID: o ID do Google Cloud projeto.
- PROCESSOR_ID: o ID do processador personalizado.
- PROCESSOR_VERSION: o identificador da versão do processador. Consulte Selecionar uma versão do processador para mais informações. Por exemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- skipHumanReview: um booleano para desativar a revisão humana (compatível apenas com processadores human-in-the-loop).
true
: pula a revisão humanafalse
: ativa a revisão humana (padrão)
- MIME_TYPE†: uma das opções válidas de tipo MIME.
- IMAGE_CONTENT†: um dos conteúdos
válidos do documento inline, representado como
um fluxo de bytes. Para representações JSON, a codificação base64 (string ASCII) dos dados da imagem binária. Essa string precisa ser semelhante à
seguinte:
/9j/4QAYRXhpZgAA...9tAVx/zDQDlGxn//2Q==
- FIELD_MASK: especifica quais campos incluir na saída
Document
. É uma lista separada por vírgulas de nomes de campos totalmente qualificados no formatoFieldMask
.- Exemplo:
text,entities,pages.pageNumber
- Exemplo:
† Esse conteúdo também pode ser especificado usando conteúdo codificado em base64 no
objeto inlineDocument
.
Método HTTP e URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:process
Corpo JSON da solicitação:
{ "skipHumanReview": skipHumanReview, "rawDocument": { "mimeType": "MIME_TYPE", "content": "IMAGE_CONTENT" }, "fieldMask": "FIELD_MASK" }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Quando a solicitação é bem-sucedida, o servidor retorna um código de status HTTP 200 OK
e a
resposta no formato JSON. O corpo da resposta contém uma instância de
Document
.
C#
Para mais informações, consulte a documentação de referência da API Document AI C#.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para mais informações, consulte a documentação de referência da API Document AI Java.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para mais informações, consulte a documentação de referência da API Document AI Node.js.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para mais informações, consulte a documentação de referência da API Document AI Python.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Processamento em lote
Com as solicitações em lote (assíncronas), é possível enviar vários documentos em uma única
solicitação. O Document AI responde com um operation
que pode ser consultado para saber o status da solicitação. Quando essa operação é concluída,
ela contém um BatchProcessMetadata
que aponta para o bucket do Cloud Storage em que os resultados processados são
armazenados.
Se os arquivos de entrada que você quer acessar estiverem em um bucket em outro projeto, você precisará fornecer acesso a esse bucket antes de acessar os arquivos. Consulte Configurar o acesso a arquivos.
Enviar uma solicitação para um processador
Os exemplos de código abaixo mostram como enviar uma solicitação de processo em lote para um processador.
REST
Este exemplo mostra como enviar uma solicitação POST
para o método
batchProcess
para processamento assíncrono de documentos grandes.
O exemplo usa
o token de acesso de uma conta de serviço configurada para o projeto usando a Google Cloud CLI. Para
instruções sobre como instalar a CLI do Google Cloud, configurar um projeto com uma conta de serviço e
receber um token de acesso, consulte Antes de começar.
Uma solicitação batchProcess
inicia uma operação de longa duração e armazena os resultados em um bucket do Cloud Storage. Esse exemplo também mostra como
conferir o status dessa operação de longa duração depois que ela é iniciada.
Enviar a solicitação de processo
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do processador, por exemplo:
us
- Estados Unidoseu
- União Europeia
- PROJECT_ID: o ID do Google Cloud projeto.
- PROCESSOR_ID: o ID do processador personalizado.
- INPUT_BUCKET_FOLDER†: um bucket/diretório do Cloud Storage
para ler arquivos de entrada, expresso da seguinte forma:
gs://bucket/directory/
- MIME_TYPE: uma das opções válidas de tipo MIME.
- OUTPUT_BUCKET_FOLDER: um bucket/diretório
do Cloud Storage para salvar arquivos de saída, expresso no seguinte formato:
gs://bucket/directory/
- skipHumanReview: um booleano para desativar a revisão humana (compatível apenas com processadores human-in-the-loop).
true
: pula a revisão humanafalse
: ativa a revisão humana (padrão)
- FIELD_MASK: especifica quais campos incluir na saída
Document
. É uma lista separada por vírgulas de nomes de campos totalmente qualificados no formatoFieldMask
.- Exemplo:
text,entities,pages.pageNumber
- Exemplo:
† Em vez de usar gcsPrefix
para incluir todos os arquivos em uma pasta do GCS, você também pode
usar documents
para listar cada arquivo 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 e URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:batchProcess
Corpo JSON da solicitação:
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Enviar uma solicitação para uma versão do processador
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- LOCATION: o local do processador, por exemplo:
us
- Estados Unidoseu
- União Europeia
- PROJECT_ID: o ID do Google Cloud projeto.
- PROCESSOR_ID: o ID do processador personalizado.
- PROCESSOR_VERSION: o identificador da versão do processador. Consulte Selecionar uma versão do processador para mais informações. Por exemplo:
pretrained-TYPE-vX.X-YYYY-MM-DD
stable
rc
- INPUT_BUCKET_FOLDER†: um bucket/diretório do Cloud Storage
para ler arquivos de entrada, expresso da seguinte forma:
gs://bucket/directory/
- MIME_TYPE: uma das opções válidas de tipo MIME.
- OUTPUT_BUCKET_FOLDER: um bucket/diretório
do Cloud Storage para salvar arquivos de saída, expresso no seguinte formato:
gs://bucket/directory/
- skipHumanReview: um booleano para desativar a revisão humana (compatível apenas com processadores human-in-the-loop).
true
: pula a revisão humanafalse
: ativa a revisão humana (padrão)
- FIELD_MASK: especifica quais campos incluir na saída
Document
. É uma lista separada por vírgulas de nomes de campos totalmente qualificados no formatoFieldMask
.- Exemplo:
text,entities,pages.pageNumber
- Exemplo:
† Em vez de usar gcsPrefix
para incluir todos os arquivos em uma pasta do GCS, você também pode
usar documents
para listar cada arquivo 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 e URL:
POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID/processorVersions/PROCESSOR_VERSION:batchProcess
Corpo JSON da solicitação:
{ "inputDocuments": { "gcsPrefix": { "gcsUriPrefix": "INPUT_BUCKET_FOLDER" } }, "documentOutputConfig": { "gcsOutputConfig": { "gcsUri": "OUTPUT_BUCKET_FOLDER", "fieldMask": "FIELD_MASK" } }, "skipHumanReview": BOOLEAN }
Para enviar a solicitação, escolha uma destas opções:
curl
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
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
Salve o corpo da solicitação em um arquivo com o nome request.json
e execute o comando a seguir:
$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
Você receberá uma resposta JSON semelhante a esta:
{ "name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID" }
Se a solicitação for bem-sucedida, a API Document AI vai retornar o nome da operação.
Ver os resultados
Para conferir os resultados da sua solicitação, envie uma solicitação GET
para o recurso operations
. Veja a seguir como enviar essa solicitação.
Leia mais informações na documentação Operações de longa duração.
Antes de usar os dados da solicitação abaixo, faça as substituições a seguir:
- PROJECT_ID: o ID do Google Cloud projeto.
- LOCATION: o local em que a LRO está sendo executada. Por exemplo:
us
- Estados Unidoseu
- União Europeia
- OPERATION_ID: o ID da operação. Ele é o último elemento do nome
da operação. Por exemplo:
- Nome da operação:
projects/PROJECT_ID/locations/LOCATION/operations/bc4e1d412863e626
- ID da operação:
bc4e1d412863e626
- Nome da operação:
Método HTTP e URL:
GET https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Para enviar a solicitação, escolha uma destas opções:
curl
execute o seguinte 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
execute o seguinte 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
Você receberá uma resposta JSON semelhante a esta:
{ "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" } }
O corpo da resposta contém uma instância de Operation
com informações sobre o status da operação.
Se a operação tiver sido concluída,
o campo metadata
será preenchido com uma instância de BatchProcessMetadata
, que contém informações sobre os documentos processados.
C#
Para mais informações, consulte a documentação de referência da API Document AI C#.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para mais informações, consulte a documentação de referência da API Document AI Go.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para mais informações, consulte a documentação de referência da API Document AI Java.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para mais informações, consulte a documentação de referência da API Document AI Node.js.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para mais informações, consulte a documentação de referência da API Document AI Python.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para mais informações, consulte a documentação de referência da API Document AI Go.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para mais informações, consulte a documentação de referência da API Document AI Ruby.
Para autenticar na Document AI, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Criar lotes de documentos com o SDK do Python
O processamento em lote permite até 1.000 arquivos por solicitação. Se você tiver mais documentos para processar, divida-os em vários lotes.
A Document AI Toolbox é um SDK para Python que oferece funções de utilitário para a Document AI. Uma das funções é criar lotes de documentos para processamento em uma pasta do Cloud Storage.
Consulte Como processar a resposta para mais informações sobre como a Document AI Toolbox ajuda no pós-processamento.
Exemplos de código
Os exemplos de código abaixo demonstram como usar a Document AI Toolbox.