Skip to main content

Vizion

RPA em Python para página no navegador e tela do Windows. Você aponta o alvo — recorte PNG, palavra visível ou seletor Selenium — e o Vizion tenta achar: primeiro no DOM, depois por imagem, depois por OCR.

from vizion import Bot

bot = Bot()                       # área de trabalho
# bot = Bot(webdriver.Chrome())   # Chrome já aberto

bot.click(image="ok.png", timeout=10)
bot.click(text="Salvar", sendtext="{enter}")
bot.click(anchor="linha.png", target="editar.png")
bot.wait(image="spinner.png", timeout=30, gone=True)
bot.keyboard("Ctrl+S")
print(bot.result())

Código em inglês (click, timeout, image). Só este README está em português.

Instalação

pip install pyvizion

O pacote no PyPI chama-se pyvizion; no código você continua com from vizion import Bot.

Sobe Selenium, OpenCV, EasyOCR, Tesseract (wrapper), PyAutoGUI, mss e, no Windows, pywin32. O executável do Tesseract no sistema continua sendo um requisito do SO se você for usar esse backend.

Como o alvo é encontrado

No navegador a ordem é:

  1. seletor DOM (by + value)
  2. texto visível no DOM
  3. iframe / shadow DOM
  4. recorte OpenCV (várias escalas, HiDPI)
  5. bordas Canny (tema claro/escuro)
  6. ORB + homografia
  7. OCR (EasyOCR, com Tesseract de reserva)
  8. scroll da página e nova passada

No desktop os passos de DOM somem: recorte → Canny → ORB → OCR.

O clique no browser usa coordenada CSS (PNG vs innerWidth), não pixel cru da screenshot. No desktop, pixel físico do mss vira coordenada lógica do SO.

Navegador

from selenium import webdriver
from selenium.webdriver.common.by import By
from vizion import Vizion, VizionConfig

pagina = Vizion.web(
    webdriver.Chrome(),
    config=VizionConfig(default_timeout=15, show_overlay=True),
)
pagina.get("https://intranet")
pagina.find_and_click(by=By.ID, value="user", template="user.png", text="Usuário")
pagina.wait_url("/home")

find_and_click aceita seletor, recorte e texto ao mesmo tempo: se o DOM falhar, a visão e o OCR entram.

Área de trabalho

from vizion import Vizion, VizionConfig

tela = Vizion.desktop(config=VizionConfig(use_virtual_mouse=True))
tela.register_image("ok", "ok.png")
tela.click_image("ok")
tela.click_text("Confirmar")
tela.keyboard("Ctrl+S")

use_virtual_mouse=True (Windows) clica sem deixar o cursor no alvo.

Do desktop dá para abrir o Chrome e continuar no mesmo catálogo de imagens:

tela = Vizion.desktop()
pagina = tela.open_browser("https://intranet")
pagina.find_and_click(by="id", value="user")
tela.click_image("ok.png")

Vários alvos iguais

Quando o mesmo botão aparece várias vezes, passe uma âncora única e o recorte do botão:

bot.click(anchor="aviso.png", target="ok.png")
# ou
tela.click_relative("aviso.png", "ok.png", max_distance=200)

Lote de passos

bot.run([
    {"image": "menu.png", "timeout": 8},
    {"anchor": "linha.png", "target": "editar.png"},
    {"text": "Salvar", "sendtext": "{enter}"},
    {"type": "keyboard", "command": "Ctrl+S"},
])

O motor avançado (Vizion.web / Vizion.desktop) expõe o mesmo lote em execute_tasks.

Ajuste

VizionConfig controla timeout, limiar OpenCV, overlay, idiomas OCR, mouse virtual. print(doctor()) lista o que está instalado.

No IDE, help(VizionDriver.find_and_click) mostra o contrato completo (seletor, recorte, OCR, overlay).

Licença

Software proprietário. Ver LICENSE.

Desenvolvido por Josias Azevedo da Silva.

Metadata

Release files for pyvizion 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyvizion 0.3.0
File Size Uploaded
pyvizion-0.3.0.tar.gz 55.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyvizion 0.3.0
File Interpreter ABI Platform
pyvizion-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 119.5 kB

Release files / pyvizion-0.3.0.tar.gz

Download URL pyvizion-0.3.0.tar.gz
Size 55.9 kB
Tags Source
SHA-256 checksum
How to use checksums
508df580fc823b70c5e87ea8ede95d439b634409f2fc33d6c50c94f6588606c0
BLAKE2b-256 checksum
How to use checksums
cde7d5385a5ff4c35fcccbdcb320e3e850bba843fb67483953c7dd9cb14f60a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release files / pyvizion-0.3.0-py3-none-any.whl

Download URL pyvizion-0.3.0-py3-none-any.whl
Size 63.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f057cabbe5e593f307f2d6c098f5e4a0a0ea94728d3a53e9fe29a0b984fb1c58
BLAKE2b-256 checksum
How to use checksums
8db865debf08b2ab963788481e56d03d2b6fedc307cb53b97a7a6eb43a0e3c38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.0

Release history Release notifications | RSS feed

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

This release

0.3.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page