10.1.11

OCR (Optical Character Recognition / Optik Karakter Tanıma) İşlemleri

Grafik veya dosyası içindeki yazılar OCR (Optical Character Recognition/Optik Karakter Tanıma) adi verilen programlar aracılığıyla çözülüp metin (text) dosyalarına dönüştürülebilirler.

OCR işlemlerinin gerçekleştirilmesinde Microsoft Office programının içinde gelen “Microsoft Office Document Imaging 12.0 Type Library” kütüphanesinden faydalanılmıştır. Bu kütüphaneye kısaca  MODI kütüphanesi de denmektedir. Bu kütüphane kullanılarak verilen resim dosyalarının içinde geçen kelimeler metin olarak elde edilmektedir. Kütüphanenin Türkçe dil desteiği de bulunmaktadır.

Office 2003 ile çalışılıyorsa sorun çıkmayacaktır. Ancak Office 2007 ile çalışılıyorsa Microsoft Office Document Imaging programının Office kurulurken default olarak yüklenmemesi nedeniyle MODI'nin yüklenirken kurulmadıysa tekrar kurulması gerekmektedir. Bunun için aşağıdaki adımlar izlenir.

1.Başlat‘ı tıklanır, Çalıştır‘ı tıklanır, Aç kutusuna appwiz.cpl yazılır ve Tamam‘ı tıklanır.
2.Şu anda yüklü programlar listesinde, yüklenen 2007 Office sürümü tıklanır.
3.Değiştir‘i tıklanır.
4.Özellik Ekle veya Kaldır, daha sonra da Devam tıklanır.
5.Office Araçları genişletilir.
6.Microsoft Office Document Imaging genişletilir.
7.Tarama, OCR ve Dizin Oluşturma Hizmetleri Filtresi tıklanır ve ardından Bilgisayarımdan Çalıştır tıklanır.
8.Devam tıklanır.

Yukarıdaki adımlar gerçekleştirilerek herhangi bir kurulum CD’si gerekmeksizin MODI’nin kurulumu yapılır. MODI kurulumu yapılmazsa projede hata oluşur.

MODI kütüphanesi aşağıda görüldüğü gibi projeye referans olarak eklenmiştir.



Kütüphanenin ilgili fonksiyonları kullanılarak karakter tanıma işlemleri gerçekleştirilmiştir. Kodlar aşağıdaki gibidir. Bu kodlar ile resimden okunan metin textbox'a yazdırılır.

namespace OCRIslemleri
{
    public partial class Form1 : Form
    {
        MODI.Document insDocument;
        ArrayList aList = new ArrayList();
        public Form1()
        {
            InitializeComponent();
            insDocument = new MODI.Document();
        }

        private void btnGetImage_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();

            if (openFileDialog1.FileName != "")
            {
                txtImagePath.Text = openFileDialog1.FileName;
            }
        }

        private void btnGetText_Click(object sender, EventArgs e)
        {

            insDocument.Create(txtImagePath.Text);
            insDocument.OCR(MODI.MiLANGUAGES.miLANG_TURKISH, true, true);

            foreach (MODI.Image insImage in insDocument.Images)
            {
                MODI.Layout insLayout = insImage.Layout;
               txtImageText.Text = insLayout.Text;
                aList.Add(insLayout.Text);
            }
           
            insDocument.Close(false);
        }
          
    }
}

Arraylis'e de sonuçları atmıştım, dileyen bu arraylisti class dışından çağırabileceğimiz bir get metodu yazabilir.


Geliştirilen test programı ile class’ın doğru çalışıp çalışmasığı sınanmıştır. Aşağıdaki resim dosyası test programına input olarak verilmiştir.




Test Programından çıktı olarak “Mehmet Ali DEMİR Nail GÖKSEL İÇERİK” çıktısı alınmıştır. Test programının arayüzü ve alınan çıktı aşağıda görülmektedir.


Uygulamayı http://www.yazgelistir.com/Makaleler/1000002310.ygpx adresindeki makaleye bakarak geliştirdim. Bitirme projemde de kullandım. Yalnız 1 Gb RAM'i olan bir bilgisayarda denediğimizde memory hatası verdi, oerformansı orta ve ortanın üstü olan bilgisayarlarda ise problemsiz çalıştı.

İngilizce dili ile karakter tanımak için MODI.MiLANGUAGES.miLANG_TURKISH kısmı MODI.MiLANGUAGES.miLANG_ENGLISH olarak değiştirilmelidir.

Uygulama benim işime yaradı, umarım sizlerin de işine yarar. Çalışmalarınızda kolaylıklar dilerim..

3 yorum:

  1. selamlar ben aynen yaptım lakın hata alıyorum 64 bit olmasından kaynaklanan bı problemmı acaba

    YanıtlaSil
  2. Merhabalar Mehmed Bey, alınan hatanın metnine bakmak lazım. Alınan hata metnini kopyalayıp google arama çubuğuna yapıştırarak ararsanız hızlı bir şekilde çözümü bulacağınızı düşünüyorum.

    Hayırlı çalışmalar dilerim.

    YanıtlaSil
  3. Merhabalar ben Modınin nasıl bir algoritmayla çalıştığını görmek istiyorum. Kodların içeriğine ulaşmam konusunda bir fikriniz var mı:(

    YanıtlaSil

Related Posts Plugin for WordPress, Blogger...