OCR (Optical Character Recognition - Optik Karakter Tanıma)

Eyl 08, 2013
OCR (Optical Character Recognition - Optik Karakter Tanıma), taranmış kağıt evraklar, PDF dosyalar veya dijital kamerayla çekilen resimler gibi belge türlerinin düzenlenebilir ve aranabilir verilere dönüştürülmesine olanak sağlayan bir teknolojidir. OCR, resimlerdeki harfleri seçip ayırarak harflerden kelimeleri ve kelimelerden de cümleleri oluşturur.

OCR'nin Çalışma Mantığı

OCR yazılımları kağıt vb. üzerindeki siyah noktalar topluluğunu yani harfleri, rakamları, sembolleri vb. algılayabilecek ve okuyabilecek bir yapıya sahiptirler. Her kelimeyi ayrı tutarak ve sayfayı satırlara bölerek analiz eder. Analiz sırasında harflerin yapısal karakterleri, yükseklikleri ve genişlikleri değerlendirilir. Programın kendi bilgi deposu, her bir karakter için tanımlanmış çeşitli parametrelerle doludur. Algılanan pikseller bu parametrelerden birisine uygun ise, harfin ortaya çıkması mümkün hale gelir.

Resim dosyalarının ve tarayıcının kaliteli olması OCR yazılımlarının metin tarama hatalarını çok düşük seviyeye indirir. Son yıllarda piyasaya sunulan OCR yazılımları hemen hemen her türlü karakter yakalayabilecek seviyelere ulaşmıştır.

Bazı OCR Sistemleri  

Günümüzde kullanılmakta olan bir çok OCR motoru mevcuttur. Bunlardan popüler olanlardan bazıları aşağıda verilmiştir.

  • ABBYY FineReader: Metin tanıma ve belge dönüştürme aracı ABBYY FineReader, kullanıcılarına yüksek doğruluk ve verimlilik sunan bir tarama ve OCR yazılımıdır. Bu sezgisel OCR çözümü, basılı materyalleri yeniden yazma ihtiyacını ortadan kaldırarak belgeleri düzenlenebilir ve arama destekli verilere dönüştürmek için gereken iş gücünü ve masrafları azaltır. Kağıt evrakları, PDF'leri ve metin içeren fotoğrafları tarayarak düzenlenebilir ve içinde arama yapılabilir dosyalar oluşturur. 189 dilde ve her türlü dil kombinasyonunda yeniden yazma ve biçimlendirme ihtiyacını ortadan kaldırır. Belgelerin üstün hız ve mükemmel doğrulukta dijital ortama aktarılmasını sağlar. Kolay kurulur ve öğrenilir. Ücretlidir.
     
  • Tesseract: Tesseract, çeşitli işletim sistemleri için geliştirilen optik karakter tanıma yazılımıdır. İlk olarak 1985 - 1995 yılları arasında Hewlett-Packard tarafından kapalı kaynak bir yazılım olarak geliştirilmiştir. 2005 yılındaysa Hewlett Packard ve UNLV tarafından özgür yazılım olarak yayınlanmıştır. Pek çok dille birlikte kullanılabilir ve Türkçe desteği çok iyidir. Hızlı ve ücretsizdir. Tesseract piyasada mevcut en doğru özgür yazılım OCR motorlarından biri olarak kabul edilir.

  • MODI (Microsoft Office Document Imaging): MODI, Microsoft Office 2003-2007 arasındaki sürümlerinde yer alan ve kısayolu Başlat menüsündeki Office program klasörü altındaki Tools klasöründe bulunan bir uygulamadır. MODI, taranmış dokümanların düzenlenmesi, WORD formatına çevrilmesi ve doküman içinde metin arama gibi bir çok işlemi yapan bir uygulamadır. Ücretsizdir ve .NET kütüphanesine uyumludur.

MODI Kütüphanesi için Örnek C# Uygulaması

MODI kütüphanesinin kullanılabilmesi için Microsoft Office 2003-2007 arasındaki sürümlerden birisinin yüklü olması gerekmektedir. MODI, Microsoft Office 2010 ve üzeri sürümlerden kaldırılmıştır. Eğer kullanılacak bilgisayarda Microsoft Office 2010 veya üzeri bir sürüm yüklüyse MODI kütüphanesini kullanabilmek için ücretsiz bir yazılım olan SharePoint Designer 2007 kurulabilir. MODI kullanımı için SharePoint Designer 2007 kurulumu buradaki doküman takip edilerek yapılmalıdır.

Örnek uygulama için yeni bir C# konsol projesi oluşturulur ve aşağıdaki adımlar uygulanır.

  1. Projenin üzerine sağ tıklanır ve Add Reference seçilir.


     
  2. Daha sonra gelen ekranda COM sekmesine tıklanır, listeden Microsoft Office Document Imaging 12.0 Type Library seçilerek OK düğmesine basılır.

     

Yukarıdaki adımların uygulanmasının ardından Program.cs dosyası oluşturulur ve aşağıdaki örnek kod içerisine yazılır. Örnek kod içerisinde yorum satırlarıyla yapılan her işlem anlatılmıştır.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MODI;

namespace OCR
{
    class Program
    {
        static void Main(string[] args)
        {
            // Kullanıcıdan okunacak dosyanın adı istenir.
            Console.Write("Lütfen okunacak dosyanın adını giriniz: ");
            string dosyaAdi = Console.ReadLine();
                            // MODI.Document nesnesi yaratılır.
            Document document = new Document();
            // Nesnenin Create fonksiyonuna okunacak dosyanın adı verilir.
            // Dosyanın adı dosyanın yolunu da içermelidir.
            // Örnek: D:\okunacak_dosya.png
            document.Create(dosyaAdi);
            document.OCR(MiLANGUAGES.miLANG_ENGLISH, true, true);
            // Boş bir string değişken oluşturulur.
            // Foreach döngüsü ile okunan kelimeler bu değişkene eklenir.
            string okunanMetin = "";
            foreach (MODI.Image image in document.Images)
                okunanMetin += image.Layout.Text;
            // Okunan veri ekrana yazdırılır.
            Console.WriteLine("\n" + okunanMetin);
            Console.Read();
        }
    }
}
 
Örnek kodda görülebileceği gibi MODI.Document.OCR(LangId, OCROrientImage, OCRStraightenImage) fonksiyonu 3 parametre almaktadır. Parametreler ve anlamları aşağıda belirtilmiştir.
  1. enum LangId:  MiLANGUAGES sınıfı içerisinde tanımlanmış olan constant enum değeri. Taranacak dokümanın dili belirtilmelidir. Aynı zamanda bu dil desteğinin kullanılacak olan bilgisayara kurulması gerekir. Tüm bilgisayarlarda kullanılabilecek ve ek kuruluma ihtiyaç duymayan diller İngilizce, Fransızca ve İspanyolca'dır.

  2. bool OCROrientImage: OCR motorunun sayfa yönünü(yatay, dikey) belirleyip buna uygun davranıp davranmamasını belirtir. Ön tanımlı olarak true değerini alır.

  3. bool OCRStraightenImage: OCR motorunun karakterlerin daha iyi okunabilmesi amacıyla karakterlerin açılarını düzeltip düzeltmemesini belirtir. Ön tanımlı olarak true değerini alır.
Örnek kod çalıştırılır ve aşağıdaki örnek resim okunacak dosya olarak verilirse resim altındaki ekran görüntüsü elde edilir.
 
Örnek resim:


 
Ekran görüntüsü: