Skip to main content

Biblioteca Python avançada para automação de interface gráfica com OCR multi-técnica, detecção de imagens robusta e sistema de backtrack inteligente

Project description

Bot Vision Suite

Python License Status PyPI

Bot Vision Suite é uma biblioteca Python avançada para automação de interface gráfica que combina OCR avançado com múltiplas técnicas de processamento de imagem e detecção robusta de imagens com variações de escala para garantir funcionamento independente da resolução da tela.

🚀 CARACTERÍSTICAS DESTACADAS

🔄 SISTEMA DE BACKTRACK INTELIGENTE

  • Backtrack entre métodos individuais: Se uma ação falhar, automaticamente reexecuta a anterior
  • Backtrack em listas de tarefas: Navegação inteligente entre tarefas com retry automático
  • Sessões de backtrack: Controle manual de sessões para automações complexas
  • Configurável por método: Ative/desative backtrack para cada ação individualmente

🖼️ DETECÇÃO DE IMAGENS ROBUSTA

  • Variações de escala automáticas: Busca imagens em diferentes tamanhos (0.8x a 1.2x)
  • Independência de resolução: Funciona em qualquer resolução de tela
  • Parâmetro specific:
    • specific=True: Busca apenas na região definida (mais rápido)
    • specific=False: Busca na tela inteira + variações de escala (mais flexível)
  • Múltiplas tentativas: Sistema de retry com ajuste automático de confiança

🔍 OCR AVANÇADO COM MÚLTIPLAS TÉCNICAS

  • 28+ técnicas de pré-processamento otimizadas para diferentes tipos de texto
  • Processamento HSV: Melhora detecção em fundos coloridos (62% confiança)
  • Thresholding adaptativo: Ideal para texto em fundos variados
  • Processamento LAB: Equalização de luminosidade para melhor contraste
  • Máscaras de cor: Detecção específica em fundos rosa, cinza, etc.
  • Combinações otimizadas: Mescla das melhores técnicas para máxima precisão

📦 INSTALAÇÃO

pip install bot-vision-suite

Pré-requisitos - Tesseract OCR

A biblioteca detecta automaticamente o Tesseract OCR. Se não estiver instalado:

Windows:

# Baixe de: https://github.com/UB-Mannheim/tesseract/wiki
# Instale em: C:\Program Files\Tesseract-OCR\
# Adicione ao PATH do sistema

Linux:

sudo apt-get install tesseract-ocr

macOS:

brew install tesseract

🎯 USO RÁPIDO

Exemplo Básico com Backtrack

from bot_vision import BotVision

bot = BotVision()

# Backtrack automático entre métodos
success1 = bot.click_image('button1.png', backtrack=True)
success2 = bot.click_text('Save', backtrack=True)      # Se falhar, volta pro button1
success3 = bot.click_text('Confirm', backtrack=True)   # Se falhar, volta pro Save

Sessão de Backtrack Manual

bot = BotVision()

# Inicia sessão de backtrack
bot.start_task_session()

bot.click_image('button1.png', backtrack=True)
bot.click_text('agent', backtrack=True)
bot.click_text('Claude Sonnet 4', backtrack=True)

# Finaliza e mostra estatísticas
successful, total = bot.end_task_session()
print(f"Sucesso: {successful}/{total}")

🔧 FUNCIONALIDADES COMPLETAS

1. DETECÇÃO DE IMAGENS COM VARIAÇÕES DE ESCALA

# Busca imagem com variações de tamanho (independente da resolução)
success = bot.click_image('button.png',
                         region=(100, 100, 200, 50),
                         confidence=0.9,
                         specific=False,        # False = permite buscar na tela inteira
                         backtrack=True,        # Volta para a tarefa anterior
                         max_attempts=3)

# Parâmetros explicados:
# specific=False: Busca na tela inteira + variações de escala (0.8x a 1.2x)
# specific=True:  Busca apenas na região definida (mais rápido)
# backtrack=True: Se falhar, reexecuta ação anterior automaticamente

2. OCR AVANÇADO COM FILTROS

