Quando usar
Quando o sistema não tem API (ERP antigo, Oracle Forms, Citrix, Totvs, Delphi ou app desktop legado) e você precisa clicar e digitar como se fosse um operador humano.
O pyvizion olha a tela como uma pessoa olharia: encontra um botão ou uma palavra, clica em cima e digita o que você mandar. Serve para automatizar sistemas que não têm API, como ERPs antigos, Oracle Forms, Delphi, Totvs e Citrix.
pip install pyvizion
O pyvizion é uma biblioteca Python leve e determinística. Você instala com pip, importa no seu script e automatiza telas de sistemas no Windows (ERP, Oracle Forms, Delphi, Totvs e Citrix) sem depender de APIs ou plataformas pesadas.
Quando o sistema não tem API (ERP antigo, Oracle Forms, Citrix, Totvs, Delphi ou app desktop legado) e você precisa clicar e digitar como se fosse um operador humano.
Localiza botões recortados ou palavras escritas na tela, clica com precisão milimétrica e preenche campos em sequência. Também espera telas carregarem antes de agir.
Não é um robô de IA imprevisível. É automação determinística por visão de imagem e OCR: você tem 100% de controle de cada clique e digitação do seu robô.
Você escreve em poucas linhas o mesmo caminho que faria manualmente com o teclado e o mouse. O pyvizion executa cada etapa em sequência lógica:
Você escolhe o alvo: pode ser a foto de um botão recortado (imagem) ou a palavra escrita nele (ex.: "Confirmar").
Ele examina a tela do computador instantaneamente e descobre onde o botão ou palavra está aparecendo.
O clique do mouse vai direto ao centro do que encontrou, com precisão no lugar certo e sem errar o alvo.
Preenche campos com números ou textos, pula de campo com a tecla Tab e aperta Enter se você mandar.
Se a tela demorar para carregar, ele espera com segurança. E se algo sumir, tenta de novo antes de desistir.
Veja exatamente como o pyvizion localiza textos na tela, fixa a caixa de OCR, move o cursor virtual e aciona o clique no sistema legado.
Entenda como cada biblioteca atua no ciclo determinístico de automação: da captura da tela via mss, passando pelo processamento com OpenCV e Tesseract, até a execução com PyAutoGUI e o controle de retry com timeout.
O mss tira prints diretos da memória de vídeo em ~5 ms, sem travar o processador e com suporte total a múltiplos monitores.
O OpenCV faz casamento de padrões (template matching) para achar botões recortados. O Tesseract OCR lê caracteres e palavras na tela.
Calcula o centro das coordenadas detectadas e dispara cliques físicos ou virtuais (sem mexer o mouse), além de digitação com macros.
Se o elemento não estiver pronto, repete o ciclo de captura e busca até o timeout ou retorna False sem derrubar o robô.
Construído para ser leve, confiável e focado na realidade dos computadores corporativos no Windows.
pyvizion
├── 1. Preparar ambiente
│ ├── pip install pyvizion
│ └── instalar Tesseract OCR (UB-Mannheim)
├── 2. Definir alvos na tela
│ ├── Imagem: recorte PNG do botão (salvar.png)
│ └── Texto: palavra a ser lida via OCR ("Confirmar")
├── 3. Executar ações
│ ├── click_image / click_text
│ ├── sendtext com macros: "admin{tab}senha{enter}"
│ └── esperas: wait_until_found / wait_until_gone
└── 4. Tratar o retorno
├── True: ação executada com sucesso
├── False / None: elemento não encontrado (tratar no código)
└── Exception: arquivo inexistente ou Tesseract não instalado
Leva cerca de 10 minutos. Você só precisa do Python 3.9+ instalado no Windows. Todos os comandos abaixo são executados no terminal (PowerShell ou Prompt de Comando).
Baixa a biblioteca e suas dependências diretamente do PyPI oficial.
pip install pyvizion
É o motor que lê os textos na tela. Baixe pelo instalador oficial para Windows:
UB-Mannheim Tesseract OCR.
Mantenha a pasta padrão (C:\Program Files\Tesseract-OCR).
Se for automatizar telas em português, marque o pacote de idioma Portuguese durante a instalação.
O pyvizion vem com uma ferramenta de diagnóstico integrada que valida se o Tesseract e as bibliotecas estão prontos.
python -m pyvizion doctor
Abra a tela do sistema, aperte Win + Shift + S e recorte apenas o botão (ex.: menu.png).
Salve o recorte numa pasta imagens ao lado do seu script.
Você também pode tirar print pelo próprio pyvizion:
python -m pyvizion screenshot tela.png
Crie um arquivo robo.py. Cada linha é uma instrução sequencial, na mesma ordem que você faria manualmente:
from pyvizion import Vizion
# Inicia o robô apontando a pasta de imagens e o idioma do OCR
vz = Vizion({"image_folders": ["imagens"], "tesseract_lang": "por"})
# Clica no botão pela imagem recortada
vz.click_image("menu.png")
# Clica onde estiver escrito "Relatórios" na tela
vz.click_text("Relatórios")
# Clica no campo "Código", digita 12345 e aperta Enter
vz.click_text("Código", sendtext="12345{enter}")
Deixe o aplicativo visível na tela e rode o script. Para parar a execução a qualquer instante (fail-safe de segurança), basta jogar o mouse para o canto superior esquerdo da tela!
python robo.py
O parâmetro sendtext aceita atalhos como {tab}, {enter} e {ctrl}a.
O uso de macros é 100% opcional. Se preferir, use apenas texto direto normal.
# Digita texto simples diretamente no campo clicado
vz.click_text("Código", sendtext="12345")
# Ou separa em duas etapas explícitas
vz.click_text("Código")
vz.type_text("12345")
Sem chaves, o texto é digitado de forma direta e literal, sem interpretação de macros.
# Preenche um campo, aperta Tab e digita no próximo
vz.click_text("Usuário", sendtext="admin{tab}senha{enter}")
# Seleciona todo o conteúdo anterior, apaga e digita
vz.click_text("Código", sendtext="{ctrl}a{del}12345")
Ideal para fluxos em ERPs onde a navegação entre campos é feita com Tab e confirmações com Enter.
| Objetivo | Sintaxe no sendtext |
Comportamento |
|---|---|---|
| Digitar em campo vazio | "12345" |
Digita o valor diretamente |
| Limpar e redigitar | "{ctrl}a{del}12345" |
Seleciona tudo, deleta e digita o novo valor |
| Ir para o próximo campo | "12345{tab}" |
Digita e dispara a tecla Tab |
| Confirmar formulário | "12345{enter}" |
Digita e dispara a tecla Enter |
| Preencher múltiplos campos | "01/01/2026{tab}31/01/2026" |
Preenche data inicial, pula com Tab e preenche data final |
| Pular vários campos | "{tab*3}" |
Repete a tecla Tab 3 vezes consecutivas |
| Pausa entre comandos | "admin{tab}{wait 1}senha" |
Aguarda 1 segundo antes de continuar a digitar |
| Teclas especiais comuns | {esc}, {backspace}, {f1}...{f12}, {up}, {down} |
Navegação e atalhos de função padrão do teclado |
Padrões comuns que resolvem a maioria das automações corporativas. Copie o trecho, ajuste o nome do arquivo ou texto e execute.
Em vez de colocar time.sleep(10) no chute, espere o elemento aparecer ou o indicador de carregamento sumir:
# Espera até 15 segundos o botão aparecer e clica
vz.click_image("salvar.png", wait_until_found=True, wait_timeout=15)
# Espera até 60 segundos a ampulheta ou loading sumir
vz.wait_until_gone("ampulheta.png", timeout=60)
Preencha formulários inteiros em sequência rápida simulando o comportamento de digitação humano:
# Clica no campo de login e navega com Tab
vz.click_text("Usuário", sendtext="admin{tab}senhaForte2026{enter}")
# Limpa campo pré-preenchido antes de digitar
vz.click_text("Código", sendtext="{ctrl}a{del}99281")
Se um menu dropdown fechar ou um clique falhar, o backtrack reexecuta o passo anterior e tenta de novo:
# Se "Relatórios" não for encontrado, reabre "Menu" e tenta novamente
vz.click_image("menu.png", backtrack=True)
vz.click_text("Relatórios", backtrack=True)
Restringir a busca à área da janela do ERP acelera a captura e evita clicar em outro aplicativo aberto:
# Traz a janela para frente e obtém suas coordenadas
vz.focus_window("Oracle Applications")
area = vz.window_region("Oracle Applications")
# Busca OCR apenas dentro da janela do Oracle
vz.click_text("Salvar", region=area)
O pyvizion mantém os mesmos métodos clássicos que você já conhece no ecossistema Python, mas com arquitetura moderna, alta velocidade e robustez para ambientes Windows.
| Recurso / Cenário | PyAutoGUI puro / bot-vision-suite 1.3 | pyvizion 1.0.8 (Atual) |
|---|---|---|
| Velocidade de captura de tela | Lenta (30 a 100 ms por captura com PIL) | ~5 ms por captura com mss |
| Zoom do Windows (DPI 125% / 150%) | Falha frequentemente por distorção de escala | Resiliente: lida com escalonamento DPI sem quebrar |
| Busca por texto (OCR) | Lê a tela inteira a cada iteração | Permite restringir a region (~6× mais rápido) |
| Múltiplos monitores | Problemas com coordenadas negativas no monitor secundário | Totalmente compatível com multi-monitores |
| Controle de janelas | Não possui controle nativo de janelas | focus_window e window_region integrados |
| Clique virtual (sem mover mouse) | Não suportado | use_virtual_mouse nativo no Windows |
| Diagnóstico de ambiente | Nenhum diagnóstico | python -m pyvizion doctor integrado |
Soluções para as situações mais comuns durante a configuração e execução.
TesseractNotFoundError. Como resolver?O Tesseract OCR não está instalado ou não está no caminho padrão. Baixe pelo instalador UB-Mannheim para Windows e mantenha o caminho sugerido (C:\Program Files\Tesseract-OCR). Depois, rode python -m pyvizion doctor no terminal para confirmar.
Tire o print direto da tela na mesma resolução em que o robô vai rodar. Recorte apenas o ícone ou texto do botão, sem incluir bordas variáveis ou fundos que mudam. Se o botão possuir versões diferentes (ativo/inativo/hover), use vz.click_any(["btn_v1.png", "btn_v2.png", "Salvar"]).
O idioma padrão do Tesseract é inglês. Ao iniciar o pyvizion, configure o idioma português: Vizion({"tesseract_lang": "por"}). Lembre-se de ter marcado o pacote de idioma Portuguese durante a instalação do Tesseract.
O pyvizion possui utilitários CLI incluídos. Execute python -m pyvizion pick e clique nos dois cantos da área desejada para ver a tupla region=(x, y, largura, altura). Para acompanhar a posição do mouse em tempo real, use python -m pyvizion position.
Por padrão o pyvizion usa colagem rápida via clipboard para agilizar a digitação. Algumas sessões remotas bloqueiam o clipboard compartilhado. Basta configurar o modo de digitação caractere por caractere: Vizion({"typing_mode": "type"}).
Sim! Ativando o modo de clique virtual: Vizion({"use_virtual_mouse": True}) (exclusivo para Windows), o robô envia mensagens Win32 de clique sem mover o ponteiro físico do mouse. Apenas certifique-se de que a janela do app não seja minimizada nem totalmente encoberta.
Funciona com limitações: no Linux e macOS não há suporte a clique virtual sem mover o mouse nem controle de janelas Win32. O foco principal e suporte completo do pyvizion é o ambiente Windows corporativo.