|
OCR(Optical Charecter Recognition) resim formatındaki herhangi bir dosya içindeki yazıyı tanıyarak,sonradan tekrar düzenlenebilecek metin biçimine dönüştürmektir.Yani elimizde,içinde yazı bulunan, JPG formatında bir dosya varsa bunu OCR programımızla WORD dökümanı şekline dönüştürüp kaydedeceğiz.Böylece bellekten kazanmış ve fazla yer kaplamadan JPG dosyalarımızı saklamış olacağız.Tarayıcıdan aldığımız dökümanlar jpg olarak kaydediliyor. OCR teknolojisini genellikle bu sorunu ortadan kaldırmak için kullanılıyor. OCR yazılımlarında yapay sinir ağları ve klasik olmak üzere iki programlama yöntemi vardır.Biz bu projede klasik yöntemi kullanacağız.Klasik yöntem momentler yardımıyla karakter tanıma işlemidir.
MOMENTLER YARDIMIYLA OPTİK
KARAKTER TANIMA
Özet
OCR(Optical Charecter Recognition) resim
formatındaki herhangi bir dosya içindeki yazıyı tanıyarak,sonradan tekrar düzenlenebilecek
metin biçimine dönüştürmektir.Yani elimizde,içinde yazı bulunan, JPG formatında
bir dosya varsa bunu OCR programımızla WORD dökümanı şekline dönüştürüp kaydedeceğiz.Böylece
bellekten kazanmış ve fazla yer kaplamadan JPG dosyalarımızı saklamış olacağız.Tarayıcıdan
aldığımız dökümanlar jpg olarak kaydediliyor. OCR teknolojisini genellikle
bu sorunu ortadan kaldırmak için kullanılıyor. OCR yazılımlarında yapay sinir
ağları ve klasik olmak üzere iki programlama yöntemi vardır.Biz bu projede
klasik yöntemi kullanacağız.Klasik yöntem momentler yardımıyla karakter tanıma
işlemidir.
Giriş
Pattern recognition (örüntü
tanıma) bilim disiplininin amacı nesneleri bir kategoriye koymak veya sınıflamaktır.
Bu nesneler, uygulamaya göre görüntü, ses ya da sınıflandırılması istenen başka
bir işaret olabilir ve genel olarak pattern (örüntü) olarak adlandırılır. Karakter
(harf veya sayı) tanıma, örüntü tanımanın başka bir önemli alanı“Optical Character Recognition”
(OCR) sistemleridir.Optik Karakter Tanıma (OCR),
elektronik görüntüler üzerindeki karakterlerin ya da metin bilgilerinin okunarak
ASCII koda dönüştürülmesi işlemidir. OCR metodolojileri kullanılarak makineler
tarafından yazılmış karakterler, elyazısı karakterler ve işaretler kolaylıkla
okunup ASCII koda dönüştürülebilirler. OCR, makineler tarafından yazılmış karakterlerin
okunup tanınmasında kullanılan teknolojidir.
Optik
Karakter Tanıma (OCR) Nasıl Çalışır?
Karakterlerin
tanınmasında birkaç OCR metodolojisi kullanılır. Bunlar arasında topolojik
tabanlı olan, yapay sinir ağlarına dayanan, matris eşleme ile gerçekleşen,
öznitelik analizi ile çalışan ve eğrileri izleyerek karakter tanıma işlemini
gerçekleştiren metodolojiler yer almaktadır. Karakterlerin daha büyük doğrulukla
tanınması için, okunan verilere ön işleme ve son işleme algoritmaları uygulanmaktadır.
Bu algoritmalar, formların belirlenmesinde, formlar üzerindeki belirli alanların
silinmesinde, form ve karakterlerin düzeltilmesinde (deskew) ve görüntünün
iyileştirilmesinde kullanılırlar. Karakterlerin büyük doğrulukla okunmasında,
sisteme sunulan elektronik görüntünün mümkün olduğunca keskin (sharp), temiz
ve düzgün olması oldukça büyük önem taşımaktadır. Buna rağmen, günlük yaşamda
kullanılan dokümanlar ve formlar genellikle kirli, yıpranmış ve katlanmıştırlar.
Tanıma işleminden önce uygulanacak ön işleme algoritmaları ile formun elektronik
görüntüsü temizlenir ve karakterler mümkün olduğunca iyileştirilir.
Karakterlerin tanınması sırasında,
kullanıcı tarafından kabul edilmeyen ya da doğruluk kriterini yakalayamayan
karakterler reddedilmelidir (tanınmıyor olarak değerlendirilmelidir). Örneğin
doğruluk kriteri olarak % 99.98 kabul edilirse, doğru olmadığı kabul edilen
birçok karakter reddedilecektir. Eğer doğruluk kriteri daha aşağı sınırlara
çekilirse, tanınan karakter sayısı artacaktır. Buna rağmen % 99 oranındaki
doğruluk kriterleri sıklıkla kullanılmaktadır.
İçinde OCR tarafından okunamayan karakterler de bulunan reddedilen karakterler
doğrulukla belirlenebilmelidir. Bu işlem genelde karakterin ekrana getirilerek
el ile girişi yapılması süreci ile gerçekleştirilir.
Doğruluğu
iyileştirmenin en son basamağı ise OCR ya da el ile girişi yapılmış tüm karakterlerin
işlenmesi, doğruluğunun istenilen kriteri yakaladığının sınanması ya da kullanıcı
gereksinimini karşılayıp karşılamadığının belirlenmesidir. Son işleme işlemleri
ile sözü edilen son basamak gerçekleştirilebilir. Ticari olarak var olan
algoritmalar ile bu adım kolaylıkla uygulanabilir. Verinin arıtılması adı
da verilen bu işlemler, karakter tanımadaki doğruluğu büyük oranda arttırmaktadır.
Optik
Karakter Tanıma (OCR) Sistemlerini Kimler Kullanır?
Günümüzde, doküman işleme işlemleri
ile ilgilenen kişiler, operasyon maliyetlerini düşürmek ve verimlilik oranlarını
arttırmak isteyen her kullanıcı OCR ya da ICR teknolojilerini göz önüne alırlar.
OCR teknolojisi sıklıkla şu alanlarda kullanılır :
- Masaüstü Yayıncılık
- Mahkemelerle
İlgili Alanlar
- Vergilendirme
ve Tahsilat
- Personel Kayıt
Yönetimi
- Nüfus Sayımı
Formlarının İşlenmesi
- Çek İşleme
- Ödeme İşleme
- Emekli Fonu
İşleme
- Sipariş İşleme
- Tıbbi İstekler
Günümüz
ekonomisinde, elektronik doküman yönetimi sistemlerinin, hem iş dünyasında
hem de devletin yönetim mekanizmalarında, görüntüleme ve OCR teknolojilerini
birlikte kullandıklarını görebiliriz. İçinde yaşadığımız çalkantılı, dinamik
ve maliyetlerin önem taşıdığı günümüz çalışma ortamlarında, OCR ile tanıma
işlemleri görüntüleme teknolojisi ile birleştirilerek 21. yüzyıla geçişte
kullanılan önemli bir basamaktır.
OCR sistemleri ticari olarak
bulunmaktadır. Tipik bir OCR sistemi, bir ışık kaynağı, tarama lensi ve bir
detektörden oluşur. Işığa duyarlı detektörün çıkışında, parlaklık düzeylerindeki
değişimler “sayılara” dönüştürülür ve bir resim dizisi oluşturulur, sonra “image
restoration”, “image enhancement” gibi bir dizi görüntü işleme teknikleri resme
uygulanır. Bundan sonra OCR yazılımı, okunan karakterleri, harf, sayı ve noktalama
işareti olarak sınıflar.
Görüntü
İşleme Teknikleri
1. Karakterleri Sınıflandırma
Karakter resmimizi inceleyebilmek için önce tüm
piksellere treshold dediğimiz işlemi yaparak resmi gri seviye resim haline
getiriyoruz. Daha sonra kendimize bir referans nokta seçiyoruz ve bu referanstan
büyük olan değerleri 255'e yani beyaza, referanstan küçük olanları ise
0'a yani siyaha çeviriyoruz. Siyah noktalar orada bir harfin olduğunu, Beyaz
noktalar ise boşlukları gösteriyor.
Karakterleri sınıflandırmak için önce resmi yatay
ve dikey tarıyoruz. Yatay tarama sonucunda yazının kaç satırdan oluştuğunu
buluyoruz. Karakter büyüklüklükleri hep aynı olduğu için (örneğin biz sadece
8 ve 10 punto kullanarak çalıştık) karakterleri yukarıdan aşağıya doğru taradığımızda
harfin başladığı ve bittiği pikseller arasındaki fark sabit kalmaktadır. Yani
8 puntoda çalışıyorsak harfin başlangıcı ve bitişi arasındaki fark 8
olmaktadır. Yukarıdan aşağıya doğru tararken bu sekiz değerinden farklı bir
değer olduğunda başka bir satıra geçildiğini anlıyoruz.
Yatay taramada satırları tespit ediyorduk, dikey
taramada ise tek tek karakterleri buluyoruz. Bu sefer taramayı soldan sağa
doğru yapıyoruz. Amacımız siyah noktaları bulmak. Çünkü siyah noktalar bir
harfin başladığını gösteriyor. Herhangi bir nokta olmadığında orada boşluk
olduğunu anlıyoruz. Dikey tarama yaparken bir karakter bitip başka bir karakter
başladığında aradaki boşluğun en az 4 piksel olduğunu gördük ve bundan faydalanarak
da karakterleri ayırt edebildik.
2. Momentler
Geometrik momentler normalize
ve merkezi normalize olamak üzere ikiye ayrılır.Normalize momentler yalnız
öteleme ve ölçekleme için değişmezdir. Amaç öteleme, ölçekleme ve döndürme
için değişmez dönüşümler bulmaktır. Bu nedenle Hu tarafından tanımlanan,
öteleme, ölçekleme, ve döndürme için değişmez olan 7 adet momente değinilmiştir.
Geometrik Momentler
I(x,y) bir sürekli görüntü fonksiyonu olsun. Bu
görüntünün p+q nuncu dereceden geometrik momentleri şöyle
tanımlanır:
 (1.1)

