Spaces:
Paused
Paused
File size: 811 Bytes
389d6f7 f80f41e 389d6f7 f80f41e 389d6f7 f80f41e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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])
|