| """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() | |