File size: 1,315 Bytes
e0ea7df
ae8b600
 
e0ea7df
ae8b600
 
 
 
 
 
cc826a1
e0ea7df
ae8b600
 
 
 
 
 
 
 
 
 
 
e0ea7df
 
 
 
 
 
 
 
 
 
 
ae8b600
 
 
 
e0ea7df
 
ae8b600
 
 
 
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""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()