"""OCR 插件入口。""" import logging from app.utils.ocr_engine import get_ocr_model_info, get_ocr_engine logger = logging.getLogger(__name__) class OCRPlugin: def __init__(self): self.name = "ocr" self.version = "2.0.0" self.enabled = False def on_enable(self): self.enabled = True logger.info(f"OCR 插件 {self.version} 已启用") def on_disable(self): self.enabled = False logger.info(f"OCR 插件 {self.version} 已禁用") def get_status(self) -> dict: """三态状态:enabled + engine_ready + model_id,让前端区分「未启用/未加载/就绪」。""" engine_ready = False model_id = None try: # 触发一次引擎实例化以判断"是否已加载"——失败不算禁用,仅未就绪 get_ocr_engine() engine_ready = True model_id = get_ocr_model_info().get("det_model") except Exception: # 依赖缺失或首次加载失败,由前端提示用户 engine_ready = False return { "name": self.name, "version": self.version, "enabled": self.enabled, "engine_ready": engine_ready, "model_id": model_id, } plugin = OCRPlugin()