Melek (Jarvis) için ultra hafif ve GPU gerektirmeyen gelişmiş ekran tarama kütüphanesi
Project description
Melek Gözleri (Melek Eyes) 👁️👋
Melek Gözleri (Melek Eyes), bilgisayarınızın ekranını tarayarak metinleri, butonları, form alanlarını ve pencereleri algılayabilen ve bu elemanlar üzerinde tıklama, yazı yazma gibi fiziksel aksiyonlar alabilen hafif, GPU gerektirmeyen (CPU-dostu) ve çoklu monitör uyumlu bir ekran görme kütüphanesidir.
Bu kütüphane, kendi kişisel yapay zeka asistanınızın (örn. Jarvis/Melek) ekrandaki öğeleri "görmesini" ve insan gibi "tıklayıp yazmasını" sağlayan bir göz ve el motoru (eyes & hands engine) olarak tasarlanmıştır.
🚀 Öne Çıkan Özellikler
- 🖥️ Çoklu Monitör & DPI Desteği: Sistemdeki tüm fiziksel monitörleri tek tek veya sanal ekran olarak tarar. Monitörlerin DPI ölçeklendirmelerinden ve konumlandırmalarından (left, top) bağımsız olarak, elemanların koordinatlarını mutlak sanal ekran koordinatlarına dönüştürerek hatasız tıklamalar yapar.
- ⚡ Hafif ve GPU-Free OCR Motoru:
- RapidOCR (Varsayılan): CPU üzerinde son derece hızlı çalışan ve Türkçe/İngilizce karakterleri hatasız tanıyan ONNX tabanlı PaddleOCR motoru.
- Windows Native OCR: Windows'un dahili C++ OCR motorunu kullanarak sıfır ek kütüphane ve sıfır bellek tüketimiyle hızlı okuma.
- EasyOCR: PyTorch tabanlı yedek motor.
- 🎨 Akıllı Arayüz Nesnesi Tespiti (Contour Detector): OpenCV kontur analizini kullanarak butonları, input alanlarını, pencereleri ve ikonları milisaniyeler içinde tespit eder.
- 🏷️ Etiket-Önce (Label-First) Stratejisi & Sentetik Girdiler: Borderless (çerçevesiz/modern) web formlarında kontur algılayıcıların göremediği input alanlarını, ilişkili metin etiketlerini ("Username", "Email" vb.) bulup hemen altına veya sağ tarafına otomatik olarak sentetik tıklama hedefi oluşturarak doldurur.
- 🛡️ Canlı Sentinel (Ekran Bekçisi): Frame-diffing (kare farkı) algoritması ile ekranı canlı izler. Sadece ekranda bir değişiklik (yeni pencere açılması, kaydırma yapılması vb.) olduğunda taramayı tetikler; video izlenirken veya ekran sabitken CPU yormaz.
- 🔄 Doğrulamalı Doldurma Döngüsü: Ajanın ekrana yazı yazarken başarısız olmasını (odağın kayması, UI gecikmesi vb.) önlemek için yazılan metni ekranda okuyarak doğrular, başarısızlık durumunda otomatik olarak tekrar dener.
📁 Proje Klasör Yapısı
melek_eyes/
│
├── melek_eyes/ # Ana Kütüphane Paketi
│ ├── ocr/ # OCR Motorları
│ │ ├── __init__.py # OCR Fabrikası (RapidOCR, WindowsOCR, EasyOCR seçimi)
│ │ ├── base.py # Soyut OCR taban sınıfı
│ │ ├── easy_ocr.py # EasyOCR sarmalayıcısı
│ │ ├── paddle_ocr.py # RapidOCR ONNX sarmalayıcısı
│ │ └── windows_ocr.py # Windows Media OCR sarmalayıcısı
│ │
│ ├── __init__.py # Ana MelekEyes sınıfı (Koordinasyon & Arama Motoru)
│ ├── capture.py # Çoklu monitör ve pencere yakalama motoru (MSS)
│ ├── controller.py # Klavye & Fare aksiyon motoru (PyAutoGUI)
│ ├── detector.py # UI Elemanı tespit motoru (OpenCV Kontur Fallback)
│ ├── layout.py # Ekran Haritası ve Eleman Eşleme modeli (ScreenMap)
│ └── sentinel.py # Değişiklik algılayıcı Ekran Bekçisi
│
├── examples/ # Örnek ve Demo Kodları
│ ├── basic_capture.py # Ekran yakalama ve çözünürlük testi
│ ├── browser_login_demo.py # Tarayıcıda doğrulamalı giriş yapma demosu (Önerilen)
│ ├── detect_ui_elements.py # Kontur tespiti görselleştirme demosu
│ ├── get_screen_map.py # Ekrandaki metinleri JSON ve Metin haritasına dökme
│ ├── live_sentinel_demo.py # Canlı ekran izleme ve değişim tetikleyici test
│ ├── test_agent_actions.py # Tıklama, taşıma ve klavye kısayol testi
│ └── test_paddleocr.py # PaddleOCR okuma testi
│
├── requirements.txt # Bağımlılıklar listesi
└── setup.py # pip kurulum yapılandırması
⚙️ Kurulum
Kütüphaneyi yerel olarak kurmak veya diğer Python projelerinizde doğrudan kullanmak için aşağıdaki adımları takip edebilirsiniz.
1. Bağımlılıkları ve Kütüphaneyi Kurun
Proje ana dizininde (setup.py dosyasının bulunduğu klasör) bir terminal açın ve şu komutla kütüphaneyi kurulabilir (editable) modda yükleyin:
pip install -e .
Bu komut; mss, opencv-python, pyautogui, onnxruntime, numpy ve rapidocr-onnxruntime paketlerini otomatik olarak kuracaktır.
2. GitHub Üzerinden Kurulum (Diğer Projeler İçin)
Kütüphaneyi herhangi bir projede doğrudan GitHub'dan indirmek için:
pip install git+https://github.com/TearsFearsxf/melek_eyes.git
⚡ Hızlı Başlangıç
1. Tek Seferlik Ekran Taraması (Screen Mapping)
Aşağıdaki kod ekranı tarar ve ekranda bulunan tüm metin ve etkileşimli elemanları hiyerarşik bir metin olarak konsola döker:
from melek_eyes import MelekEyes
# Gözleri uyandır (Varsayılan olarak RapidOCR kullanılır)
with MelekEyes() as eyes:
# 0. monitörü (varsayılan) tarar
screen_map = eyes.scan_once()
# Ekranın insan ve LLM tarafından okunabilir haritasını yazdır
print(screen_map.to_text())
2. Akıllı Aksiyon Alma (Tıklama ve Yazma)
Melek, elemanların koordinatlarını kendi hesaplar. Sizin tek yapmanız gereken ekranda ne gördüğünüzü söylemektir:
from melek_eyes import MelekEyes
import time
with MelekEyes() as eyes:
# 1. Giriş kutusuna veri yaz (Label-First yöntemiyle 'Username' etiketinin altındaki alana yazar)
eyes.type_in("Username", "tomsmith")
# 2. Şifre alanına yaz
eyes.type_in("Password", "SuperSecretPassword!")
# 3. 'Login' yazan butona tıkla
eyes.click_on("Login")
3. Canlı Sentinel İzleme (Screen Sentinel)
Ekranda bir değişiklik olduğunda (yeni bir buton belirdiğinde veya pencere taşındığında) asistanınızı uyarmak için Sentinel modunu kullanabilirsiniz:
from melek_eyes import MelekEyes
import time
def ekran_degisti_callback(yeni_harita):
print("🔔 Ekran değişti! Güncel butonlar:")
for el in yeni_harita.buttons:
print(f" - {el.text} (Konum: {el.center})")
with MelekEyes() as eyes:
# Callback fonksiyonunu kaydet
eyes.sentinel.register_callback(ekran_degisti_callback)
# Canlı izlemeyi başlat (arka planda çalışır)
eyes.sentinel.start()
print("👁️ Ekran Bekçisi aktif. Ekranda bir şeyleri hareket ettirin...")
time.sleep(10) # 10 saniye boyunca gözlemle
# İzlemeyi durdur
eyes.sentinel.stop()
🧪 Detaylı Demolar ve Testler
examples/ klasörü altındaki demoları çalıştırarak kütüphaneyi canlı test edebilirsiniz:
- Tarayıcı Giriş Demosu (Önerilen test):
- Öncelikle tarayıcınızda şu test adresini açın:
http://the-internet.herokuapp.com/login - Sayfa açıkken şu komutu çalıştırın:
python examples/browser_login_demo.py - Ajanımız sayfayı görecek, girdileri dolduracak ve doğrulamayı yapıp giriş yapacaktır.
- Öncelikle tarayıcınızda şu test adresini açın:
- Arayüz Eleman Tespiti Testi:
- Aşağıdaki komut ekran görüntüsünü alır ve tespit ettiği buton/input kutularını yeşil çerçeve içine alarak
annotated_screen.pngadıyla kaydeder:python examples/detect_ui_elements.py
- Aşağıdaki komut ekran görüntüsünü alır ve tespit ettiği buton/input kutularını yeşil çerçeve içine alarak
- Ekran Değişim Bekçisi Testi:
- Aşağıdaki komut ekranı canlı izler ve pencere açtığınızda veya kapattığınızda konsola bildirim gönderir:
python examples/live_sentinel_demo.py
- Aşağıdaki komut ekranı canlı izler ve pencere açtığınızda veya kapattığınızda konsola bildirim gönderir:
🧠 Yapay Zeka (LLM / Brain) Entegrasyonu İçin İpuçları
Bu kütüphane bir yapay zeka beyninin (Gemini, GPT vb.) ekranı kontrol etmesini kolaylaştırmak üzere tasarlanmıştır.
Aşağıdaki şablonu kullanarak ekran haritasını JSON formatında LLM'e gönderebilir ve LLM'den gelen komutları (click_on, type_in) yürütebilirsiniz:
import json
from melek_eyes import MelekEyes
with MelekEyes() as eyes:
# 1. Ekran haritasını çıkar
screen_map = eyes.scan_once()
# 2. LLM'e göndermek için temiz bir JSON çıktısı oluşturun
ekran_verisi = {
"elements": [
{
"category": el.category,
"text": el.text,
"associated_label": el.associated_label,
"center": el.center
}
for el in screen_map.elements
],
"standalone_texts": screen_map.standalone_texts
}
json_payload = json.dumps(ekran_verisi, ensure_ascii=False, indent=2)
# Bu json_payload'u doğrudan LLM sistem promptuna veya chat geçmişine ekleyebilirsiniz.
🛡️ Lisans
Bu proje MIT lisansı ile lisanslanmıştır. Dilediğiniz gibi kullanabilir, değiştirebilir ve dağıtabilirsiniz.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file melek_eyes-0.1.0.tar.gz.
File metadata
- Download URL: melek_eyes-0.1.0.tar.gz
- Upload date:
- Size: 31.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5e9fa9e6f3f348efe7363699c91c55183364c2f785b58ebc9b9a3109142a420
|
|
| MD5 |
c161cc391e7df372493bb6ff26282b36
|
|
| BLAKE2b-256 |
7694aea1ebb4776207d76aae5777fa52908d64877d9dc9bd41b69dde802655f2
|
File details
Details for the file melek_eyes-0.1.0-py3-none-any.whl.
File metadata
- Download URL: melek_eyes-0.1.0-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54d1da28973cfc68425eb3985bd090cfb92d4b8aae50cdaa821db634cc2d42ea
|
|
| MD5 |
877c9a6dabc3b2949b055a08f7599682
|
|
| BLAKE2b-256 |
95c757e48f9c9206d4c9ba5a39165f539f8829f1f692c2f1214888956cba4461
|