Python ile OCR(Optical Character Recognition) Uygulaması

Celal ORMANLI
Kronnika
Published in
3 min readJan 30, 2020

Merhaba, Biz Kronnika ekibi olarak bilginin paylaşılması ve daha çok insana ulaşmasından yanayız. Yaptığımız her şey için araştırıyoruz ve sürekli öğreniyoruz. Öğrendikçe de öğrendiklerimizi paylaşmak istiyoruz. Bu amaçla Kronnika olarak kullandığımız teknolojiler ile ilgili yazılar yazmak için elimizden geleni yapacağız. Haydi ilk yazımızla başlayalım.

Bu yazıda resimler üzerindeki metinleri texte çeviren basit bir OCR uygulaması yapacağız. Robotik süreç otomasyonlarında OCR sürekli kullanılan bir teknolojidir. Kullanım amacı genel olarak taranmış pdflerden yazı çekmek veya karşılaşılan Captchalar üzerindeki verileri çözerek yazıya dönüştürmek. Böylece insanlar ile robotları ayırmak için kullanılan bu kapılardan robotların insan müdahalesi olmadan hızlı bir şekilde geçmesini sağlıyoruz. Kronnika olarak robotlarımız bunu yapabiliyor.

OCR Nedir?

OCR diğer adıyla Optik Karakter Tanıma, resim ve taranmış belgeler üzerindeki yazıları dijital ortama aktaran yöntemlerdir. Ayrıca el yazısı ile yazılmış metinleri de dijital ortama aktarmak için kullanılabilir.

OCR işlemleri için internette bir sürü açık kaynak kodlu kütüphane bulunmaktadır. OCR ile ilgili araştırma yaparken Tesseract ve Pyocr kütüphaneleri ile sıkça karşılaştık. Biz de ilk aşama için Tesseract ile ilerlemeye karar verdik.

Şimdi bilgisayarımızda Python ile sıfırdan bir OCR uygulaması oluşturalım. Bunun için biz Ubuntu üzerinde çalıştık ancak Windows üzerinde de bu işlemler kolaylıkla yapılabilir.

pip install pytesseract

komutu ile kütüphaneyi bilgisayarımıza yüklüyoruz.

pip install Pillow

komutu ile PIL kütüphanesini de yüklüyoruz. Bu kütüphaneyi de kullanmamızın nedeni resimler üzerindeki yazıları texte dönüştüreceğiz. Resimleri açıp üzerinde işlemler yapabilmek için Pillow kütüphanesini kullanmamız gerekiyor.

Ardından terminalde

nano ocr.py

komutu ile Python projemizi oluşturuyoruz. Proje kolay ve kısa olduğu için nano ile çalışabiliriz. Kendiniz hali hazırda kullandığınız bir editör veya IDEden devam edebilirsiniz.

from pytesseract import image_to_string 
from PIL import Image
print(image_to_string(Image.open('resim.jpg')))

Ardından yukarıdaki 3 satır kod ile istediğimiz resimden yazıları texte çevirebiliyoruz. Kodda sadece terminalde ekrana yazdırma var ancak bu herhangi bir dökümana da kaydedilebilir.

python ocr.py

komutu ile projemizi çalıştırıyoruz.

Resimdeki harfleri okutmak için kodu çalıştırdığımızda aşağıdaki gibi bir sonuç elde etmiş oluyoruz. Resimdeki harfler biraz silik ve farklı fontta olmasına rağmen neredeyse başarılı bir sonuç elde ettik.

Belli bir bozulma oranını aşmadığımız sürece istediğimiz resimdeki yazıları bu şekilde texte dönüştürebiliyoruz. Bunun için el yazısı üzerinde de denemeler yapılabilir. Bazılarımız için kendi el yazımız hariç çoğu el yazısında başarılı sonuçlar verecektir. Kendi el yazımızı bazen biz bile okuyamazken, bunu bilgisayardan beklemek biraz garip olacaktır. Default olarak İngilizce metinler için gelen Tesseract’ın ayrıca Türkçe metinler için de desteği bulunmaktadır. Bunun için gerekli tessdata dosyasını bilgisayarımıza kurduğumuzda istediğimiz resimde bulunan Türkçe dökümanı da texte çevirebiliriz. Türkçe yazılı görseller üzerinde de birkaç deneme yaptığımızda gayet başarılı sonuçlar elde ettik.

Development ile ilgili bu ilk yazımızda Kronnika olarak kullandığımız bir teknolojinin üzerinden geçtik. Robotlarımızı daha verimli hale getirmek ve yeteneklerini artırabilmek için sürekli araştırıyoruz ve öğreniyoruz. Öğrendiklerimizi paylaşmaktan da mutluluk duyuyoruz. Bir sonraki yazımızda görüşmek dileğiyle…

--

--