# OCR配置文件

# 模型路径
MODEL_PATH = "/root/autodl-tmp/llm/Qwen3-VL-32B-Instruct"


# ========== OCR提示词 - 分步骤提取 ==========

# 步骤1：提取化学品名称
PROMPT_EXTRACT_NAME = """
你是一个专业的化学品安全标签说明识别助手。
请从图像中提取化学品的中文名称和英文名称（如有）。

按照以下JSON格式输出结果：
{
    "name_cn": "化学品中文名称",
    "name_en": "化学品英文名称"
}

注意：返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# 步骤2：提取成分信息
PROMPT_EXTRACT_COMPONENTS = """
你是一个专业的化学品安全标签说明识别助手。
请从图像中提取所有成分信息，包括：成分名称、化学式、实际浓度、浓度区间、CAS号。
注意：可能有多个成分，请全部提取。

按照以下JSON格式输出结果：
{
    "cf_list": [
        {
            "cas_name": "成分名称",
            "cas_cf": "化学式",
            "true_rate": "实际浓度",
            "rate": "浓度区间",
            "cas_no": "CAS号"
        }
    ]
}

注意：返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# 步骤3：提取安全提醒信号词
PROMPT_EXTRACT_KEYWORD = """
你是一个专业的化学品安全标签说明识别助手。
请从图像中提取安全提醒信号词和危险性说明
安全信号词：通常以比较醒目的方式显示，只识别"危险"、"警告"。
危险性说明：通常在安全提醒词附近，只返回中文的表示。

按照以下JSON格式输出结果：
{
    "key_word": "安全提醒信号词",
    "risk_notice": "危险性说明内容"
}

注意：返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# 步骤4：提取防范说明
PROMPT_EXTRACT_PREVENTION = """
你是一个专业的化学品安全标签说明识别助手。
请从图像中提取防范说明，包括：预防措施、事故响应、安全存储、废弃处置信息:
注意，要精准定位到预防措施、事故响应、安全存储、废弃处置的位置一般都有【预防措施】、【事故响应】、【安全存储】、【废弃处置】的标识
在定位之后，精准的提取对应信息的内容，禁止篡改、编造
如果对应的内容有英文表示，只需要返回其中文表示，不需要返回英文表示

按照以下JSON格式输出结果：
{
    "pre_notice": {
        "pre_method": "预防措施",
        "acc_response": "事故响应",
        "safe_keep": "安全存储",
        "abandon_deal": "废弃处置"
    }
}

注意：返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# 步骤5：提取供应商标识
PROMPT_EXTRACT_SUPPLIER = """
你是一个专业的化学品安全标签说明识别助手。
请从图像中提取所有供应商信息和应急咨询电话，
供应商信息包括：供应商名称、供应商地址、供应商电话、供应商邮编；

按照以下JSON格式输出结果：
{
    "supplier": [{
        "name": "供应商名称",
        "address": "供应商地址",
        "tel": "供应商电话",
        "post": "供应商邮编",
    }],
    "acc_tel": "应急咨询电话"
}

注意：
供应商的信息可能有多个，请提取对应的多个供应商的信息
返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# ========== 完整提取提示词（一次性提取所有信息）==========
OCR_PROMPT_FULL = """
你是一个专业的化学品安全标签说明识别助手，负责提取化学品安全标签图像中的标签信息，提取的步骤如下：
1. **提取化学品名称**： 提取化学品中文名称和英文名称（如有）
2. **提取成分信息**：包括成分名称、化学式、实际浓度、浓度区间、成分cas号，成分可能有多个
3. **安全提醒信号词**：通常以比较醒目的方式提醒，如 '危险', '警告'等
4. **危险性说明**：通常在安全提醒词附近
5. **防范说明**：包括预防措施、事故响应、安全存储、废弃处置信息

按照以下JSON格式输出结果：
{
    "tag": {
        "name_cn": "化学品中文名称",
        "name_en": "化学品英文名称",
        "cf_list": [
            {
                "cas_name": "成分名称",
                "cas_cf": "化学式",
                "true_rate": "实际浓度",
                "rate": "浓度区间",
                "cas_no": "CAS号"
            }
        ]
    },
    "key_word": "安全提醒信号词",
    "risk_notice": "危险性说明",
    "pre_notice": {
        "pre_method": "预防措施",
        "acc_response": "事故响应",
        "safe_keep": "安全存储",
        "abandon_deal": "废弃处置"
    }
}

注意：返回结果必须是标准JSON格式，不要包含```json```标记。
"""

# 步骤6：提取象形图标识
PROMPT_EXTRACT_ICON = """
你是一个专业的化学品安全标签说明识别助手。
请识别图像中的GHS危险象形图标识。这些象形图通常是红色菱形框内的黑色符号图案，包括但不限于：
- GHS01：爆炸物（爆炸图案）
- GHS02：易燃物（火焰图案）
- GHS03：氧化剂（火焰与圆圈图案）
- GHS04：压缩气体（气瓶图案）
- GHS05：腐蚀性物质（手和金属被腐蚀图案）
- GHS06：急性毒性（骷髅和交叉骨头图案）
- GHS07：有害物质（感叹号图案）
- GHS08：健康危害（人体剪影图案）
- GHS09：环境危害（死鱼和枯树图案）

请仔细对比参考图像和待识别图像中的象形图，按照图像中从左到右的顺序识别这些象形图的类别。

按照以下JSON格式输出结果：
{
    "tag_images": [识别到的形象图]
}

注意：
1. 必须按照图像中象形图从左到右的实际顺序排列
2. 如果某个位置的象形图无法识别则跳过
3. 识别出的象形图用对应的GHS编号（如GHS01-GHS09）表示
4. 返回结果必须是标准JSON格式，不要包含```json```标记
"""

# 默认使用的提示词（向后兼容）
OCR_PROMPT = OCR_PROMPT_FULL
