Utilizando Document AI via API 📄
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:
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:
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:
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%):
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! 📢