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 doğrudan PyPI üzerinden kurmak veya yerel geliştirmek için aşağıdaki yöntemlerden birini kullanabilirsiniz.
1. Doğrudan PyPI Üzerinden Kurulum (Önerilen)
Kütüphaneyi projelerinize tek satırla eklemek için:
pip install melek_eyes
2. Yerel Geliştirici Kurulumu
Eğer kaynak kodu üzerinde değişiklik yapmak istiyorsanız, proje ana dizininde şu komutla kurulabilir (editable) modda yükleyebilirsiniz:
pip install -e .
3. GitHub Üzerinden Kurulum
Doğrudan en güncel GitHub kodunu yüklemek 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.
Metadata
Release files for melek-eyes 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| melek_eyes-1.0.0.tar.gz | 18.6 MB | Without provenance | Details for melek_eyes-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| melek_eyes-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for melek_eyes-1.0.0-py3-none-any.whl |
Total release size: 37.2 MB
Release files / melek_eyes-1.0.0.tar.gz
| Download URL | melek_eyes-1.0.0.tar.gz |
|---|---|
| Size | 18.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81aac7e212ec0ad4128e06d3fb67ad49e724afc916fb07d51b682d076255f677
|
|
BLAKE2b-256 checksum How to use checksums |
60bfbbe3341f4a4dabbe19ec34bf2d1ee7a07fbbc1c4ad382ce9bbc86eebaf18
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.0
|
Release files / melek_eyes-1.0.0-py3-none-any.whl
| Download URL | melek_eyes-1.0.0-py3-none-any.whl |
|---|---|
| Size | 18.6 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
22b339e5e724a66894408e6b4e3e5adb1290c96308b1b2fa0fb553449155888e
|
|
BLAKE2b-256 checksum How to use checksums |
9fdb55b734ec2faf3decd2a1f7db553fc0b436daf1ca0c1b30b18d3c7d32baba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.0
|
Security for melek-eyes 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.