# OCR配置文件 # 模型路径 MODEL_PATH = "/root/autodl-tmp/llm/Qwen3-VL-32B-Instruct" # ========== Agent OCR 推理服务配置 ========== # 优先读取环境变量(由 start.py 在启动时注入),缺省使用下方默认值 import os as _os # 推理服务 URL INFERENCE_URL = _os.environ.get( "INFERENCE_URL", "http://10.69.29.202:31277/inference-api/exp-api/inf-1480928240416935936/v1/chat/completions" ) # 推理服务鉴权 Token INFERENCE_AUTH_TOKEN = _os.environ.get( "INFERENCE_AUTH_TOKEN", "Bearer QDiS42vR9EqP-j73zeeyWB8zSJ4juheflm6yDKUDz5c" ) # 推理使用的模型名称 INFERENCE_MODEL = _os.environ.get( "INFERENCE_MODEL", "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_methoud": "预防措施", "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至GHS09的标准参考图像,请仔细查看每一张。 现在请直接对比最后一张化学品安全标签图像,找出其中所有菱形边框内的象形图, 将每个象形图与上方参考图逐一对比,确定对应编号。 关键区分特征(仅作辅助,以参考图为准): - GHS01:圆形炸弹向四周炸裂,有大量射线和碎片飞散 - GHS02:火焰图案,火焰底部有一条黑色横线底座,无圆圈 - GHS03:火焰包围一个空心大圆圈(圆圈内部是白色),底部也有横线底座,与GHS02的区别是中间有空心圆圈 - GHS04:一个横置的粗短气瓶/钢瓶,右侧有细长阀门 - GHS05:顶部有两根试管,左边液体滴腐蚀金属板,右边液体滴腐蚀手掌 - GHS06:骷髅头(空心白色)+下方两根交叉骨头 - GHS07:只有一个感叹号"!"(上方竖条+下方圆点),无任何其他图形 - GHS08:实心黑色人体上半身剪影,胸口有白色裂缝向四周放射(不是骷髅,不是感叹号) - GHS09:左侧一棵枯树(无叶子只有树枝),右侧一条翻肚白色死鱼,底部有水面横线,图案独特无火焰无人形 无法确认的跳过,不要猜测。 按照以下JSON格式输出结果: {"tag_images": ["GHS02", "GHS07"]} 注意:tag_images 中只填GHS编号,不要求顺序,返回结果必须是标准JSON格式,不要包含```json```标记。 """ # 默认使用的提示词(向后兼容) OCR_PROMPT = OCR_PROMPT_FULL