HALCON ile OCR Temelleri

OCR projeleri, diğer görüntü işleme uygulamalarına daha fazla zorluklar içermektedir. HALCON 10, OCR ile ilgili gayet gelişmiş fonksiyonlar sunmakla birlikte (get_text_*) çoğu kez iş, kod yazma ile çözülmektedir.

OCR uygulamalarındaki zorluklar

  • Tüm karakterler düzgün olarak seçilebilmelidir. Homojen olmayan aydınlatmalar, parlayan kısmi yerler sıradan bir görüntü işleme uygulamasında kolaylıkla üzerinden gelinebilen sorunlar iken, OCR uygulamalarında baş belası olabilmektedir.
  • Birbirine çok yakın karakterleri ayırt edebilmek (B, 8, D, 0 vb…) çoğu kez sorun olabilmektedir
  • Değişken font yükseklikleri, genişlikleri, iç içe geçmiş karakterler vb. sorun yaratabilmektedirÖzetle, bu liste uzar gider. Tüm bu zorluklarına rağmen, kişisel olarak en çok zevk aldığım uygulamalar, genelde OCR uygulamaları olagelmiştir.

Bu makalede, baştan sonra bir OCR uygulamasını, temel bileşenleri ile açıklamak istiyorum. Yeni başlayanlar için, -başlıkta belirtildiği gibi- “temel” ya da başlangıç olabilmesi açısından…

OCR uygulamasının anatomisi

Elimizde üzerinde yazılan karakterleri okuyacağımız bir resim var diyelim. İlk düşünmemiz gereken şey, HALCON açık zemin üzerinde koyu karakterler bekler (tıpkı gerçek dünyadaki dokümanlar gibi) eğer elimizdeki resim bunun tersi ise, en kolayından invert_image ile açık-koyu renkleri yer değiştirmeliyiz.

Sonra düşünmemiz gereken, HALCON ile yüklü gelen OCR karakterlerini mi kullanacağız, yoksa kendi karakterlerimizi mi öğreteceğiz? Hazır olanları kullanmak tabii ki en kolayıdır. Hem öğretmeye ihtiyaç olmaz, hem de her tür yükseklik, genişlik için çalışırlar. HALCON standart olarak gayet güzel fontlar ile birlikte gelir, buna rağmen bu fontlar her zaman isteyen sonuçları vermeyebilir. Bazen son derece net olarak görebildiğiniz bir karakter, HALCON tarafından hatalı yorumlanır. Bu gibi ilginç durumlarla sık sık karşılaşıyorsanız, kendi karakter setinizi öğretmenin vakti gelmiş demektir. (Bunu da ayrı bir makalede anlatmayı düşünüyorum)

Son olarak, OCR edip okutacağımız yazının bir kuralını biliyor muyuz? 3 rakam, arkasından 2 digit, sonra XYZ karakterleri geliyor… gibi. Ya da bir checksum içeriyor mu? (barkodlarda olduğu gibi, son karakter, öncekilerin toplamının bir sayıya bölünmesinden kalan vb. gibi) Ya da, okutacağımız yazı, belirli bir listenin üyesi mi? (mesela, türkiyenin bir ili ise, bir yere tüm iller girilir ve lexicon kullanımı ile bu listeden arattırılır) vb. İşimn güzel yanlarından biri, HALCON her bir karakteri hangi kalitede okuduğunu bize söyler. Eğer emin değilsek, yeniden resim alıp, yeniden denetme gibi işlemlere girilebilir. Tabii zamanımız yeterli ise …

(Yakın zamanda, en basitten en detaylıya kadar, bol miktarda özgün örnek uygulama vereceğim, ileride bu sayfayı tekrar ziyaret etmenizi öneririm, şimdilik yeni makalelere geçiyorum)

Karakter Okuma-OCR Çözümleri

Mavis, birçok farklı sektör ve farklı ürün için, endüstriyel ortamlarda %100 kontrol ve okuma esasına dayanan OCR uygulamalarına sahiptir. Mavis otomotivden metal sanayiye pek çok zorlu projede başarıyla kullanılan %100 kontrol esasına sahip çözümlere sahiptir.

Mavis OCR Çözümlerinin Genel Özellikleri

Mavis, VYP yazılımı üzerinde OCR işlemini de gerçekleştirebilmektedir. Tüm endüstriyel uygulamalarda başarıyla kullanılan VYP ile, tüm görüntü işleme işlemleri, PLC bağlantıları, veritabanı, resim kaydetme, güvenlik vb. gibi halihazırda var olan tüm özelliklerin üzerine, aşağıdaki OCR özellikleri de kazandırılmıştır.

  • Önceden yüklü hazır OCR fontlarını kullanabilme
  • Öğretebilme (Train işlemi)
  • Modele göre öğretebilme
  • Her türlü boy ve genişlikteki karakterleri okuyabilme
  • kabartma, kazıma, nokta vuruş gibi tüm yazım yöntemleri destekleme
  • Sonuçların ve resimlerin sınırsız kayıt imkanı
  • Her karakterin ve kelimeni ayrı ayrı OCR kalite yüzdesini görebilme
  • OCR işleminin sonucuna göre elektriksel (5-24V) sinyal üretebilme
  • Çok kısa sürede okuyabilme (100 ms. den az)

Örnek OCR Projesi : Şase No okuma

Araç şase numarasının okunması ve kontrolü, şase numarasının üretilmesi kadar önemlidir. Ülkemizde üretim yapan, dünyanın önde gelen otomotiv üreticilerinden olan firma, şase numarasını, mevcut üretim hattını değiştirmeden, okunabilme imkanını araştırmış ve nihayetinde Mavis ile çalışmaya karar vermiştir.

Projenin Zorlukları

  • kameranın Yaklaşık 2m. kadar yukarıdan bakmak zorunda olması
  • Şase numarasının aracın sol kapısına yakın zemin üzerinde, eğik yüzey üzerine yazılı olması (açılı)
  • Ortam aydınlatmasına müdahale edilemiyor olması (Hat halihazırda yürümekte)

Sistemin İşleyişi

Merkezi sistem, RS232 hattı üzerinden RK512 protokolüne uygun olarak, sıradaki aracın Vin numarasını iletir. Mavis VYP yazılımı bu numarayı hafızasına alır. Hat üzerinde yürüyen araca, Vin numarası yazıldıktan sonra, Vin yazıcı başlık ayrılır ve araç yürümeye devam ederek kamera altına gelir. Bir sensör yardımıyla aracın doğru pozisyona geldiği bilgisi alınır ve fotoğraf çekilir. Mavis VYP yazılımı OCR işlemini tamamlar ve hafızasındaki Vin numarası ile, OCR edilmiş Vin numarasını karşılaştırır. Hata olması durumunda hattı durdurur. Hata yok ise, tüm bilgileri ve fotoğrafı veritabanına kaydeder ve diğer aracı bekler.