OCR, yani optik karakter tanıma, bir görüntüdeki harf şekillerini metne çeviren okumanın adıdır. Karar aracın adında değil belgenin kendisinde veriliyor: okunacak şey serbest bir yazı mı, yeri önceden belli bir işaret mi, yoksa ayrılacak bir bölge mi. Vipkurum’un optik okuma aracında okunan şey bir harf değil, formdaki işaretleme.
OCR nedir, açılımı ne, ne işe yarar
Harfler İngilizcedeki optical character recognition ibaresinin baş harfleri; Türkçe karşılığı optik karakter tanıma. Kısaltmanın gösterdiği şey bir program adı değil, bir iş tanımı: bir görüntünün içinde duran yazıyı, yazılımın üzerinde işlem yapabileceği karakterlere dönüştürmek. Tanımın çekirdeği de bu dönüşümün uçlarında duruyor. Bir uçta bir görüntü var, öteki uçta bir metin.
Terimin geniş kullanımı bir karışıklık üretiyor. Bir satıcının ağzında kısaltma genel bir belge yazılımı anlamına doğru genişleyebiliyor ve içine birbirinden farklı işler giriyor. Tanımı dar tutmanın pratik faydası da burada: dar tanım, elinizdeki belgenin bu tanıma uyup uymadığını ölçmenize izin veriyor. Geniş tanım ölçüm yapmanıza izin vermiyor, yalnız umut vermeye yarıyor.
Çıktının metin olması kulağa küçük bir ayrıntı gibi geliyor, oysa belgeyle yapılabilecek her şeyi o belirliyor. Metin aranabiliyor: bir kelimeyi yazdığınızda belgenin hangi satırında geçtiğini bulabiliyorsunuz. Metin kopyalanabiliyor: başka bir yere taşımak için yeniden yazmak gerekmiyor. Metin bir alana yazılabiliyor; bir forma, bir tabloya ya da bir kayda düşebiliyor. Görüntü hâlindeyken bunların hiçbiri mümkün değil. Sayfa elinizde duruyor, ama üzerindeki yazıya yazılımın eli değmiyor.
Faydayı somut kılan şey, metnin sonradan ne yapabildiği. Bir belge metne dönüştüğünde onu arayabiliyorsunuz, bir listeye dizebiliyorsunuz, bir alana bağlayabiliyorsunuz. Bunların hiçbiri OCR’ın kendi işi değil; OCR yalnız kapıyı açıyor. Kapının arkasında ne yapılacağı ayrı bir kurulum sorusu ve bu yazının sonunda ona da dönüyoruz.
Bu okumanın gerekli olduğu yer de tanımdan çıkıyor. Yazı bir görüntünün içine girmişse ve ona yazılım tarafından dokunulması gerekiyorsa, arada bir çevirme adımı var. Yazı hiç görüntüye girmemişse o adım da yok. Fark belgenin nereden geldiğinde: ekranda yazılmış bir metinle, basılıp sonra taratılmış bir metin aynı dosya biçiminin içinde durabiliyor ama aynı şeyi taşımıyor.
Kısaltmanın bir de kendi gürültüsü var. Aynı harf dizisi yazılımın dışında başka şeyleri adlandırıyor ve arama sonuçlarına bir ilaç adı karışıyor. Buradan sonrası belge okuyan yazılımla ilgili; sağlık tarafındaki aramaların bu yazıda karşılığı yok.
Taranmış bir sayfa neden kendiliğinden metin değildir
Tarayıcı bir kopyalama aracı gibi görünüyor, oysa fotoğraf makinesine daha yakın çalışıyor. Kâğıdı aydınlatıyor, üzerindeki açık ve koyu alanları ölçüyor, bu ölçümleri bir ızgaraya diziyor. Dosyanın içinde duran şey işte bu ızgara. Koyu alanların bir kısmı gözünüze harf gibi görünüyor; yazılım için orada harf yok. Noktalar var ve her noktanın taşıdığı tek bilgi kendi rengi.
Tanıma kelimesi tam bu boşluğu dolduruyor. Noktaların oluşturduğu şekiller, yazılımın bildiği karakter biçimleriyle karşılaştırılıyor ve her şekle bir karşılık aranıyor. Karşılık bulunduğunda sayfada ilk kez bir metin oluyor. Yani metin taramanın yan ürünü değil, ayrı bir adımın çıktısı. O adım çalışmadıysa dosya hâlâ bir resim taşıyor.
Bu ayrımın işletme tarafındaki karşılığı somut. Taranmış bir arşiv dijital görünüyor: dosyalar klasörlerde duruyor, yedekleniyor, ekranda açılıyor. Ama arşivin içinde geçen bir adı ya da bir değeri aramak isterseniz arama kutusu boş dönüyor. Dijitalleşen şey sayfanın görüntüsü; sayfanın içeriği hâlâ yalnız insan gözüyle okunabiliyor. Aradaki farkı kapatan adımın adı tanıma.
Buradan bir yanılma doğuyor. Dosya biçimiyle içeriğin türü ayrı sorular: bir belgenin PDF olması içinde yazı bulunduğunu söylemiyor, çünkü aynı biçim bir sayfa fotoğrafını da taşıyabiliyor. Hangisi olduğunu anlamak için dosyayı açın ve içinde geçtiğinden emin olduğunuz bir kelimeyi arayın. Sonuç gelmiyorsa orada henüz metin yok, bir resim var.
Eşlemenin ne kadar kesin olacağı harfin şekline bağlı kalıyor. Şekil ne kadar belirsizse karşılık arama da o kadar belirsizleşiyor. Basılı harf için kurulmuş bir okuma, el yazısında aynı sonucu vermiyor; el yazısını okumak ayrı bir problem ve ayrı bir kurulum istiyor.
Bu bağımlılığın karar tarafındaki karşılığı net. Belgeyi kim dolduruyorsa okumanın zorluk derecesini o belirliyor; matbaadan çıkmış bir sayfa ile elle doldurulmuş bir sayfa aynı tanımaya girmiyor. Bu yüzden belgeniz okunur mu sorusu, belgenin basılı mı yazılı mı olduğuna bakmadan cevaplanamıyor.
Karşı durumu da yazmak gerekiyor. Belgesi baştan yazılım içinde oluşan bir işletmenin bu okumaya hiç ihtiyacı yok: metin zaten metin olarak doğmuş, bir görüntünün içine hiç girmemiş. Harf tanıma yalnız yazının bir görüntüye hapsolduğu yerde gerekiyor.
OCR ile OMR aynı işi yapmaz: harf mi, işaret mi
Belge okuma konuşulurken hemen yanına başka bir kısaltma geliyor. OMR, optical mark recognition ibaresinden geliyor ve Türkçe karşılığı optik işaret tanıma. Kısaltmalar tek harfle ayrıldığı için birbirine karıştırılmaya açık. Yaptıkları iş ise birbirinin yerine geçmiyor.
OMR’ın baktığı şey, önceden belirlenmiş bir alanda işaret olup olmadığı. Harf üretmiyor, metin üretmiyor; bir alanın durumunu bildiriyor. Çıktısı şu kutu dolu, şu kutu boş düzeyinde bir bilgi ve o bilginin anlamı, kutunun formda hangi soruya ait olduğundan geliyor.
Ayrımın kurucu yeri okumanın birimi. Harf tanımada birim harfin kendisi: harf kendi şeklini taşıyor, sayfanın neresine düşerse düşsün aynı harf olarak okunuyor. İşaret tanımada birim konum. İşaretin kendi şekli bir şey söylemiyor; anlamını durduğu yerden alıyor. Aynı kurşun kalem izi bir kutuda bir cevap, komşu kutuda başka bir cevap demek oluyor ve farkı yaratan tek şey konum.
Optik kelimesi her kısaltmada aynı şeyi söylüyor: okuma, kâğıda dokunarak değil ışıkla yapılıyor. Ortak olan girdi; ayrılan şey o girdiden ne çıkarıldığı. Harf tanımada şekiller karakterlere çevriliyor. İşaret tanımada alanlar dolu ya da boş olarak işaretleniyor. Aynı görüntüden çıkarılan bilgi başka başka türde ve birbirine dönüştürülemiyor.
Karışıklığın bedeli de görünür bir yerde duruyor. İşaretli bir form yığınıyla harf tanıma arayan bir işletme, aldığı şeyin kendi kâğıdını okumadığını ancak kurulumdan sonra görüyor. Tersi de oluyor: serbest yazı taşıyan belgeler için işaret okuma kurulmaya kalkıldığında bakılacak sabit bir alan bulunamıyor. Yanlış kalem, teklifte doğru görünüyor; yanlışlığı belgeyle karşılaştığında ortaya çıkıyor.
Bunun pratik sonucu şu: aynı tarayıcıdan geçmiş aynı kâğıt, hangi okuma kurulduysa bambaşka bir çıktı veriyor. Harf tanıma kurulmuşsa elinizde sayfadaki yazının metni oluyor. İşaret tanıma kurulmuşsa elinizde işaretli alanların dökümü oluyor. Karar tarayıcıda değil, okumanın tanımında veriliyor.
Okumalar birbirini de dışlamıyor. Bir belge hem yazı hem işaret taşıyorsa okumaların her biri gerekiyor ve biri ötekinin yerini almıyor. Kâğıdın tek olması okumanın da tek olacağı anlamına gelmiyor.
Belgenizde okunacak şey hangisi
Tablonun ekseni araç markası değil, okunan şeyin kendisi. Bir yerde serbest yazı var, bir yerde yeri sabitlenmiş bir işaret, bir yerde de kesilmesi gereken bir bölge. Satırları okurken elinizdeki belgeyi yanınızda tutabilirsiniz; hangi satıra düşüyorsa okumanın adı ve doğruluğun adresi orada yazıyor.
| Okunan şey | Okumanın adı | Araç ne üretiyor | Doğruluğu neye bağlı |
|---|---|---|---|
| Sayfadaki serbest yazı: harfler nereye düşerse düşsün kendi şeklini taşıyor | Optik karakter tanıma (OCR) | Bir metin: aranabilen, kopyalanabilen, bir alana yazılabilen dize | Harf şeklinin okunaklılığı; el yazısıyla doldurulmuş bir belgede aynı okuma aynı sonucu vermiyor |
| Formun belirli bir alanındaki işaret: anlamı kendi şeklinden değil durduğu yerden geliyor | Optik işaret tanıma (OMR) | O alanın durumu. Vipkurum’un optik okuma aracında bu çıkarmayı OpenCV yapıyor; üretilen şey metin değil | Formun düzeninin okumaya tanıtılmış olması ve işaretin düzgün doldurulması |
| Sayfadaki bir bölgenin sınırı: okunan şey harf değil, nerede başlayıp nerede bittiği | Tanıma değil, ayırma | Kırpılmış bir görsel. Vipkurum’un soru kırpma aracında kitapçık sayfasından soru soru parça çıkıyor | Bölünecek bölgenin geometrisinin belirli olması |
Tablonun alt satırları kendi işlerimizden. Vipkurum için geliştirdiğimiz optik okuma aracı formdaki işareti çıkarıyor, soru kırpma aracı sayfadan bölge ayırıyor. Üst satır ise tanım satırı: portföyümüzde harf tanıma kurulumu bulunmuyor ve bu yazı onu varmış gibi anlatmıyor. Sonraki bölümler elimizdeki örnekleri ayrı ayrı açıyor.
Tablonun son sütunu kolay atlanan yer. Okumanın adını seçmek bir iş; o okumanın neye bağlı olduğunu bilmek başka bir iş. Harf tanımada güvenilirlik ağırlıkla belgenin basım kalitesine ve yazının netliğine bağlı kalıyor. İşaret tanımada ağırlık formu dolduran kişinin dikkatine kayıyor. Ayırmada ise ağırlığı sayfanın geometrisi taşıyor. Satırların hiçbirinde doğruluk yalnız araca bağlı değil; her birinde belgenin bir özelliği de belirleyici.
Satırların ilk sütunu bilerek araç adıyla değil belgenin diliyle yazıldı. Bir işletme kendi kâğıdını serbest yazı ya da yeri sabit işaret diye adlandırmıyor; eline alıp bakıyor. Sütun bu bakışa karşılık geliyor. Araç adı ikinci sütunda, yani karardan sonra geliyor.
İşaret okuma, işaretin nerede duracağını bilmek zorundadır
Optik form özel bir belge türü: üzerindeki her kutunun nereye geleceği baştan belli. Bu belli oluş bir tasarım süsü değil, okumanın önkoşulu. İşaretin anlamı konumdan geldiği için okuma, bakacağı yerleri bilmek zorunda. Bilmiyorsa elinde yalnız koyu lekeler kalıyor ve hangi lekenin hangi soruya ait olduğunu söyleyemiyor.
Vipkurum’un optik okuma aracı tam böyle bir belgeyle çalışıyor. Formun belirli alanlarındaki işaretler görüntüden çıkarılıyor; bu çıkarmayı OpenCV yapıyor. Üretilen bilgi bir metin değil, hangi alanın işaretlendiği. Sayfada yazı da bulunuyor olabilir, ama aracın okuduğu şey o yazı değil.
Düzenin kime ait olduğu burada bir karar hâline geliyor. Formun düzeni kurumun kendi değerlendirme biçimine göre değişiyor ve uyarlama okuma tarafında, yazılımda yapılıyor; yani düzen, okumanın kendi işinin bir parçası. Bu uyarlamanın bedeli ve hangi tarafa düştüğü bu yazının konusu değil; form düzeni değiştiğinde işin nereye kaydığını ayrı bir yazıda anlatıyoruz.
Doğruluğun adresi de harf tanımadakinden farklı. İşaret okumada sonucun güvenilirliği, harfin ne kadar net yazıldığına değil işaretin düzgün doldurulmuş olmasına bağlı. Yarım bırakılmış, taşmış ya da komşu kutuya yayılmış bir işaret okumayı zorluyor. Aracın kaldırdığı şey donanımdı; formun düzgün doldurulması gerekliliği yerinde kaldı.
Bunun okur tarafındaki karşılığı şu: işaret okumada formun tasarımı artık bir yazılım meselesi. Kutuların yeri, sayısı ve sırası okumanın bakacağı haritayı oluşturuyor. Haritayı siz belirliyorsanız okuma da size göre kuruluyor. Harita dışarıdan geliyorsa, yani her gelen form başka bir düzende duruyorsa, önce o düzenin sabitlenmesi gerekiyor.
Bu okumanın kurulamadığı yer de aynı tanımdan çıkıyor. İşaretin nereye geleceği önceden belli değilse bakılacak bir konum yok. Serbest doldurulmuş bir kâğıtta işaret okuma kurulamıyor; o belge başka bir okuma istiyor.
Bu sınır işaret okumanın bir eksikliği değil, tanımının kendisi. Konumdan anlam çıkaran bir okuma, konumun sabit olmasını istiyor. Sabitlik yoksa okuma kurulamıyor ve kurulsa bile ürettiği şey güvenilmez oluyor. Belgeyi sabitlemek bazen yazılımdan önce gelen bir iş hâline geliyor.
Sayfadan soru ayırmak bir tanıma değil, bir ayırma
Okumanın üçüncü hâli en beklenmedik olanı. Bazı işlerde sayfadan istenen şey ne harf ne işaret; sayfanın bir parçasının nerede başlayıp nerede bittiği. Buna bakan iş bir tanıma değil, bir sınır bulma.
Vipkurum’un soru kırpma aracında başlangıç malzemesi basılı bir kitapçık sayfası ve sayfa soru soru ayrılıyor. Sayfanın nereden bölüneceğini görüntü işleme belirliyor. Bölme adımının çıktısı da metin değil: kırpılmış görseller, soru kayıtlarının yanında duruyor. Rafta duran kitapçık böylece soru soru ayrılmış bir havuz hâline geliyor; dönüşen şey sayfanın bölünme biçimi, içindeki yazının türü değil.
Bu bulgu yazının en keskin yeri. Bir iş insanın elinden alınırken harf tanımanın hiç devreye girmediği durumlar var; sayfayı kesme işi de öyle. Öğretmenin görüntü düzenleyicide tek tek kestiği parçaları bir yazılım kesiyor, ama kesme adımı parçanın içindeki yazıyı okumuyor. Çıktı görsel olarak kalıyorsa karakter tanıma bu adıma hiç girmemiş demektir.
Bu yüzden okuma kelimesini duyduğunuzda bir soru daha sormaya değer: okumanın sonunda elinizde ne kalıyor. Metin kalıyorsa tanıma yapılmış. Bir alanın durumu kalıyorsa işaret okunmuş. Bir görsel kalıyorsa yalnız sınır bulunmuş. Aynı kelime bu çıktıların hepsini birden anlatıyor ve farkı yalnız çıktıya bakarak görebiliyorsunuz.
Ayırmanın bir de ters tarafı var. Sınır bulmak metni anlamadığı için, ayırma adımı parçada ne yazdığını bilmiyor. Bu bazı işlerde yeterli, bazı işlerde değil; yeterli olup olmadığını belirleyen şey, parçayla sonra ne yapılacağı. Bir adımı yazılıma vermek için de her zaman anlam gerekmiyor: bazı adımlarda devralınan şey yalnız bir ölçüm, yani nerede başlıyor, nerede bitiyor. Ölçüm yapılabildiği anda iş de yapılabiliyor.
Metnin anlamını gerektiren işler ise görüntü tarafında kalmıyor. Bu yazı o sınırın nereden geçtiğini tartışmıyor; hangi kararın bir modelin yorumuna bırakılmadığını yapay zekâ kararlarında insan denetimini anlattığımız yazıda ayrıca yazdık.
Belgeyi okutmaya karar verirken ne sorulur
Buraya kadarki ayrımların okur tarafındaki karşılığı bir araç adı değil, sorulacak birkaç soru. Sıra da önemli: araç adı en sonda çıkıyor.
Birinci soru belgenin içinde ne durduğu. Serbest yazı taşıyan bir sayfa ile üzerindeki kutulardan biri işaretlenmiş bir form aynı okumayı istemiyor. Aynı dosyadan bir bölgenin kesilmesi gerekiyorsa o da başka bir iş. Bu soru cevaplanmadan geri kalanı konuşulamıyor, çünkü okumanın adı buradan çıkıyor.
İkinci soru düzeni kimin belirlediği. Düzeni siz belirliyorsanız işaret okuma kurulabiliyor, çünkü okumanın bakacağı yer sabit; siz o yeri değiştirdiğinizde değişikliğin nereye düşeceği de belli oluyor. Düzen her gelen belgede başka türlü duruyorsa bakılacak sabit bir konum yok.
Üçüncü soru çıktının ne olması gerektiği. Aranabilir bir metin isteniyorsa harf tanıma gerekiyor. Bir alana düşecek tek bir değer yeterliyse işaretin durumu o işi görüyor. İstenen şey kesilmiş bir görselse hiçbir harfin okunmasına gerek kalmıyor. Çıktının hangi kayda düşeceği ve orada hangi kuralı tetikleyeceği ise ayrı bir işin konusu; o taraf yönetim yazılımları çalışmasına giriyor.
Soruların sırası tersine çevrildiğinde ne olduğunu da görmek kolay. Araç adıyla başlayan bir konuşmada belge, aracın tanımına uydurulmaya çalışılıyor: form yeniden bastırılıyor, sayfa yeniden taranıyor, elle düzeltme adımı akışa giriyor. Belgeyle başlayan bir konuşmada ise araç belgenin peşine düşüyor. Maliyetin nereye yazılacağını bu sıra belirliyor.
Yazının bir sınırı var ve onu açıkça yazmak istiyoruz. Portföyümüzde işaret okuma tarafında iş var, sayfadan bölge ayırma tarafında iş var; harf tanıma kurulumumuz yok. Bu yüzden burada okuduğunuz şey bir yetenek listesi değil. Verdiği şey, elinizdeki belgeye soracağınız soru.
Sürecinizde bir kâğıt, bir form ya da basılı bir malzeme duruyorsa, önce o belgede okunacak şeyin ne olduğunu birlikte ayıralım. Hangi adımın görüntü işlemeye, hangisinin bir modele gittiğini ayırmak yapay zekâ danışmanlığı tarafında yaptığımız ilk iş.