# Busca texto com filtros específicos
success = bot.click_text('Login',
                         region=(50, 50, 300, 100),
                         filter_type='letters',        # 'letters', 'numbers', 'both'
                         occurrence=1,                 # Primeira ocorrência
                         confidence_threshold=75.0,    # 75% de confiança
                         backtrack=True,
                         sendtext='usuario123')        # Digita após clique

# Comandos especiais em sendtext:
# {ctrl}a{del}Novo texto{enter} = Ctrl+A, Delete, digita texto, Enter

3. IMAGENS RELATIVAS (ANTI-DUPLICAÇÃO)

# Busca target próximo a uma âncora específica
success = bot.click_relative_image(
    anchor_image='warning_icon.png',    # Imagem âncora (única na tela)
    target_image='ok_button.png',       # Imagem target (pode ter várias)
    max_distance=200,                   # Máximo 200px da âncora
    confidence=0.9,
    backtrack=True
)

# Útil quando há múltiplas opções iguais na tela
# Exemplo: Várias imagens "OK" mas você quer a que está perto do "Warning"

4. COMANDOS DE TECLADO COMPLETOS

# 100+ comandos pré-definidos
bot.keyboard_command('Ctrl+S')          # Salvar
bot.keyboard_command('F7')              # Clear Block (Oracle Forms)
bot.keyboard_command('Alt+Tab')         # Trocar janela

# Lista completa disponível:
commands = bot.get_available_keyboard_commands()
print(f"Total de comandos: {len(commands)}")

5. FUNÇÕES DE CONVENIÊNCIA

from bot_vision import (find_text, click_text, click_image, click_at,
                        find_relative_image, click_relative_image,
                        click_coordinates, type_text_standalone,
                        keyboard_command_standalone)

# Uso rápido sem instanciar classe
success = click_text("Confirmar", region=(200, 200, 600, 400), backtrack=True)
success = click_image("button.png", confidence=0.9, backtrack=True)
success = click_relative_image("anchor.png", "target.png", backtrack=True)

📋 CONFIGURAÇÃO DE TAREFAS AVANÇADA

Formato Completo de Task

tasks = [
    # 1. Busca de imagem com variações de escala
    {
        'image': 'button.png',
        'region': (100, 100, 200, 50),
        'confidence': 0.9,
        'specific': False,              # False = permite variações de escala
        'backtrack': True,              # Retry automático
        'delay': 1,
        'mouse_button': 'left'          # 'left', 'right', 'double', 'move_to'
    },

    # 2. Busca de texto OCR avançado
    {
        'text': 'Login',
        'region': (50, 50, 300, 100),
        'occurrence': 1,                # Primeira ocorrência
        'char_type': 'letters',         # Filtro de caracteres
        'backtrack': True,              # Retry automático
        'delay': 0.5,
        'sendtext': 'usuario123'        # Digita após clique
    },

    # 3. Imagem relativa (âncora + target)
    {
        'type': 'relative_image',
        'anchor_image': 'warning_icon.png',    # Imagem âncora única
        'target_image': 'ok_button.png',       # Imagem target próxima
        'max_distance': 200,                   # Distância máxima em pixels
        'confidence': 0.9,
        'target_region': (0, 0, 800, 600),    # Região para buscar target (opcional)
        'specific': True,
        'backtrack': True,
        'delay': 1
    },

    # 4. Clique em coordenadas específicas
    {
        'type': 'click',
        'x': 500,                              # Coordenada X
        'y': 300,                              # Coordenada Y
        'mouse_button': 'right',               # 'left', 'right', 'double', 'move_to'
        'delay': 0.5,
        'backtrack': False
    },

    # 5. Digitação direta de texto
    {
        'type': 'type_text',
        'text': 'Hello World!',               # Texto a digitar
        'interval': 0.05,                     # Intervalo entre caracteres
        'delay': 1
    },

    # 6. Comando de teclado
    {
        'type': 'keyboard_command',
        'command': 'Ctrl+S',                  # Comando a executar
        'delay': 1
    }
]

# Execução simples
from bot_vision import execute_tasks
execute_tasks(tasks)

# Execução avançada com controle
bot = BotVision()
resultados = bot.execute_tasks(tasks)

⚙️ CONFIGURAÇÃO AVANÇADA

Configuração Personalizada

from bot_vision import BotVision

