Bloga dön
Nasıl yapılır · · 9 dk okuma

Görüntü tanıma ile GUI işlemlerini otomatikleştirme mekanizması ve kullanımı

Makroları kaydedip oynatırken birçok kişi “dün çalışıyordu ama bugün tıklama konumu kayıyor” sorunuyla karşılaşır. Bunun başlıca nedeni, kaydedilen makronun “ekrandaki sabit koordinatları” temel alarak çalışmasıdır. Pencerenin farklı bir yerde açılması, ekran çözünürlüğünün değişmesi veya makronun başka bir monitörde oynatılması gibi değişiklikler tıklamanın hedeflenen yerden farklı bir noktaya yapılmasına yol açar. Bu temel sorunu “görüntü tanıma” tabanlı otomasyon çözer.

Görüntü tanıma, ekrandaki öğeleri koordinatlarına göre değil, “görünümlerine” göre arayan bir teknolojidir. Tıklanacak düğmenin küçük bir görüntüsü önceden kaydedilir; oynatma sırasında araç tüm ekranı tarayarak bu görüntüyle eşleşen konumu bulur. Düğme nereye taşınmış olursa olsun görünümü aynı kaldığı sürece doğru şekilde bulunup tıklanabilir. Görüntü tanımanın gücü budur.

Görüntü tanıma öğeleri nasıl bulur?

Mekanizma basittir. Önce işaret olarak kullanılacak öğenin—örneğin “Gönder” düğmesinin veya belirli bir simgenin—küçük bir görüntüsü (şablon görüntü) yakalanıp kaydedilir. Makro çalıştırıldığında araç o anki ekranın görüntüsünü alır ve ekranda şablon görüntüyle eşleşen bölgeyi arar. Eşleşen konumu bulursa bu bölgenin merkez koordinatlarını döndürür; makro da fareyi oraya götürüp tıklar.

Burada önemli olan ayar “eşleşme eşiği (eşleştirme doğruluğu)”dur. Görüntüler %100 aynı olmasa bile örneğin %90 veya daha fazla benzerliğin “eşleşme” sayılması sağlanabilir. Eşiği yükseltmek yanlış algılamaları azaltır, ancak görünümdeki küçük farklılıklar öğenin bulunamamasına yol açabilir. Eşiği düşürmek ise esnekliği artırır fakat benzer başka bir öğeyi yanlışlıkla hedef olarak seçme riskini yükseltir. En uygun değeri bulmanın yolu, gerçek ekran üzerinde denemeler yapmaktır.

FIND_IMAGE ve WAIT_IMAGE komutlarının kullanım alanları

makuroku, görüntü tanımayı betiklerden kullanmak için iki temel komut sunar. FIND_IMAGE, “görüntünün tam şu anda ekranın neresinde olduğunu” arayan komuttur. Bulunan koordinatlar bir değişkende saklanabildiğinden, “nerede görüntüleneceği bilinmeyen bir düğmeye tıklamak” gibi işlemler için uygundur.

WAIT_IMAGE ise “ilgili görüntü görünene kadar bekleyen” komuttur. Bir Web sayfasının yüklenmesi veya bir uygulamanın başlatılması zaman alır; işlem tamamlanmadan bir sonraki adıma geçilirse hata oluşur. WAIT_IMAGE kullanılarak “yüklemenin tamamlandığını gösteren simge görünene kadar bekleyip ardından devam etmek” gibi ekran durumuna uyum sağlayan güvenilir otomasyonlar oluşturulabilir. Bu iki komutun birlikte kullanılması, gerçek işlerde sık görülen “zamanlama farklılıklarına” dayanıklı ve kolay bozulmayan bir otomasyon sağlar.

Görüntü tanımanın özellikle yararlı olduğu durumlar

Görüntü tanıma özellikle aşağıdaki durumlarda etkilidir.

  • Düğmelerin veya pencerelerin ekrandaki konumunun her seferinde değiştiği uygulamalar
  • Devam etmeden önce yükleme veya işlemin tamamlanmasını beklemek istediğinizde
  • Koordinat belirlemenin tek başına yeterli olmadığı dinamik yerleşimli ekranlar
  • Belirli bir simge veya durum göründüğünde işlemi tetiklemek istediğinizde

Öte yandan görüntü tanımanın da sınırları vardır. Hedefin görünümünün sık sık değiştiği tasarımlarda ve yarı saydam ya da animasyonlu öğelerde eşleşme tespiti kararsız olma eğilimindedir. Ayrıca ekranın tamamı tarandığı için işlem, koordinat belirtmeye kıyasla biraz daha uzun sürer. Her şeyi görüntü tanımayla değiştirmek yerine yöntemleri duruma göre ayırmak gerekir: “Koordinatların yeterli olduğu yerlerde koordinat, yalnızca konumu değişen yerlerde görüntü tanıma.” Pratik ve hızlı otomasyonun püf noktası budur.