Geometrik momentler görüntü
hakkında geniş bir bilgi sağlar ve pattern recognition için popülerdir.
Geometrik dönüşümlerde değişmezlik pattern recognition
da istenen bir özelliktir. (1.1)’ de tanımlanan momentler görüntünün koordinatlarına
bağımlıdır ve değişmezlik özelliği göstermezler. Bu sorun, momentlerin normalize
türlerinin uygun kombinasyonlarını tanımlamakla giderilir. Amaç aşağıda verilen
dönüşümlerde değişmezliği olan momentler tanımlamaktır.


Öteleme:


Ölçekleme:

Döndürme:
Bunun için aşağıdaki merkezi momentler tanımlanır:

(1.2)
Burada


dır.

Normalize merkezi momentler:

Bu momentler öteleme ve ölçekleme için değişmezdir.
Hu’ nun yedi momenti:
1962’ de Hu öteleme, ölçekleme ve döndürme için
değişmez olan yedi moment tanımlamıştır. Bunlar:





  








Bu momentlerin ilk altısı aynı zamanda aynalamada
da değişmezdir. Aynalama durumunda yedinci momentin mutlak değeri değişmez,
işareti değişir. Bu büyüklükler oldukça değişik değerler alabilirler. Pratikte
doğruluk sorunlarından kaçınmak ve değişim aralığını kısıtlamak için momentlerin
mutlak değerlerinin logaritmaları kullanılır.
Uygulama
OCR yazılımlarında yapay sinir
ağları ve klasik olmak üzere iki programlama yöntemi vardır.Biz bu projede
klasik yöntemi kullanacağız. Klasik yöntem momentler yardımıyla karakter tanıma
işlemidir. Çalışmamızda Hu'nun 7 momentini kullanarak, karakterlere ait
özel değerler bulduk. Bu 7 moment değerinin farklı karakterler için farklı
olduğunu gördük. Zaten bu da bizim istediğimiz bir durumdur. Örneğin
bir A harfi için bulunan 7 moment değeri, B harfi için bulunan 7 moment değeriyle
karşılaştırıldı, sonunda bu değerlerin birbirinden çok farklı olduğu görüldü,
böylece bu karakterlerin farklı karakterler olduğu anlaşılmış oldu.
Program iki ana bölümden oluşmaktadır.
1. Eğitim Verileri Oluştur