# Configuração completa
config = {
    "confidence_threshold": 80.0,        # Limiar OCR padrão (75-95)
    "tesseract_lang": "por",             # Idioma: 'eng', 'por', 'spa'
    "tesseract_path": r"C:\Program Files\Tesseract-OCR\tesseract.exe",
    "tessdata_path": r"C:\Program Files\Tesseract-OCR\tessdata",
    "preprocessing_enabled": True,        # Melhora OCR (recomendado)
    "retry_attempts": 5,                 # Tentativas padrão
    "default_delay": 1.5,               # Delay padrão entre ações
    "show_overlay": False,               # Desabilita overlay vermelho globalmente
    "screenshot_delay": 0.1              # Delay para captura de tela
}

bot = BotVision(config=config)

Parâmetros de Métodos Completos

# click_image com todos os parâmetros
success = bot.click_image('button.png',
                         region=(100, 100, 200, 50),      # x, y, width, height
                         confidence=0.9,                   # 0.0 a 1.0 (90% precisão)
                         delay=1,                          # Pausa 1 seg após clique
                         mouse_button='left',              # 'left', 'right', 'double', 'move_to'
                         backtrack=True,                   # Retry inteligente
                         specific=False,                   # False = permite variações de escala
                         max_attempts=3,                   # Máximo 3 tentativas
                         sendtext=None,                    # Texto para digitar depois
                         show_overlay=True)                # Exibe marcação vermelha

# click_text com todos os parâmetros
success = bot.click_text('Login',
                         region=(50, 50, 300, 100),       # x, y, width, height
                         filter_type='letters',            # 'letters', 'numbers', 'both'
                         delay=1,                          # Pausa após o clique
                         mouse_button='left',              # Tipo de clique
                         occurrence=1,                     # Qual ocorrência clicar
                         backtrack=True,                   # Retry inteligente
                         max_attempts=3,                   # Máximo de tentativas
                         sendtext='usuario123',            # Texto para digitar após clique
                         confidence_threshold=75.0)        # Precisão OCR (75%)

🔍 TÉCNICAS DE PROCESSAMENTO DE IMAGEM

28+ Técnicas Implementadas

from bot_vision import ImageProcessor
from PIL import Image

# Carregue imagem
img = Image.open('documento.png')

# Processe para OCR com todas as técnicas
processor = ImageProcessor(methods='all')
processed_images = processor.preprocess_for_ocr(img)

print(f"Geradas {len(processed_images)} variações para OCR")

# Técnicas principais:
# 1. HSV Enhancement (62% confiança) - Melhor para números em caixas coloridas
# 2. Dark Background (59% confiança) - Texto claro em fundo escuro
# 3. Channel Processing (57% confiança) - Processamento de canais RGB
# 4. Contrast Sharpening (41% confiança) - Alta nitidez e contraste
# 5. Adaptive Threshold - Thresholding adaptativo para fundos variados
# 6. Color Masking - Máscaras específicas para fundos rosa, cinza
# 7. LAB Enhancement - Equalização de luminosidade
# 8. Combinations - Mescla das melhores técnicas

OCR com Múltiplas Técnicas

from bot_vision import OCREngine
from PIL import Image

# Carregue uma imagem
img = Image.open('screenshot.png')

# Initialize OCR engine
ocr = OCREngine()

# Extraia todo o texto com todas as técnicas
results = ocr.extract_all_text(img, filter_type='numbers')

for result in results:
    print(f"Texto: {result.text}, Confiança: {result.confidence}")

🎨 EXEMPLOS AVANÇADOS

Automação Completa com Backtrack

from bot_vision import BotVision
import calendar
from datetime import datetime

# Configuração customizada
config = {
    "confidence_threshold": 80.0,
    "retry_attempts": 5,
    "overlay_color": "blue",
    "preprocessing_enabled": True
}

bot = BotVision(config=config)

# Variáveis dinâmicas
primeiro_dia = str(1)
ultimo_dia = str(calendar.monthrange(datetime.now().year, datetime.now().month)[1])