Şablon görüntüleri doğru hazırlamanın püf noktaları

Görüntü tanımanın doğruluğu, kaydedilen şablon görüntünün kalitesinden büyük ölçüde etkilenir. Bunun için birkaç ipucu vardır. Öncelikle referans olarak kullanılacak alanı “küçük ve ayırt edici” olacak şekilde kırpın. Düğmenin tamamı yerine yalnızca o düğmeye özgü simgeyi veya metni kırpmak, başka öğelerle karıştırılmasını önler. Buna karşılık alanı fazla geniş tutarsanız çevredeki küçük değişiklikler (arka plan rengi veya komşu öğeler gibi) eşleşmenin bulunmamasına neden olabilir.

Ardından rengi veya durumu kolayca değişen bölümlerden kaçının. Fare üzerine geldiğinde renk değiştiren bir düğmeyi ya da seçildiğinde vurgulanan bir alanı referans olarak kullanırsanız duruma bağlı olarak eşleşme bulunamayabilir. Görünümü her zaman aynı kalan kararlı bir bölüm seçin. Ayrıca ekran ölçeği değiştiğinde görüntünün boyutu da değişeceğinden şablonu gerçek kullanımda uygulanacak çözünürlük ve ölçekte yakalamak en güvenilir yöntemdir. Bu küçük önlemlerin bir araya gelmesi, görüntü tanımanın başarı oranını önemli ölçüde artırır.

Görüntü tanımayı diğer yöntemlerle birleştirme

Görüntü tanıma güçlüdür ancak her derde deva değildir. Gerçek iş ortamında sağlam bir otomasyon oluşturmak için birden çok yöntemi doğru yerlerde birleştirmek gerekir. Konumu hiç değişmeyen bir düğme için hızlıca koordinat belirtmek yeterlidir. Yalnızca konumu değişen düğmeleri veya görünmesi zaman alan öğeleri görüntü tanımaya bırakın. Ekrandaki metinleri okumak için OCR (karakter tanıma), harici servislerle entegrasyon içinse HTTP iletişimi kullanın. Başka bir deyişle, yöntemi amaca göre seçin.

makuroku, bu yöntemleri tek bir betik içinde özgürce birleştirmenize olanak tanır. Örneğin, “WAIT_IMAGE ile ekranın hazır olmasını beklemek, FIND_IMAGE ile düğmeyi bulup tıklamak, OCR ile sonuç değerini okumak ve koşullu dallanmayla farklı işlemler uygulamak” gibi insan çalışmasına yakın esnek bir otomasyon tek bir akış halinde tanımlanabilir. Tek bir yönteme bağlı kalmak yerine her birinin güçlü yönlerinden yararlanarak bunları birleştirin. Gerçek iş ortamında kullanılabilecek otomasyona giden en kısa yol bu düşünce biçimidir.

Görüntü tanıma düzgün çalışmadığında ne yapılmalı?

Görüntü tanımayı kullanmaya başladığınızda, kaydettiğinizden emin olduğunuz bir görüntünün bulunamadığı durumlarla karşılaşabilirsiniz. Bunun birkaç nedeni olabilir. En yaygın neden, şablon görüntüsü alınırken kullanılan ekran ölçeği veya çözünürlüğün gerçek arama sırasındakinden farklı olmasıdır. Bu durumda görüntünün boyutu değiştiği için eşleşme sağlanamaz. En güvenilir çözüm, şablonu kullanılacağı ortamla aynı ayarlarda yeniden almaktır.

Bir diğer yaygın neden, eşleşme eşiğinin fazla katı olmasıdır. %100 tam eşleşme istendiğinde, renk tonundaki veya kenar yumuşatmadaki çok küçük bir fark bile görüntünün bulunmasını engelleyebilir. Eşiği biraz düşürüp yaklaşık %90 benzerliği eşleşme olarak kabul etmek çoğu zaman daha kararlı sonuç verir. Ancak eşik fazla düşürülürse yanlış algılamalar artar; bu nedenle gerçek ekranda denemeler yaparak uygun değeri bulmak önemlidir.

Sorun hâlâ çözülmediyse şablon olarak seçtiğiniz alanı yeniden gözden geçirin. Arka planı sık değişen veya seçildiğinde vurgulanan bir bölümü işaret olarak kullanırsanız görünümü duruma göre değişir ve eşleşme sağlanamaz. Alanı, kendine özgü bir simge veya logo gibi görünümü daima aynı kalan, ayırt edici ve kararlı bir bölümle sınırlandırmak başarı oranını artırır. Kolay bulunabilecek bir işaret seçmek, görüntü tanımayı kararlı hâle getirmenin en önemli püf noktasıdır.