Programda kullanılacak olan
karakterlerin moment değerlerinin belirlenmesi ve kaydedilmesi
Önce her karakter için 30 adet
örnek topladık. Harflerin bir kısmını kendimiz paintte oluşturduk ve jpg olarak
kaydettik. Bir kısmını da tarayıcıdan aldığımız dokümanlardan elde ettik. Topladığımız
30 örneğin 15'inin moment değerlerini hesapladık ve bunları kaydedip
eğitim verileri olarak kullandık. Bulduğumuz moment değerleri her karakter
için farklı oldu. Bu da karakterlerin tanınması için gereklidir.
2.OCR simülasyonu

Tanımak için açtığımız JPG formatındaki
yazıyı yatay ve dikey tarayarak önce sınıflarını bulduk. Böylece karakterleri birbirinden
ayırt etmiş olduk. Programı test etmek için kullandığımız tüm karakterler
için de moment değerlerini hesapladık ve bu değerleri veri tabanındaki daha
önceden hesaplamış olduğumuz değerlerle karşılaştırdık. Test için kullanılan
bir karakterin moment değeri, veri tabanındaki karakterlerin moment değerleriyle
karşılaştırıldı ve birbirine en çok benzeyen değerlerin aynı karaktere ait
olduğunu görüldü.( korelasyon).
Sonuç
Tanımak istediğiniz karakterler
hangi büyüklük ve fontta ise eğitim verilerini de aynı büyüklük ve fontta veri
olarak programa hesaplatmamız gerekiyor. Çalışmamızda arial fontunda 8 büyüklüğündeki
karakterler kullandığımızda başarımız %100 oluyor. Fakat karakterler büyüdükçe
bozulma oranı artıyor ve başarı da düşüyor.
Tuba Çağlıkantar, Sema Öksüzoğlu, Gülçin Yücel, Erciyes Üniv.
Bilgisayar Müh.
tuba@teknohaber.net
|