Skip to main content

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:

  1. 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.
  2. 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.png adıyla kaydeder:
      python examples/detect_ui_elements.py
      
  3. 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
      

🧠 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)

Source distribution for melek-eyes 1.0.0
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)

Table of built distributions (wheels) for melek-eyes 1.0.0
File Interpreter ABI Platform Actions
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.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

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