# Tasks complexas com backtrack
tasks = [
    {
        'text': 'Data Inicial',
        'region': (100, 100, 300, 200),
        'char_type': 'letters',
        'sendtext': f'{primeiro_dia}/01/{datetime.now().year}',
        'delay': 1,
        'backtrack': True
    },
    {
        'text': 'Data Final',
        'region': (100, 250, 300, 200),
        'char_type': 'letters',
        'sendtext': f'{ultimo_dia}/12/{datetime.now().year}',
        'delay': 1,
        'backtrack': True
    },
    {
        'image': 'processar.png',
        'confidence': 0.8,
        'specific': False,        # Permite variações de escala
        'delay': 3,
        'backtrack': True
    }
]

# Execute com backtrack automático
bot.execute_tasks(tasks)

Hover e Navegação Avançada

# Apenas mover o mouse para elementos (hover)
success = bot.click_text("Menu", mouse_button="move_to", delay=0.5)
success = bot.click_image("button.png", mouse_button="move_to", delay=1.0)
success = bot.click_coordinates(100, 200, mouse_button="move_to", delay=0.5)

# Tasks com hover
hover_tasks = [
    {
        'text': 'Tooltip trigger',
        'mouse_button': 'move_to',  # Apenas posiciona o mouse
        'delay': 2.0                # Espera para tooltip aparecer
    },
    {
        'text': 'Click here',       # Agora clica em outro elemento
        'mouse_button': 'left',
        'delay': 1.0,
        'backtrack': True
    }
]

🔧 DESENVOLVIMENTO

Estrutura do Projeto

bot-vision-suite/
├── bot_vision/
│   ├── core/                    # Módulos principais
│   │   ├── image_processing.py  # 28+ técnicas de processamento
│   │   ├── ocr_engine.py        # Engine OCR avançado
│   │   ├── relative_image.py    # Detecção de imagens relativas
│   │   ├── keyboard_commands.py # 100+ comandos de teclado
│   │   ├── task_executor.py     # Executor com backtrack
│   │   └── overlay.py           # Overlay visual
│   ├── utils/                   # Utilitários
│   └── exceptions.py            # Exceções customizadas
├── tests/                       # Testes automatizados
├── docs/                        # Documentação
└── examples/                    # Exemplos de uso

Executar Testes

pip install bot-vision-suite[dev]
pytest tests/

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

🆘 Suporte

🙏 Agradecimentos


Bot Vision Suite - Automatize sua interface gráfica com precisão máxima e robustez total! 🤖✨

🎯 DESTAQUES FINAIS

Sistema de Backtrack Inteligente - Retry automático entre ações
Variações de Escala Automáticas - Funciona em qualquer resolução
28+ Técnicas de Processamento de Imagem - OCR com máxima precisão
Detecção de Imagens Relativas - Anti-duplicação inteligente
100+ Comandos de Teclado - Suporte completo a Oracle Forms
Configuração Flexível - Adaptável a qualquer cenário
Multiplataforma - Windows, Linux e macOS

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bot_vision_suite-1.0.7.tar.gz (85.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bot_vision_suite-1.0.7-py3-none-any.whl (58.1 kB view details)

Uploaded Python 3

File details

Details for the file bot_vision_suite-1.0.7.tar.gz.

File metadata

  • Download URL: bot_vision_suite-1.0.7.tar.gz
  • Upload date:
  • Size: 85.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.2

File hashes

Hashes for bot_vision_suite-1.0.7.tar.gz
Algorithm Hash digest
SHA256 20e70a6ac05eec1233fc66eabb6ae7a996bfdb8b3541090ee9e56873d0436be4
MD5 6fde5d9ab0aea958392f3f7bed707bf7
BLAKE2b-256 e7b11b0334b3ef19addbe0e0ca0358623e2c8f8fe831ab24c4467a701a0fabad

See more details on using hashes here.

File details

Details for the file bot_vision_suite-1.0.7-py3-none-any.whl.

File metadata

File hashes

Hashes for bot_vision_suite-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 70352e0ffccc9851b09f9b28c9ea466e426291d631402b465bcfbbff3687a3b9
MD5 7afb3a4349f4e9ea8122d8dc8401705e
BLAKE2b-256 9ec269bb1e383a8a0afed460fd51c1d75ec2de8d94b8c0f9ec2ee838968e7173

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page