„Texterkennungsprobleme bei der Nummernschilderkennung mit YOLO und EasyOCR“Python

Python-Programme
Guest
 „Texterkennungsprobleme bei der Nummernschilderkennung mit YOLO und EasyOCR“

Post by Guest »

Problem
Ich arbeite an einem Nummernschilderkennungssystem mit YOLOv8 zur Erkennung und EasyOCR zur Texterkennung. Während YOLO Nummernschildregionen korrekt erkennt, sind die OCR-Ergebnisse für arabischen Text und Zahlen oft ungenau.
Beispiele für erkannten Text:
Erkannt: „اباز“, was irrelevant ist.
Erkannt: „الراق“, was eine teilweise Übereinstimmung mit „العراق“ darstellt.
Zahlen wie „٢٦٠٤٩٩“ werden genau erkannt.
Was ich versucht habe
Pipeline-Setup:
YOLOv8 erkennt das Nummernschild und extrahiert seinen Begrenzungsrahmen.
EasyOCR verarbeitet das zugeschnittene Nummernschild für die Texterkennung.
Textkorrektur:
Wird verwendet difflib.get_close_matches() zum Abgleichen von OCR-erkanntem Text mit vordefinierten Wörtern (z. B. „العراق“, „دهوك“).
Angewandte Konfidenzschwellenwerte zum Filtern von Ergebnissen mit geringer Konfidenz.
Bildvorverarbeitung:
Der Plattenbereich wurde in Graustufen konvertiert.
Größe des Bereichs geändert, um die OCR-Leistung zu verbessern.
Minimal reproduzierbar Beispiel

Code: Select all

import cv2
import easyocr
from ultralytics import YOLO

def detect_plate_with_yolo(image_path, model_path="yolov8n.pt"):
model = YOLO(model_path)
img = cv2.imread(image_path)
results = model(img)
detections = results[0].boxes.xyxy.cpu().numpy()
if detections:
x1, y1, x2, y2 = map(int, detections[0])
return img[y1:y2, x1:x2]
return None

def perform_ocr_on_plate(plate_img):
reader = easyocr.Reader(['ar', 'en'], gpu=False)
plate_gray = cv2.cvtColor(plate_img, cv2.COLOR_BGR2GRAY)
return reader.readtext(plate_gray, detail=1)

plate_img = detect_plate_with_yolo("path/to/image.jpg")
if plate_img is not None:
detected_text = perform_ocr_on_plate(plate_img)
print(detected_text)
Erwartetes vs. tatsächliches Verhalten
Erwartet: Korrekte Erkennung arabischer Texte und Zahlen (z. B. „العراق“) .
Tatsächlich: Teilweise Übereinstimmungen (z. B. „الراق“) oder irrelevante Ergebnisse (z. B. „اباز“).
Fragen
Wie kann ich die OCR-Genauigkeit für arabische Nummernschilder mit EasyOCR verbessern?
Gibt es bessere Alternativen zu difflib.get_close_matches( ) zur Textkorrektur?
Welche zusätzlichen Vorverarbeitungsschritte könnten zur Verbesserung der OCR-Leistung beitragen?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post