Num dos últimos workshops em que participei como orador, apresentei uma série de casos de automação de processos financeiros. O primeiro desses casos consiste no reconhecimento de dados a partir de documentos originalmente em papel. Algo que era extremamente difícil e dispendioso de desenvolver até há poucos anos atrás, pode ser hoje facilmente implementado em qualquer empresa, recorrendo à Plataforma Power da Microsoft e ao seu add-in AI Builder, que incorpora modelos de inteligência artificial de fácil integração nas aplicações e processos.
Business case: qual o interesse de recolher dados de faturas ou outros documentos?
A principal razão económica para a recolha de dados a partir de documentos prende-se com o fornecimento de estrutura a dados não estruturados. Em muitas empresas, há equipas que investem muito tempo humano na leitura visual de documentos e no respetivo “data entry” nos mais diversos sistemas:
- A contabilidade tem de analisar faturas, recibos e outros documentos para os classificar e lançar em sistemas
- Os recursos humanos têm de ler e analisar CV e cartas de apresentação para selecionar candidatos a emprego
- As seguradoras têm de ler documentos referentes a participação de sinistros.
Os dados, sob a forma estruturada (por simplificação, dizemos que são estruturados quando estão organizados em tabelas), permitem automatizar grande parte do trabalho que é feito manualmente. É possível classificar documentos contabilísticos facilmente, detetar fraudes ou erros nos lançamentos, avaliar uma candidatura ou reclamação, etc.
E isso representa o nosso “business case”, a vantagem económica.
Arquitetura de um modelo de extração de dados de documentos
A arquitetura escolhida para a apresentação consiste no seguinte, resumidamente:
- Digitalização do documento através de um telemóvel ou scanner
- Carregamento do documento numa pasta (Document Folder) do SharePoint
- Em alternativa, na aplicação canvas, desenvolvida especificamente para a demonstração, o utilizador pode carregar individualmente cada um dos documentos
- Utilização de um fluxo de automação Power Automate que dispara quando um novo documento é carregado por qualquer uma das vias e extração dos dados identificados no modelo de reconhecimento
- O mesmo fluxo armazena os dados extraídos em tabelas do Dataverse (em alternativa, podemos usar o SharePoint) para que possam ser utilizados noutras aplicações e notifica o utilizador por e-mail dos resultados anexando o ficheiro processado.
Portanto, em termos práticos, digitaliza-se uma fatura no ponto de partida e obtém-se o seguinte, como resultado: um e-mail de notificação e uma tabela com os dados extraídos.
O modelo de extração de dados AI Builder
No coração desta solução está o modelo de extração de dados. Para a integração direta com a nossa aplicação Power Apps, SharePoint, Outlook e outras ferramentas do Office, optámos pelo AI Builder.
O AI Builder facilita todo o processo de treino e teste do modelo de extração. É uma ferramenta no-code, que pode ser utilizada por qualquer um. Literalmente, qualquer pessoa pode treinar modelos com o AI Builder, com nenhum conhecimento de código, o que o torna muito interessante para os “business users”.
No AI Builder existem modelos prontos a aplicar para extrair dados de documentos, exatamente como se pretende neste caso. Assim, o nosso trabalho consiste em.
- Treinar o modelo, mostrando-lhe uma série de documentos e indicando visualmente quais são os campos a extrair e como se designam
- Testar o modelo, carregando documentos que ele ainda não viu e avaliar a sua eficácia. Qual a percentagem de campos que é capaz de reconhecer corretamente no total?
- Afinar o modelo, se possível, tentando melhorar a sua eficácia.
Demonstração prática
Vejamos como funcionou a demonstração com a extração de faturas do Pingo Doce originalmente em papel. Eis o exemplo de uma fatura:
Como se pode ver nesta imagem, a fatura não é facilmente legível. Parece que esteve armazenada durante uns dias num bolso ou carteira e parece um pouco danificada. Mesmo que fosse lida por um humano, seria sempre difícil reconhecer todos os campos.
Usando esta e outras faturas do mesmo formato, podemos treinar o modelo do AI Builder. Aqui podemos optar por um modelo pré-treinado ou criar um modelo desenvolvido especificamente para o nosso caso. Em ambos os cenários, o processo é idêntico ao descrito acima: vamos mostrar-lhe uma série de documentos e treiná-lo para que aprenda a reconhecer os campos que nos interessam.
Note-se que apesar do formato das faturas ser idêntico, podem ocorrer variações. Uma fatura pode ser mais ou menos extensa, conter mais ou menos produtos. As taxas de IVA podem diferir de documento para documento e determinadas taxas podem estar presentes num documento e ausentes noutro. Portanto, não é possível criar-se um modelo determinístico (com base em regras).
O modelo desenvolvido foi treinado especificamente para estes documentos partindo do modelo seguinte:
Os resultados realizados numa série de 16 faturas para o treino do modelo foram os seguintes:
A eficácia do modelo é de 85%, o que é razoável. Isto significa que nem sempre vamos ter resultados corretos com total precisão, mas com algumas correções humanas (15% neste caso) teremos o resultado pretendido. No painel do lado direito, é possível verificar que alguns campos apresentam resultados melhores do que outros.
Por exemplo, o campo invoiceDate tem uma precisão de 99%, o que é quase perfeito. O modelo extrai quase na perfeição a data da fatura. Outros, como é o caso do nome do fornecedor (vendorNome) e a tabela de produtos são mais difíceis.
O campo produtos em particular é bastante difícil porque um documento pode conter um ou vários produtos e os resultados são armazenados numa tabela com um número de linhas variável.
Note-se que algo idêntico acontece com o campo IVA cujo resultado também é uma tabela. As 3 taxas de IVA podem ou não estar presentes em cada um dos documentos, mas aqui, talvez porque existem apenas 3 taxas, o modelo obtém uma eficácia superior (91% de precisão).
Operacionalização do modelo
Para colocar este modelo em funcionamento num cenário real, podemos usar uma Power Apps ou um fluxo Power Automate. Na nossa demonstração, optámos por utilizar o Power Apps para a interface do utilizador e o Power Automate para a execução do modelo e notificação do utilizador por e-mail.
Em termos de interface, temos algo deste género:
Nesta imagem, podemos ver uma fatura a ser carregada e a respetiva extração dos dados. O carregamento da fatura para a pasta do SharePoint faz disparar o fluxo de automação, que por sua vez recolhe os dados.
O utilizador tem a possibilidade de visualizar os dados recolhidos e de os validar, se estiverem corretos. Caso seja necessário fazer-se alguma correção manual, isso também é possível através da interface da aplicação.
No último screen da aplicação, vemos todos os documentos anteriormente carregados e a respetiva extração.
Quanto ao fluxo de automação, desenvolvido com o Power Automate, a sua representação de alto nível é a seguinte:
Nesta imagem, mostro apenas os 3 primeiros passos. O fluxo é bastante mais extenso e precisaria de o abordar em detalhe num outro post (caso os leitores demonstrem interesse).
Finalmente, os dados são carregados em tabelas, podem ser tabelas de uma base de dados Dataverse ou simples ficheiros Excel e os resultados de cada documento podem ser enviados opcionalmente por e-mail para um utilizador que os validará. O e-mail poderá ser idêntico ao seguinte: