Utilizando Document AI via API 📄

Amanda Furtado Brinhosa
google-cloud-brasil
4 min readJun 12, 2023

Quando se fala em extração de insights de documentos com IA, a primeira ferramenta que vem à tona, para mim, é a Document AI. Aqui no blog já tivemos um artigo introdutório sobre a solução. O objetivo do texto de hoje é aprofundar um pouco mais, trazendo alguns exemplos de utilização via API.

O que você vai aprender com esse artigo:

  • Como criar um processador
  • Como fazer uma requisição
  • Como avaliar a resposta

Criando processador de OCR

Para exemplificar, vamos começar criando um processador de OCR (vamos usar o mesmo documento mostrado via interface no artigo anterior, que antes foi passado pelo processador de formulários). A Document AI, semelhante a boa parte dos serviços Google Cloud, fornece uma API que pode ser consultada via REST ou bibliotecas de cliente em C#, Go, Java, Node.js, PHP, Python e Ruby. Para demonstrar de forma mais agnóstica, vamos utilizar a versão REST e os comandos curl.

Para começar vamos ativar a Cloud Shell, que é uma máquina virtual com acesso a recursos Google Cloud via linha de comando. Clique em Activate Cloud Shell no topo da sua console.

Após provisionamento, ative a API do Document AI:

$ gcloud services enable documentai.googleapis.com

Ao dar enter, irá aparecer a seguinte mensagem e basta autorizar:

Autorize Cloud Shell: selecione autorizar para permitir as chamadas

Agora, vamos montar o JSON para a criação do nosso processador de OCR:

$ echo ‘{“type”: “OCR_PROCESSOR”, “displayName”: “teste-ocr”}’ > request.json

A seguir, temos a requisição que vai criar o processador (lembre-se de alterar o SEU_PROJECT_ID):

$ curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://us-documentai.googleapis.com/v1/projects/{SEU_PROJECT_ID}/locations/us/processors"

Para conferir, você pode checar na própria interface:

Interface da Document AI que mostra os processadores criados

Fazendo uma requisição

Existem duas formas de realizar uma requisição: online, a qual é síncrona e aceita um documento por vez, ou em lote, que além de assíncrona, aceita vários documentos em uma única requisição.

Para fins de teste, vamos usar o seguinte PDF:

$ gsutil cp gs://cloud-training/gsp924/health-intake-form.pdf .

Assim como anteriormente, vamos montar primeiro o JSON (a lista completa de parâmetros). Para a API, devemos codificar conteúdo do arquivo PDF em base64:

$ echo '{"inlineDocument": {"mimeType": "application/pdf","content": "' > temp.json
base64 health-intake-form.pdf >> temp.json
echo '"}}' >> temp.json
cat temp.json | tr -d \\n > request.json

Ufa! Agora sim podemos pedir para a API ler o nosso documento (de forma síncrona), lembrando de substituir o projeto e também o identificador do processador, que você pode encontrar nos detalhes do processador via interface:

$ curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://us-documentai.googleapis.com/v1beta3/projects/{SEU_PROJECT_ID}/locations/us/processors/{ID_PROCESSADOR}:process > output.json

Avaliando a resposta

Apesar de estarmos avaliando para o caso de OCR, vale ressaltar que a resposta vai variar de processador para processador e na documentação há alguns exemplos.

Como o JSON resultante é cheeeeio de informações, vamos avaliar o texto extraído:

$ cat output.json | jq -r ".document.text"

O resultado:

Texto em inglês extraído do documento PDF avaliado pelo processador de OCR

Podemos também checar outras informações retornadas, como o idioma que foi detectado associado a uma página específica:

$ cat output.json | jq -r “.document.pages[0].detectedLanguages”

Resultado nesse caso foi inglês com um grau de confiança de 98%):

JSON de resposta sobre o idioma detectado e o grau de confiança associado

Conclusão 📝

Neste artigo exploramos um pouco mais sobre a ferramenta Document AI do ponto de vista da API. Apesar da visão totalmente agnóstica que exemplificamos aqui, também é possível usar algumas linguagens, como Python para este trabalho.

Quer saber mais sobre Document AI? Veja a trilha de aprendizado de Document AI no Skills Boost 😀

Deixe sua sugestão sobre o que mais gostaria de ler aqui! 📢

--

--