Spaces:
Paused
Paused
| import logging | |
| from typing import Optional | |
| import cv2 | |
| import easyocr | |
| import torch | |
| logger = logging.getLogger("uvicorn") | |
| class OCRReader: | |
| _instance: Optional["OCRReader"] = None | |
| ocr_reader: easyocr.Reader | |
| def __new__(cls): | |
| if cls._instance is None: | |
| logger.info("Loading the OCR model into memory...") | |
| cls._instance = super(OCRReader, cls).__new__(cls) | |
| cls._instance.ocr_reader = easyocr.Reader( | |
| ["en", "fr"], gpu=torch.cuda.is_available() | |
| ) | |
| return cls._instance | |
| def read_text(self, img: cv2.typing.MatLike | None): | |
| res = self.ocr_reader.readtext(img, detail=0) | |
| if not isinstance(res, list): | |
| return None | |
| return " ".join([str(item) for item in res]) | |