trOCR: Metin Tanımada Transformer Devrimi
Basılı, el yazısı ve çok dilli içeriklerde insan seviyesinde doğruluk elde edin
trOCR API Nedir?
trOCR (Transformer Tabanlı Optik Karakter Tanıma), metin tanımada benzersiz doğruluk sunan Microsoft'un çığır açan OCR modelidir. Geleneksel OCR sistemlerinin aksine yalnızca evrişimsel ağlara dayanmak yerine, trOCR vision transformer'ları (ViT) sequence-to-sequence modelleme ile birleştirerek bağlamı ve metindeki uzamsal ilişkileri anlayabilir - el yazısı notlar, düşük çözünürlüklü taramalar veya karmaşık komut dosyaları gibi zorlu girdilerde bile.
trOCR'ın temel avantajları:
- İnsan benzeri tanıma: Geleneksel OCR'ın başarısız olduğu el yazısı ve bozulmuş metinlerde üstün performans
- Çok dilli destek: İngilizce, Fransızca, Almanca ve daha fazlası için önceden eğitilmiş modeller
- Uçtan uca işlem: Metin algılama ve tanımayı tek bir akışta birleştirir
- Kolay entegrasyon: Mevcut iş akışlarına basitçe entegre edilebilen Hugging Face Transformers kütüphanesi
Tarihi arşivlerin dijitalleştirilmesinden faturaların işlenmesine kadar - trOCR gerçek dünya uygulamalarında OCR performansı için yeni bir standart belirliyor.
Neden trOCR'ı Seçmelisiniz?
- Transformer gücü: IAM Handwriting gibi kıyaslamalarda CNN tabanlı modellerden %15-20 daha doğru
- El yazısı uzmanı:
trocr-base-handwritten
modeli el yazısı metinlerde >%90 doğruluk sağlar - Minimum ön işlem: Yazı tipi, yönlendirme ve arka plan gürültüsü değişikliklerine karşı dayanıklı
- Ölçeklenebilir çıkarım: GPU'larda neredeyse doğrusal hızlanma ile toplu işlem
- Özelleştirilebilir: Alanınıza özel verilerle (reçeteler, fişler vb.) ince ayar yapabilme
Kurulum
trOCR, PyTorch veya TensorFlow ve Hugging Face Transformers kütüphanesi gerektirir. En iyi performans için GPU ortamı önerilir:
PyTorch ile kurulum (GPU önerilir)
pip install transformers torch torchvision
pip install datasets # İnce ayar için opsiyonel
Not: microsoft/trocr-base
modelleri varyant başına (basılı/el yazısı) ~1.5GB disk alanı gerektirir. Toplu işlem için yeterli RAM (8GB+) sağlayın.
Kod Örnekleri
Bu pratik uygulamalarla trOCR'ın yeteneklerini keşfedin. Tüm örnekler gerekli bağımlılıkların yüklü olduğunu varsayar.
Örnek 1: El Yazısı Metin Tanıma
Bu örnek, trOCR'ın el yazısını çözme gücünü gösterir. Model (trocr-base-handwritten
) IAM Handwriting Database ile eğitilmiştir, notlar, mektuplar veya tarihi belgeler için idealdir.
El Yazısı Tanıma
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
# İşlemci ve modeli yükle (el yazısı için özel)
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-handwritten")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-handwritten")
# Görseli aç ve ön işleme
image = Image.open("el_yazisi_not.jpg").convert("RGB") # RGB formatından emin ol
pixel_values = processor(image, return_tensors="pt").pixel_values # Normalize ve yeniden boyutlandır
# Metin tahminleri oluştur
generated_ids = model.generate(pixel_values)
text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(f"Çıkarılan Metin: {text}")
İpucu: El yazısı için en iyi sonuçlar:
- 300+ DPI taramalar kullanın
- Gölgeleri önlemek için uygun aydınlatma
- Mümkünse metin bölgelerine kırpın
Örnek 2: Basılı Belge İşleme
Daktilo veya basılı metinler (kitaplar, faturalar vb.) için trocr-base-printed
modeli neredeyse mükemmel doğruluk sunar:
Basılı Metin Çıkarımı
from transformers import pipeline
from PIL import Image
# Basitlik için Hugging Face pipeline kullan
ocr = pipeline("image-to-text", model="microsoft/trocr-base-printed")
# Belgeyi işle
image = Image.open("sozlesme.png").convert("RGB") # RGB'ye dönüştür
results = ocr(image)
# Sonuçları yapılandır
for idx, item in enumerate(results):
print(f"Sayfa {idx + 1}: {item['generated_text']}")
Performans Notu: NVIDIA T4 GPU'da saniyede ~3 sayfa işler. Toplu işlemler için batch kullanın (Örnek 3'e bakın).
Örnek 3: Verimlilik için Toplu İşleme
trOCR, donanım kullanımını en üst düzeye çıkarmak için toplu çıkarımı destekler:
Paralel Metin Çıkarımı
import torch
from transformers import TrOCRProcessor, VisionEncoderDecoderModel
from PIL import Image
# Başlat
device = "cuda" if torch.cuda.is_available() else "cpu"
processor = TrOCRProcessor.from_pretrained("microsoft/trocr-base-printed")
model = VisionEncoderDecoderModel.from_pretrained("microsoft/trocr-base-printed").to(device)
# Toplu iş hazırla
image_paths = ["belge1.jpg", "belge2.jpg", "belge3.jpg"]
images = [Image.open(path).convert("RGB") for path in image_paths]
# Toplu işle
pixel_values = processor(images, return_tensors="pt").pixel_values.to(device)
generated_ids = model.generate(pixel_values)
texts = processor.batch_decode(generated_ids, skip_special_tokens=True)
# Sonuçları göster
for path, text in zip(image_paths, texts):
print(f"{path}: {text[:50]}...") # İlk 50 karakteri göster
Toplu İş Boyutu Kılavuzu:
GPU VRAM | Önerilen Toplu İş Boyutu |
---|---|
8GB | 4-8 görsel (1024x768) |
16GB+ | 16-32 görsel |
Gelişmiş İpuçları
trOCR performansını daha da artırmak için:
- Ön işleme: OpenCV ile açı düzeltme ve kontrast ayarı:
Görsel İyileştirme
import cv2 img = cv2.imread("dusuk_kalite_belge.jpg") img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # Yönlendirmeyi düzelt img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1] # İkilileştir
- İnce ayar: Kendi verilerinizle özelleştirin:
İnce Ayar Betiği
from transformers import Seq2SeqTrainingArguments args = Seq2SeqTrainingArguments( output_dir="./trocr-ince-ayar", per_device_train_batch_size=8, num_train_epochs=3, save_steps=1000, evaluation_strategy="steps" ) # Tam kurulum için Hugging Face dokümanlarına bakın
Sonuç
trOCR, transformer mimarilerini bilgisayarlı görü ile birleştirerek optik karakter tanımanın sınırlarını yeniden çiziyor. Karalama notlarından çok dilli belgelere kadar her şeyi işleyebilme yeteneği onu vazgeçilmez kılar:
- Arşiv projeleri: Biçimlendirmeyi koruyarak tarihi belgeleri dijitalleştirin
- Tıbbi/hukuki iş akışları: Denetim izleriyle hassas belgelerden metin çıkarın
- Erişilebilirlik: Görseller için ölçeklenebilir alternatif metin oluşturun
Microsoft ve açık kaynak topluluğunun sürekli iyileştirmeleriyle trOCR, metin tanıma teknolojisinin sınırlarını zorlamaya devam ediyor.