config.py 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. # OCR配置文件
  2. # 模型路径
  3. MODEL_PATH = "/root/autodl-tmp/llm/Qwen3-VL-32B-Instruct"
  4. # ========== Agent OCR 推理服务配置 ==========
  5. # 优先读取环境变量(由 start.py 在启动时注入),缺省使用下方默认值
  6. import os as _os
  7. # 推理服务 URL
  8. INFERENCE_URL = _os.environ.get(
  9. "INFERENCE_URL",
  10. "http://10.69.29.202:31277/inference-api/exp-api/inf-1480928240416935936/v1/chat/completions"
  11. )
  12. # 推理服务鉴权 Token
  13. INFERENCE_AUTH_TOKEN = _os.environ.get(
  14. "INFERENCE_AUTH_TOKEN",
  15. "Bearer QDiS42vR9EqP-j73zeeyWB8zSJ4juheflm6yDKUDz5c"
  16. )
  17. # 推理使用的模型名称
  18. INFERENCE_MODEL = _os.environ.get(
  19. "INFERENCE_MODEL",
  20. "Qwen3-VL-32B-Instruct"
  21. )
  22. # ========== OCR提示词 - 分步骤提取 ==========
  23. # 步骤1:提取化学品名称
  24. PROMPT_EXTRACT_NAME = """
  25. 你是一个专业的化学品安全标签说明识别助手。
  26. 请从图像中提取化学品的中文名称和英文名称(如有)。
  27. 化学品名称通常出现在标签最顶部,字号最大,可能同时包含中文名和英文名及化学式。
  28. 按照以下JSON格式输出结果:
  29. {
  30. "name_cn": "化学品中文名称",
  31. "name_en": "化学品英文名称(含化学式,如无则填空字符串)"
  32. }
  33. 注意:返回结果必须是标准JSON格式,不要包含```json```标记。
  34. """
  35. # 步骤2:提取成分信息
  36. PROMPT_EXTRACT_COMPONENTS = """
  37. 你是一个专业的化学品安全标签说明识别助手。
  38. 请从图像中提取所有成分信息,包括:成分名称、化学式、实际浓度、浓度区间、CAS号。
  39. 注意:可能有多个成分,请全部提取。
  40. 按照以下JSON格式输出结果:
  41. {
  42. "cf_list": [
  43. {
  44. "cas_name": "成分名称",
  45. "cas_cf": "化学式",
  46. "true_rate": "实际浓度",
  47. "rate": "浓度区间",
  48. "cas_no": "CAS号"
  49. }
  50. ]
  51. }
  52. 注意:返回结果必须是标准JSON格式,不要包含```json```标记。
  53. """
  54. # 步骤3:提取安全提醒信号词
  55. PROMPT_EXTRACT_KEYWORD = """
  56. 你是一个专业的化学品安全标签说明识别助手。
  57. 请从图像中提取安全提醒信号词和危险性说明。
  58. - 信号词:通常在一个醒目的方框内(黑底白字或红底白字),只识别"危险"或"警告"这两种。
  59. - 危险性说明:通常紧跟在信号词和象形图下方,是一段描述危害的文字,只返回中文内容。
  60. 按照以下JSON格式输出结果:
  61. {
  62. "key_word": "危险或警告",
  63. "risk_notice": "危险性说明内容"
  64. }
  65. 注意:返回结果必须是标准JSON格式,不要包含```json```标记。
  66. """
  67. # 步骤4:提取防范说明
  68. PROMPT_EXTRACT_PREVENTION = """
  69. 你是一个专业的化学品安全标签说明识别助手。
  70. 请从图像中提取防范说明,包括:预防措施、事故响应、安全存储、废弃处置信息:
  71. 注意,要精准定位到预防措施、事故响应、安全存储、废弃处置的位置一般都有【预防措施】、【事故响应】、【安全存储】、【废弃处置】的标识
  72. 在定位之后,精准的提取对应信息的内容,禁止篡改、编造
  73. 如果对应的内容有英文表示,只需要返回其中文表示,不需要返回英文表示
  74. 按照以下JSON格式输出结果:
  75. {
  76. "pre_notice": {
  77. "pre_methoud": "预防措施",
  78. "acc_response": "事故响应",
  79. "safe_keep": "安全存储",
  80. "abandon_deal": "废弃处置"
  81. }
  82. }
  83. 注意:返回结果必须是标准JSON格式,不要包含```json```标记。
  84. """
  85. # 步骤5:提取供应商标识
  86. PROMPT_EXTRACT_SUPPLIER = """
  87. 你是一个专业的化学品安全标签说明识别助手。
  88. 请从图像中提取供应商信息和应急咨询电话。
  89. 供应商信息通常在标签底部,包括供应商名称、地址、电话、邮编;部分标签可能没有邮编字段,填空字符串即可。
  90. 应急咨询电话通常单独标注,关键字为"应急咨询电话"或"化学事故应急咨询电话"。
  91. 按照以下JSON格式输出结果:
  92. {
  93. "supplier": [{
  94. "name": "供应商名称",
  95. "address": "供应商地址",
  96. "tel": "供应商电话",
  97. "post": "供应商邮编(无则填空字符串)"
  98. }],
  99. "acc_tel": "应急咨询电话(无则填空字符串)"
  100. }
  101. 注意:
  102. 供应商的信息可能有多个,请提取所有供应商信息
  103. 返回结果必须是标准JSON格式,不要包含```json```标记。
  104. """
  105. # ========== 完整提取提示词(一次性提取所有信息)==========
  106. OCR_PROMPT_FULL = """
  107. 你是一个专业的化学品安全标签说明识别助手,负责提取化学品安全标签图像中的标签信息,提取的步骤如下:
  108. 1. **提取化学品名称**: 提取化学品中文名称和英文名称(如有)
  109. 2. **提取成分信息**:包括成分名称、化学式、实际浓度、浓度区间、成分cas号,成分可能有多个
  110. 3. **安全提醒信号词**:通常以比较醒目的方式提醒,如 '危险', '警告'等
  111. 4. **危险性说明**:通常在安全提醒词附近
  112. 5. **防范说明**:包括预防措施、事故响应、安全存储、废弃处置信息
  113. 按照以下JSON格式输出结果:
  114. {
  115. "tag": {
  116. "name_cn": "化学品中文名称",
  117. "name_en": "化学品英文名称",
  118. "cf_list": [
  119. {
  120. "cas_name": "成分名称",
  121. "cas_cf": "化学式",
  122. "true_rate": "实际浓度",
  123. "rate": "浓度区间",
  124. "cas_no": "CAS号"
  125. }
  126. ]
  127. },
  128. "key_word": "安全提醒信号词",
  129. "risk_notice": "危险性说明",
  130. "pre_notice": {
  131. "pre_method": "预防措施",
  132. "acc_response": "事故响应",
  133. "safe_keep": "安全存储",
  134. "abandon_deal": "废弃处置"
  135. }
  136. }
  137. 注意:返回结果必须是标准JSON格式,不要包含```json```标记。
  138. """
  139. # 步骤6:提取象形图标识
  140. PROMPT_EXTRACT_ICON = """
  141. 你是一个专业的化学品安全标签识别助手,专门负责识别GHS危险象形图。
  142. 我已在上方依次提供了GHS01至GHS09的标准参考图像,请仔细查看每一张。
  143. 现在请直接对比最后一张化学品安全标签图像,找出其中所有菱形边框内的象形图,
  144. 将每个象形图与上方参考图逐一对比,确定对应编号。
  145. 关键区分特征(仅作辅助,以参考图为准):
  146. - GHS01:圆形炸弹向四周炸裂,有大量射线和碎片飞散
  147. - GHS02:火焰图案,火焰底部有一条黑色横线底座,无圆圈
  148. - GHS03:火焰包围一个空心大圆圈(圆圈内部是白色),底部也有横线底座,与GHS02的区别是中间有空心圆圈
  149. - GHS04:一个横置的粗短气瓶/钢瓶,右侧有细长阀门
  150. - GHS05:顶部有两根试管,左边液体滴腐蚀金属板,右边液体滴腐蚀手掌
  151. - GHS06:骷髅头(空心白色)+下方两根交叉骨头
  152. - GHS07:只有一个感叹号"!"(上方竖条+下方圆点),无任何其他图形
  153. - GHS08:实心黑色人体上半身剪影,胸口有白色裂缝向四周放射(不是骷髅,不是感叹号)
  154. - GHS09:左侧一棵枯树(无叶子只有树枝),右侧一条翻肚白色死鱼,底部有水面横线,图案独特无火焰无人形
  155. 无法确认的跳过,不要猜测。
  156. 按照以下JSON格式输出结果:
  157. {"tag_images": ["GHS02", "GHS07"]}
  158. 注意:tag_images 中只填GHS编号,不要求顺序,返回结果必须是标准JSON格式,不要包含```json```标记。
  159. """
  160. # 默认使用的提示词(向后兼容)
  161. OCR_PROMPT = OCR_PROMPT_FULL