Spaces:
Running
Running
PaddleOCR engine feature + tesseract-ocr pacakage fix
Browse files- app.py +9 -2
- packages.txt +1 -0
- requirements.txt +3 -1
app.py
CHANGED
|
@@ -16,16 +16,18 @@ from transformers import TrOCRProcessor, VisionEncoderDecoderModel
|
|
| 16 |
import torch
|
| 17 |
from datetime import datetime
|
| 18 |
import time
|
|
|
|
| 19 |
|
| 20 |
# Initialisation of models
|
| 21 |
def load_models():
|
| 22 |
-
global model_vehicle, model_plate, reader_easyocr, pipeline_kerasocr, processor_trocr, model_trocr
|
| 23 |
model_vehicle = YOLO('models/yolov8n.pt')
|
| 24 |
model_plate = YOLO('models/best.pt')
|
| 25 |
reader_easyocr = easyocr.Reader(['en'], gpu=False)
|
| 26 |
pipeline_kerasocr = keras_ocr.pipeline.Pipeline()
|
| 27 |
processor_trocr = TrOCRProcessor.from_pretrained('microsoft/trocr-base-handwritten')
|
| 28 |
model_trocr = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-handwritten')
|
|
|
|
| 29 |
load_models()
|
| 30 |
|
| 31 |
# patterns plate layouts europe
|
|
@@ -81,6 +83,11 @@ def read_license_plate(license_plate_crop, ocr_engine='easyocr'):
|
|
| 81 |
text_preprocessed = trocr_ocr(preprocess_image(license_plate_crop))
|
| 82 |
detections_raw = [(None, text_raw.strip(), None)]
|
| 83 |
detections_preprocessed = [(None, text_preprocessed.strip(), None)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
else:
|
| 85 |
raise ValueError(f"OCR engine '{ocr_engine}' not supported.")
|
| 86 |
|
|
@@ -297,7 +304,7 @@ with gr.Blocks(theme=gr.themes.Soft()) as demo:
|
|
| 297 |
with gr.Row():
|
| 298 |
with gr.Column(scale=1):
|
| 299 |
input_image = gr.Image(type="numpy", label="Input image")
|
| 300 |
-
ocr_selector = gr.Radio(choices=['easyocr', 'pytesseract', 'kerasocr', 'trocr'], value='easyocr', label="Select OCR Engine")
|
| 301 |
confidence_slider = gr.Slider(minimum=0, maximum=1, value=0.5, step=0.01, label="Detection Confidence Threshold")
|
| 302 |
submit_btn = gr.Button("Detect License Plates", variant="primary")
|
| 303 |
|
|
|
|
| 16 |
import torch
|
| 17 |
from datetime import datetime
|
| 18 |
import time
|
| 19 |
+
from paddleocr import PaddleOCR
|
| 20 |
|
| 21 |
# Initialisation of models
|
| 22 |
def load_models():
|
| 23 |
+
global model_vehicle, model_plate, reader_easyocr, pipeline_kerasocr, processor_trocr, model_trocr, ocr_paddle
|
| 24 |
model_vehicle = YOLO('models/yolov8n.pt')
|
| 25 |
model_plate = YOLO('models/best.pt')
|
| 26 |
reader_easyocr = easyocr.Reader(['en'], gpu=False)
|
| 27 |
pipeline_kerasocr = keras_ocr.pipeline.Pipeline()
|
| 28 |
processor_trocr = TrOCRProcessor.from_pretrained('microsoft/trocr-base-handwritten')
|
| 29 |
model_trocr = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-handwritten')
|
| 30 |
+
ocr_paddle = PaddleOCR(use_angle_cls=True, lang='en', use_gpu=False)
|
| 31 |
load_models()
|
| 32 |
|
| 33 |
# patterns plate layouts europe
|
|
|
|
| 83 |
text_preprocessed = trocr_ocr(preprocess_image(license_plate_crop))
|
| 84 |
detections_raw = [(None, text_raw.strip(), None)]
|
| 85 |
detections_preprocessed = [(None, text_preprocessed.strip(), None)]
|
| 86 |
+
elif ocr_engine == 'paddleocr':
|
| 87 |
+
result_raw = ocr_paddle.ocr(license_plate_crop)
|
| 88 |
+
result_preprocessed = ocr_paddle.ocr(preprocessed_image)
|
| 89 |
+
detections_raw = [(None, result_raw[0][0][1][0], result_raw[0][0][1][1] if result_raw[0] else 0.0)]
|
| 90 |
+
detections_preprocessed = [(None, result_preprocessed[0][0][1][0], result_preprocessed[0][0][1][1] if result_preprocessed[0] else 0.0)]
|
| 91 |
else:
|
| 92 |
raise ValueError(f"OCR engine '{ocr_engine}' not supported.")
|
| 93 |
|
|
|
|
| 304 |
with gr.Row():
|
| 305 |
with gr.Column(scale=1):
|
| 306 |
input_image = gr.Image(type="numpy", label="Input image")
|
| 307 |
+
ocr_selector = gr.Radio(choices=['easyocr', 'paddleocr' 'pytesseract', 'kerasocr', 'trocr'], value='easyocr', label="Select OCR Engine")
|
| 308 |
confidence_slider = gr.Slider(minimum=0, maximum=1, value=0.5, step=0.01, label="Detection Confidence Threshold")
|
| 309 |
submit_btn = gr.Button("Detect License Plates", variant="primary")
|
| 310 |
|
packages.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
tesseract-ocr
|
requirements.txt
CHANGED
|
@@ -10,4 +10,6 @@ pytesseract==0.3.10
|
|
| 10 |
torch==2.4.0
|
| 11 |
transformers==4.44.0
|
| 12 |
ultralytics==8.2.74
|
| 13 |
-
tensorflow==2.14.0
|
|
|
|
|
|
|
|
|
| 10 |
torch==2.4.0
|
| 11 |
transformers==4.44.0
|
| 12 |
ultralytics==8.2.74
|
| 13 |
+
tensorflow==2.14.0
|
| 14 |
+
paddleocr
|
| 15 |
+
paddlepaddle
|