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:
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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
model | str | None | Ultralytics YOLO model dosyasının yolu. |
recognizer | str 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_width | int | 2 | Çözümün çizdiği kutular, anahtar noktalar ve sayılar için çizgi kalınlığı. |
verbose | bool | True | Çö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şken | Tür | Varsayılan | Açıklama |
|---|---|---|---|
show | bool | False | True 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_conf | bool | True | Her 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_labels | bool | True | Gö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?#
- Metni algıla: YOLO26, eksenlere paralel kutular, yönlendirilmiş kutular veya segmentasyon çokgenleri üretir.
- 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.
- 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.
- 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 öğesi | Kabul edilen tür | Açıklama |
|---|---|---|
text | str | Bu kırpım için çözümlenen metin. Hiçbir metin tanınmazsa "" döndür. |
confidence | float, int veya numpy.floating | Sayı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:
| Anahtar | Tür | Açıklama |
|---|---|---|
text | str | Tanınan metin. |
confidence | float | Algılama güven değerinden ayrı tutulan tanıma güven değeri. |
detection_confidence | float | YOLO algılayıcısının güven değeri. |
detection_index | int | Okuma sırasına göre sıralamadan önceki kaynak algılama indeksi. |
polygon | list[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şen | Zorunlu | Rol | Lisans |
|---|---|---|---|
| Ultralytics | Evet | YOLO algılama, kırpım geometrisi ve sonuçların düzenlenmesi | AGPL-3.0 |
| PaddlePaddle | Yalnızca recognizer="paddleocr" için | Tanıma çalışma zamanı | Apache-2.0 |
| PaddleOCR 3.x | Yalnızca recognizer="paddleocr" için | Metin satırı tanıma modelleri ve çıkarım bağdaştırıcısı | Apache-2.0 |
| Özel çağrılabilir işlev | Hayır | Kullanıcıya ait tanıma entegrasyonu | Arka 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.
recognizerolarak ç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.
Yorumlar
Bir soru sor, sonuçlarını paylaş veya başka birine yardım et.