Dicas sobre desenvolvimento de automação com visão computacional
Tags: rpa, braziliandevs, automation, visaocomputacional
Published: 2024-03-17 19:50:16

Existem diversos casos de uso em que o desenvolvimento das automações RPA podem ter um melhor resultado utilizando o apoio da linguagem de programação Python e a tecnologia [visão computacional](https://blog.botcity.dev/pt-br/2023/11/28/visao-computacional/).

## O que é visão computacional
A visão computacional é uma tecnologia que utiliza-se da Inteligência Artificial, Aprendizado de Máquina (ou Machine Learning) e reconhecimento óptico de caracteres (também conhecido como OCR) para desenvolver sistemas que possam interpretar e classificar imagens.

Por trás dessa tecnologia, existem algoritmos capazes de entender padrões apenas visualizando imagens e vídeos. E isso pode ser um grande poder para nos ajudar a automatizar tarefas e processos que precisam acessar sistemas que nem sempre nos permitem acessar o backend da aplicação desktop ou ainda a DOM (Document Object Model de uma página HTML) de uma página Web e temos que partir para a visão computacional.

## Como usar a visão computacional para desenvolver automações
Vou deixar aqui como sugestão, um conteúdo bem interessante em formato de curso rápido com o passo a passo de como desenvolver a sua automação com visão computacional: [Criando automações com visão computacional](https://developers.botcity.dev/academy/pybr2022/).

E como dica extra, vou deixar aqui também disponível acesso para a [documentação](https://documentation.botcity.dev/pt/studio/vscode/) de maneira gratuita de uma extensão que está em pré-release que você pode utilizar no Visual Studio Code para desenvolver suas automações com o apoio dessa tecnologia, visão computacional.

## Dicas sobre como resolver problemas ao desenvolver com visão computacional

### Elemento não encontrado
Algo que pode ajudar na investigação de elementos não encontrados pela visão computacional, é utilizar o seguinte comando logo após chamar a função find() e antes de executar operações como o click():
```python
bot.save_screenshot("debug_find.png")
```

Isso pode te ajudar a analisar como estava a tela e talvez te dar um direcionamento de qual é o motivo do elemento não estar sendo encontrado.

### Resolução da tela
Outra questão muito importante dentro do desenvolvimento com visão computacional é a resolução da tela. Caso esteja desenvolvendo uma automação que utiliza máquina virtual [acessando via RDP](https://blog.botcity.dev/pt-br/2024/03/01/como-construir-uma-automacao-desktop-em-python-para-acessar-vms-por-conexao-rdp/), você pode seguir algumas dicas do artigo linkado.

### Sugestões para avaliar problemas
Você pode analisar os pontos a seguir para descobrir o que pode estar acontecendo nas falhas do seu robô:
- Talvez o período configurado no parâmetro `waiting_time` da função `find()` esteja muito curto e isso pode acontecer caso ainda não tenha dado tempo de carregar a tela, então você poderia ajustar esse item;
- Talvez o sistema sendo automatizado possua algum bloqueio contra captura de telas (esse tipo de problema pode ser bastante comum em telas que envolvam Bancos, por exemplo);
- Talvez algum outro elemento esteja na frente do elemento buscado, então a sugestão de tirar um print da tela citada acima, pode ajudar a entender se isso está acontecendo;
- Pode ser que o recorte foi feito com outra resolução que não a do sistema atual. Lembre-se de tentar desenvolver num ambiente igual ou ao menos o mais parecido possível, principalmente ao que se refere às configurações de resolução;
- Verifique se você está fazendo os recortes necessários em um ambiente com tema dark, por exemplo, porque isso pode fazer diferença se em outro momento, o ambiente estiver com o tema light;
- E outra dica seria verificar a acurácia do algoritmo de visão computacional. Na função `find()`, ajuste, se necessário, o parâmetro `matching`. Ele costuma estar com o valor máximo 0.97. Esse valor poderia ser ajustado a, no mínimo, 0.90. Isso pode ajudar nas questões levantadas neste tópico. Mas cuidado para não diminuir muito mais que isso, a ponto do algoritmo perder a sua eficiência para encontrar o elemento que precisa ser identificado.

## Já fez alguma automação com visão computacional?
Compartilhe suas experiências com essa forma de desenvolvimento e, caso tenha passado por algum problema ou erro, compartilhe também como solucionou ocorrido. Sempre bom aprender com experiências diferentes.

E não deixe de participar da [comunidade](https://documentation.botcity.dev/pt/community/) para mais trocas e conteúdos.