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.

GitHub

GitHub İstatistikleri

İsim:
Dil:
Yıldızlar:
Çatallar:
Lisans:
Depo en son şu tarihte güncellendi:

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.

trOCR el yazısı ve basılı metinleri işlerken

Ö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
8GB4-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.

Benzer Ürünler

 Türkçe