Ultralytics YOLO27: Bekleme listesine katıl.
Başla

Ultralytics YOLO26 ile Sahne Metni OCR

Sahne Metni OCR Nedir?#

Optik karakter tanıma (OCR), görüntülerdeki metinleri algılar ve okur. OCR çözümü, bir Ultralytics YOLO26 metin algılayıcısını metin tanıma arka ucuyla birleştirir. Eksenlere paralel algılama kutularını, yönlendirilmiş kutuları (OBB) ve segmentasyon çokgenlerini destekler, ardından tanınan metni okuma sırasına göre döndürür.

Algılama ve tanıma ayrı bileşenler olarak kalır; böylece sahne metni algılayıcını PaddleOCR veya kendi tanıma modelinle eşleştirebilirsin.

Neden Sahne Metni OCR Kullanmalı?#

  • Esnek metin geometrisi: Yatay, döndürülmüş veya düzensiz metinler için algılama, OBB ya da segmentasyon modellerini kullan.
  • Değiştirilebilir tanıma: Ek entegrasyon kodu olmadan PaddleOCR'ı çalıştır veya başka bir model için çağrılabilir işlev ilet.
  • Yapılandırılmış çıktı: Tanınan metne, tanıma ve algılama güven değerlerine, kaynak geometrisine ve açıklama eklenmiş görüntüye tek bir sonuç nesnesinden eriş.

YOLO26 ile Sahne Metni OCR'ı Çalıştır#

PaddleOCR isteğe bağlıdır ve OCR, recognizer="paddleocr" ile oluşturulduğunda yüklenir; eksiklerse PaddleOCR 3.x'i ve CPU için PaddlePaddle derlemesini kurar. GPU ile tanıma için önce uyumlu bir paddlepaddle-gpu derlemesi kur; temel Ultralytics bağımlılıklarına OCR paketleri eklenmez.

Görüntüyü ve metin algılayıcısını OCR çözümüne ilet. Sonuç, açıklama eklenmiş görüntüyü ve tanınan metni içerir:

Ultralytics YOLO26 ile Sahne Metni OCR
yolo solutions ocr model="scene-text-obb.pt" source="path/to/video.mp4" recognizer="paddleocr"

YOLO26-Text Ağırlıkları#

Herkese açık YOLO26-Text ailesi n, s, m, l ve x OBB ağırlıklarını sunar. ULTRALYTICS_API_KEY değerini kendi Ultralytics Platform API anahtarına ayarla, ardından ağırlığı Platform URI'siyle yükle:

export ULTRALYTICS_API_KEY="your-api-key"
ocr = solutions.OCR(model="ul://ultralytics-yolo/yolo26-text/yolo26n-text", recognizer="paddleocr")
result = ocr(im0)

Daha büyük bir model için yolo26n-text yerine yolo26s-text, yolo26m-text, yolo26l-text veya yolo26x-text kullan.

OCR Bağımsız Değişkenleri#

Aşağıda OCR bağımsız değişkenlerini içeren bir tablo bulabilirsin:

Bağımsız değişkenTürVarsayılanAçıklama
modelstrNoneUltralytics YOLO model dosyasının yolu.
recognizerstr veya Callable'paddleocr'BGR kırpımını kabul edip (text, confidence) döndüren metin tanıma arka ucu veya çağrılabilir işlev.
line_widthint2Çözümün çizdiği kutular, anahtar noktalar ve sayılar için çizgi kalınlığı.
verboseboolTrueÇözümün her kare için girdi şekli, sınıf sayıları ve işleme hızına ilişkin günlüğünü etkinleştirir. İzleme çağrısının kendisi her zaman sessizdir.

Ayrıca aşağıdaki görselleştirme ayarları da desteklenir:

Bağımsız değişkenTürVarsayılanAçıklama
showboolFalseTrue ise açıklama eklenmiş görüntüleri veya videoları bir pencerede gösterir. Geliştirme veya test sırasında anında görsel geri bildirim almak için kullanışlıdır.
show_confboolTrueHer algılamanın güven puanını etiketinin yanında gösterir. Modelin her algılamaya ne kadar güvendiğini görmeni sağlar.
show_labelsboolTrueGörsel çıktıda her algılama için etiketleri gösterir. Algılanan nesnelerin hemen anlaşılmasını sağlar.