Görüntü tanımanın ilk ayarları biraz emek gerektirse de doğru şekilde yapılandırıldıktan sonra sabit koordinatlarla elde edilemeyecek bir esneklik sunar. Pencere hareket etse veya düzen değişse bile görünüm aynı kaldığı sürece doğru tepki verir. Bu sağlamlık, otomasyonun gerçek iş ortamında uzun süre kullanılabilmesi açısından büyük güven sağlar.

Görüntü tanımanın kullanıldığı pratik bir senaryo

Görüntü tanımanın gücünü somut bir senaryo üzerinden görelim. Örneğin, bir Web uygulamasından düzenli olarak veri indirme işlemini otomatikleştirdiğimizi düşünelim. Bu uygulamada her oturum açılışında ekran düzeni biraz değişiyor ve indirme düğmesinin konumu da sabit kalmıyor. Sabit koordinatlara dayalı bir makro bu değişikliklere uyum sağlayamaz ve kısa sürede bozulur.

İşte bu noktada görüntü tanıma devreye girer. Önce indirme düğmesinin simgesi şablon görüntüsü olarak kaydedilir. Makro, sayfanın yüklenmesini WAIT_IMAGE ile bekledikten sonra FIND_IMAGE ile ekrandaki indirme düğmesini bulur ve bulunduğu konuma tıklar. Düğme nerede görüntülenirse görüntülensin, görünümü aynı olduğu sürece doğru şekilde bulunup tıklanabilir. Böylece düzen değişikliklerinden etkilenmeyen, kararlı bir otomasyon elde edilir.

Ayrıca, indirme işleminin tamamlandığını belirten mesaj görünene kadar WAIT_IMAGE ile bekleyip ardından sonraki adıma geçerseniz bağlantının yavaş olduğu günlerde bile hiçbir işlem atlanmaz. Görüntü tanıma, insanların doğal olarak yaptığı “ekranın durumuna bakıp doğru zamanda doğru yeri kullanma” değerlendirmesini otomasyona taşır. Bu sayede gerçek iş ortamı gibi değişikliklerle dolu bir yerde bile kolay kolay bozulmayan otomasyonlar oluşturulabilir.

Bu tür senaryolar yalnızca Web uygulamalarında değil, masaüstü uygulamalarında, iş sistemlerinde ve daha pek çok alanda uygulanabilir. Konumun değişmesi veya zamanlamanın öngörülememesi nedeniyle daha önce otomatikleştirmekten vazgeçtiğiniz işlemler de görüntü tanıma sayesinde otomasyon kapsamına girebilir. Öncelikle, konumu her seferinde kaydığı için sorun yaşadığınız bir işlemi düşünün ve bunu görüntü tanımayla kararlı hâle getirerek başlayın.

Kolay bozulmayan otomasyonlar oluşturmak

Bir otomasyonun sahada gerçekten işe yarayıp yaramaması, beklenmedik durumlara ne ölçüde dayanabildiğine bağlıdır. Yalnızca kaydedilmiş koordinatlara dayanan otomasyon, ilk seferde sorunsuz çalışsa bile ortamda küçük bir değişiklik olduğunda kolayca durabilir. Görüntü tanımayı buna ekleyerek insanların farkında olmadan verdiği “görünüme göre tıklama” veya “ekran hazır olana kadar bekleme” gibi kararları otomasyona dahil edebilirsiniz.

makuroku, GUI üzerinden kayıt özelliğinin yanı sıra FIND_IMAGE ve WAIT_IMAGE gibi görüntü tanıma komutlarını da standart olarak sunar. Önce işlemleri kaydederek temel iskeleti oluşturun, ardından yalnızca konumu değişen veya doğru zamanın gelmesini beklemeniz gereken bölümleri görüntü tanımayla değiştirin. Bu kombinasyon sayesinde ilk beklenmedik durumda bozulan değil, gerçek çalışma ortamlarının karmaşıklığına dayanabilen otomasyonlar oluşturabilirsiniz. Tüm özellikleri ücretsiz deneyebildiğiniz için, işe öncelikle “konumu her seferinde kaydığı için sorun yaşadığınız görevleri” görüntü tanımayla kararlı hâle getirerek başlayın.

Ücretsiz deneyin

Bunu makuroku ile otomatikleştirin

makuroku farenizi ve klavyenizi kaydeder, ardından otomatik olarak oynatır. Daha fazlasına ihtiyaç duyduğunuzda SCR betikleri ve AI (MCP) entegrasyonu ekleyin. Windows'ta tüm özellikler ücretsiz.