Spaces:
Configuration error
Configuration error
import yolov5 | |
from PIL import Image | |
from pytesseract import pytesseract | |
from transformers import TrOCRProcessor, VisionEncoderDecoderModel | |
def detect_license_plate(image_path: str, save_crops=False, save_dir="/tmp/crops") -> Image.Image: | |
""" | |
Detect license plate from image_path | |
:param image_path: image_path path | |
:param save_crops: save crops to filesystem | |
:param save_dir: directory to save crops | |
:rtype: :py:class:`~PIL.Image.Image` | |
:returns: An :py:class:`~PIL.Image.Image` object. | |
""" | |
# load model | |
model = yolov5.load('keremberke/yolov5n-license-plate') | |
# set model parameters | |
model.conf = 0.25 # NMS confidence threshold | |
model.iou = 0.45 # NMS IoU threshold | |
model.agnostic = False # NMS class-agnostic | |
model.multi_label = False # NMS multiple labels per box | |
model.max_det = 1 # maximum number of detections per image | |
# perform inference | |
results = model(image_path, size=640) | |
crops = results.crop(save=save_crops, save_dir=save_dir) | |
return Image.fromarray(crops[0]['im'][..., ::-1]) | |
def read_license_plate_tesseract(image_path) -> str: | |
return pytesseract.image_to_string(image_path, | |
config='--psm 7 -c tessedit_char_whitelist=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ') | |
def read_license_plate_ml(image_path: str) -> str: | |
processor = TrOCRProcessor.from_pretrained('microsoft/trocr-base-printed') | |
model = VisionEncoderDecoderModel.from_pretrained('microsoft/trocr-base-printed') | |
pixel_values = processor(images=Image.open(image_path).convert("RGB"), return_tensors="pt").pixel_values | |
generated_ids = model.generate(pixel_values) | |
return processor.batch_decode(generated_ids, skip_special_tokens=True)[0] |