Optical Character Recognition (OCR)
Optik karakter tanıma (OCR), tarama ve fotoğraflardaki metni makinelerin okuyabileceği karakterlere dönüştürür. Algılama ve tanıma aşamaları, kod örneğiyle.
Optik karakter tanıma (OCR), taranmış sayfalar, fotoğraflar, ekran görüntüleri ve video kareleri gibi görüntülerdeki metni, yazılımların arayabileceği, düzenleyebileceği ve analiz edebileceği makine tarafından okunabilir karakterlere dönüştürür. İlk sistemler her karakteri bilinen yazı tiplerinin saklanmış şablonlarıyla eşleştiriyordu. Modern OCR, çeşitli yazı tiplerini, düşük çözünürlüğü, perspektifi ve karmaşık arka planları işleyebilmek için derin öğrenmeyle görüntüdeki metni her yerde bulur ve sözcüklerin ve satırların tamamını aynı anda okur. OCR, fatura ve kitap gibi belge metinlerinin yanı sıra tabelalar, ürün etiketleri ve plakalar gibi sahne metinlerini de kapsar.
OCR Nasıl Çalışır?#
Çoğu OCR sistemi iki modeli sırayla çalıştırır:
- Metin algılama: Bir algılayıcı, görüntünün metin içeren bölgelerini bulur ve her sözcük veya satır için bir kutu ya da çokgen çıktısı verir. EAST, CRAFT ve DBNet gibi sahne metni algılayıcıları metin bölgelerini piksel piksel tahmin ederek eğri ve döndürülmüş metinleri işler.
- Metin tanıma: Her bölge kırpılır, düzleştirilir ve sabit bir yüksekliğe yeniden boyutlandırılır; ardından bir tanıyıcı karakterleri okur. CRNN tasarımı, kırpılmış görüntüyü bir CNN katmanından geçirir, elde edilen özellik sütunlarını çift yönlü bir LSTM ile soldan sağa okur ve bağlantıcı zamansal sınıflandırmayla (CTC) çözümler. CTC, her karakterin nerede başladığını etiketlemeden sütun başına tahminleri bir karakter dizisiyle hizalar. Microsoft'un TrOCR modeli gibi Transformer tabanlı tanıyıcılar ise karakterleri bir metin kod çözücüyle üretir.
İkili eşikleme ve eğrilik düzeltme gibi ön işleme yöntemleri, kalitesi düşük taramalarda hâlâ yararlıdır. Son işleme aşamasında çıktı sözlükler, beklenen biçimler veya bir dil modeliyle denetlenir. EasyOCR, 80'den fazla dil için her iki aşamayı, bir CRAFT algılayıcısını ve bir CRNN tanıyıcısını bir arada sunar:
import easyocr
# Load EasyOCR's CRAFT text detector and English CRNN text recognizer
reader = easyocr.Reader(["en"])
# Detect every text region in the photo, then read the characters inside it
results = reader.readtext("https://ultralytics.com/images/bus.jpg")
# Each result holds a 4-corner box, the recognized string, and a confidence score
for box, text, confidence in results:
if confidence > 0.5:
print(f"{text}: {confidence:.2f}")cero: 0.95 ve emisiones: 0.99 yazdırılır; bunlar otobüsün yanına yazılmış sözcüklerdir. Algılayıcı ayrıca otobüsün nokta vuruşlu varış yeri tabelasını ve camlarındaki küçük yazıları bulur, ancak tanıyıcı bunlar için güven değerleri 0.5'in altında olan anlamsız dizeler döndürür; bu nedenle eşik bunları eler.
Belgelerde tanımadan önce bir sayfa düzeni adımı gerekir. Bir düzen modeli sayfayı bloklara ayırır, her blok türü ayrı işlenir ve sonuçlar okuma sırasına göre yeniden birleştirilir; böylece iki sütunlu bir makale her seferinde tek sütun okunur:
Doğruluk, çıktıyı doğru metne dönüştürmek için gereken karakter ekleme, silme ve değiştirme işlemlerinin sayısının doğru metnin uzunluğuna bölünmesiyle hesaplanan karakter hata oranı (CER) ve aynı yöntemin sözcüklere uygulanmasıyla hesaplanan sözcük hata oranı (WER) ile ölçülür.
OCR Motorları ve Modelleri#
Açık kaynaklı Tesseract motoru 1980'lerde Hewlett-Packard bünyesinde başladı, 2005'te açık kaynak olarak yayımlandı ve 2006'dan 2018'e kadar Google'ın sponsorluğunda geliştirildi; 4. sürümde LSTM ağına dayalı bir tanıma motoru eklendi. Google Cloud Vision ve Amazon Textract gibi bulut hizmetleri, düzen, tablo ve form çıkarma özellikleri sunar. Görüntü-dil modelleri belgeleri giderek daha fazla baştan sona okuyor: Allen Institute for AI tarafından geliştirilen olmOCR, PDF sayfalarını ince ayar yapılmış bir görüntü-dil modeliyle temiz metne dönüştürür; OCR gerektirmeyen belge modelleri ise önce ayrı bir döküm oluşturmadan sayfayla ilgili soruları yanıtlar.
OCR ve İlgili Terimler#
- El yazısı tanıma: El yazısı metin tanıma (HTR) veya akıllı karakter tanıma (ICR) olarak da adlandırılır. Harf biçimlerinin basılı metne kıyasla çok daha fazla değiştiği ve karakterlerin sıklıkla birbirine bağlandığı el yazısını okur.
- Nesne algılama: Bir algılayıcı dur işaretini nesne olarak bulabilirken OCR, işaretin üzerindeki DUR harflerini okur. OCR'nin kendi algılama aşaması ise metni okumadan konumunu belirler.
- Görüntü sınıflandırma: Görüntünün tamamına "fatura" gibi tek bir etiket atarken OCR, görüntünün içindeki karakter dizisini çıkarır.
- Akıllı belge işleme: Belirli alanları (örneğin bir faturanın tarihini, tedarikçisini ve toplamını) iş sistemlerine aktarmak için OCR'yi düzen çözümleme ve adlandırılmış varlık tanıma (NER) ile birleştirir.
Gerçek Dünya Uygulamaları#
- Plaka tanıma: Ücret toplama, park ve trafik denetim sistemleri her plakayı algılar ve ardından okur. Plaka kutuları üzerinde eğitilmiş bir YOLO26 modeli algılama aşamasını yürütür; yönlendirilmiş sınırlayıcı kutu çeşidi ise eğik plakaları döndürülmüş kutularla çevreleyerek tanımadan önce kırpılan görüntünün düzleştirilmesini sağlar.
- Belge dijitalleştirme: Bankalar, sigorta şirketleri ve kamu kurumları formları, makbuzları ve arşivleri aranabilir metne dönüştürür; kütüphaneler de basılı kitapları büyük ölçekte dijitalleştirir.
- Erişilebilirlik ve çeviri: Ekran okuyucular ve kamera çeviri uygulamaları tabelaları, menüleri ve etiketleri sesli okur veya canlı görüntünün üzerine çeviri bindirir.
- Üretim ve lojistik: Kameralar, üretim hatlarında parti kodlarını, son kullanma tarihlerini ve seri numaralarını okur. Nakliye konteyneri kodları ISO 6346 standardına uyar; bu kodların 11 karakteri, ilk 10 karakterden hesaplanan bir kontrol basamağıyla biter ve bu sayede okuyucu yanlış okunan kodların çoğunu otomatik olarak reddedebilir.










