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
|