Sahne Metni OCR Nasıl Çalışır?#

  1. Metni algıla: YOLO26, eksenlere paralel kutular, yönlendirilmiş kutular veya segmentasyon çokgenleri üretir.
  2. Tanıma kırpımları oluştur: Kutular görüntü sınırlarına göre kırpılır. OBB'ler, en soldan en sağa uzanan kenar boyunca afin dönüşümle düzeltilir; böylece kareye yakın kutular dik kalırken eğik metin satırları okuma yönünde yatay durur. Segmentasyon çokgenlerinde, özgün çokgen korunarak minimum alanlı döndürülmüş dikdörtgen düzeltilir. Genişliğinin en az 1,5 katı yüksekliğe sahip kırpımlar, PaddleOCR'daki gibi saat yönünün tersine 90° döndürülür.
  3. Metni tanı: PaddleOCR tüm kırpımları 16'lı gruplar halinde işler. Özel tanıyıcılar her seferinde bir kırpım alır.
  4. Sonuçları sırala ve görselleştir: Metin yatay satırlarda gruplanır ve yukarıdan aşağıya, soldan sağa sıralanır. Görselleştirmede Çince gibi ASCII dışı metinler için Unicode yazı tipi kullanılır.

Koordinatlar her zaman algılayıcı girdisini veya tanıma kırpımını değil, özgün görüntüyü referans alır.

Özel Tanıyıcı Kullan#

Algılama, geometri veya sıralama akışını değiştirmeden başka bir tanıma modelini entegre etmek için çağrılabilir bir işlev ilet. Çağrılabilir işlev, boş olmayan her BGR numpy.ndarray kırpımı için bir kez çalışır. Toplu sonuç listesi değil, her çağrıda bir (text, confidence) demeti döndür:

Demet öğesiKabul edilen türAçıklama
textstrBu kırpım için çözümlenen metin. Hiçbir metin tanınmazsa "" döndür.
confidencefloat, int veya numpy.floatingSayısal tanıma güven değeri; çözüm tarafından float türüne dönüştürülür.
def recognize(crop):
    # Tanıma modelini BGR kırpımı üzerinde çalıştır ve çıktısını burada çözümle.
    return "example", 0.95

ocr = solutions.OCR(model="custom-text.pt", recognizer=recognize)
result = ocr(im0)

Desteklenmeyen arka uç adları ValueError hatasına yol açar. Hiç metin algılanmadığında result.texts boştur ve tanıyıcı çağrılmaz.

OCR Sonuçları#

Her çağrı bir SolutionResults nesnesi döndürür. Açıklama eklenmiş görüntü için result.plot_im, belirleyici okuma sırasındaki kayıtlar için result.texts kullan:

AnahtarTürAçıklama
textstrTanınan metin.
confidencefloatAlgılama güven değerinden ayrı tutulan tanıma güven değeri.
detection_confidencefloatYOLO algılayıcısının güven değeri.
detection_indexintOkuma sırasına göre sıralamadan önceki kaynak algılama indeksi.
polygonlist[list[float]]Özgün görüntüdeki çokgen: kutu ve OBB algılamaları için dört köşe ya da maske dış çizgisi.

Bağımlılıklar ve Lisanslar#

BileşenZorunluRolLisans
UltralyticsEvetYOLO algılama, kırpım geometrisi ve sonuçların düzenlenmesiAGPL-3.0
PaddlePaddleYalnızca recognizer="paddleocr" içinTanıma çalışma zamanıApache-2.0
PaddleOCR 3.xYalnızca recognizer="paddleocr" içinMetin satırı tanıma modelleri ve çıkarım bağdaştırıcısıApache-2.0
Özel çağrılabilir işlevHayırKullanıcıya ait tanıma entegrasyonuArka uç tarafından belirlenir

PaddleOCR ilk kullanımda tanıma ağırlıklarını indirebilir. Bu dosyaları paketlemeden veya dağıtıma almadan önce seçilen modelin model kartını ve yeniden dağıtım koşullarını incele. Özel ağırlıkların lisansları ayrıdır.

Sık Sorulan Sorular#

  • Evet. recognizer olarak çağrılabilir bir işlev ilet ve her BGR kırpımı için (text, confidence) döndür. Girdi ve çıktı sözleşmesi için Özel Tanıyıcı Kullan bölümüne bak.

  • Hayır. OCR, her girdi görüntüsünü izleme kimlikleri veya önbelleğe alınmış tanıma olmadan bağımsız olarak işler. Kare kare OCR gerekiyorsa her video karesini ayrı girdi olarak işle.

  • YOLO algılayıcısını normal Dışa Aktarma modu ile dışa aktarabilirsin, ancak PaddleOCR veya özel bir tanıyıcı ONNX, TensorRT ya da başka bir algılayıcı dosyasına gömülmez. Dışa aktarılan algılayıcıyı ve tanıma çalışma zamanını ayrı bileşenler olarak dağıtıma al veya bu Python bileşim katmanını kullanmaya devam et.

Katkıda Bulunanlar

Yorumlar

Bir soru sor, sonuçlarını paylaş veya başka birine yardım et.