from functools import lru_cache import easyocr @lru_cache(maxsize=8) def get_reader(langs: tuple[str, ...] = ("en",)) -> easyocr.Reader: """ EasyOCR reader (CPU). Caches per language tuple for speed. """ return easyocr.Reader(list(langs), gpu=False) # -------- PaddleOCR loader (CPU) -------- @lru_cache(maxsize=4) def get_paddle_reader(lang: str = "en"): """ PaddleOCR reader (det+rec). 'lang' is a single code, e.g. 'en', 'fr', 'ch'. Assumes paddlepaddle + paddleocr are installed. """ from paddleocr import PaddleOCR return PaddleOCR(use_angle_cls=True, lang=lang, show_log=False)