Files
chem-risk-detect/README.md
2026-01-04 09:07:25 +08:00

4.7 KiB
Raw Blame History

涉毒风险监测数据处理系统

从文本和图片中识别化学品 CAS 号、关键词,并进行多模态风险分析。

快速开始

# 安装依赖
pip install pandas openpyxl

# 进入脚本目录
cd scripts/

# 关键词匹配
python3 keyword_matcher.py

# 图片识别(模拟模式,无需 API
python3 image_batch_recognizer.py --mock --limit 5

功能 1关键词匹配

从文本中识别 CAS 号和关键词。

两种匹配模式:

  • CAS 号识别:正则提取并标准化为 XXX-XX-X 格式
  • 精确匹配:匹配中文名、英文名、简称等

基本用法

cd scripts/

# 默认运行两种模式
python3 keyword_matcher.py

# 仅 CAS 号识别
python3 keyword_matcher.py -m cas

# 仅精确匹配
python3 keyword_matcher.py -m exact

# 自定义文件路径
python3 keyword_matcher.py \
  -k ../data/input/keyword_all.xlsx \
  -t ../data/input/clickin_text_img.xlsx \
  -o ../data/output/results.xlsx

参数说明

参数 说明 默认值
-k, --keywords 关键词文件 ../data/input/keywords.xlsx
-t, --text 文本文件 ../data/input/clickin_text_img.xlsx
-o, --output 输出文件 ../data/output/keyword_matched_results.xlsx
-c, --text-column 文本列名 文本
-m, --modes 匹配模式 cas exact
--separator 关键词分隔符 |||

输出说明

每种模式生成独立文件:

  • keyword_matched_results_cas.xlsx - CAS 号匹配结果
  • keyword_matched_results_exact.xlsx - 精确匹配结果

输出列:

  • 匹配到的关键词 - 匹配的关键词列表
  • 匹配模式 - 使用的匹配模式

功能 2图片批量识别

调用大模型 API 识别图片中的文字、物品和风险信息。

基本用法

cd scripts/

# 模拟模式(无需 API用于测试
python3 image_batch_recognizer.py --mock --limit 5

# 使用 OpenAI API
python3 image_batch_recognizer.py --api-type openai --limit 10

# 使用 DMX API
python3 image_batch_recognizer.py --api-type dmx --limit 10

# 并行处理
python3 image_batch_recognizer.py --api-type openai --max-workers 3

参数说明

参数 说明 默认值
--image-dir 图片目录 ../data/images
--output 输出文件 ../data/output/image_recognition_results.xlsx
--api-type API 类型 .env 读取
--model 模型名称 .env 读取
--limit 最大处理数 无限制
--offset 跳过前 N 张 0
--max-workers 并行线程数 1
--mock 模拟模式
--recursive 递归子目录

API 配置

复制 .env 配置文件并填写:

cp config.env.example .env

.env 示例:

OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini

DMX_API_KEY=sk-dmx-...
DMX_BASE_URL=https://www.dmxapi.cn
DMX_MODEL=gpt-5-mini

LLM_API_TYPE=openai

输出说明

输出 Excel 包含以下列:

  • detected_text - 识别的文字
  • detected_objects - 物品描述
  • sensitive_items - 敏感要素
  • summary - 风险摘要
  • confidence - 置信度

目录结构

20251126_s2/
├── scripts/
│   ├── keyword_matcher.py         # 关键词匹配
│   ├── image_batch_recognizer.py  # 图片识别
│   ├── run.sh                     # 批处理管理
│   └── run_batch_background.sh    # 后台运行
├── data/
│   ├── input/                     # 输入数据
│   │   ├── clickin_text_img.xlsx  # 文本数据
│   │   └── keywords.xlsx          # 关键词库
│   ├── output/                    # 输出结果
│   └── images/                    # 图片文件
├── .env                           # API 配置
└── config.env.example             # 配置模板

批处理管理

使用 run.sh 管理后台任务:

cd scripts/

./run.sh start    # 启动任务
./run.sh stop     # 停止任务
./run.sh status   # 查看状态
./run.sh log      # 实时日志

设置参数:

API_TYPE=openai MAX_WORKERS=3 ./run.sh start

依赖安装

# 必需
pip install pandas openpyxl

# 可选(提升性能)
pip install pyahocorasick  # 关键词匹配加速
pip install tqdm           # 进度条
pip install requests       # HTTP 请求

常见问题

Q: 如何提升匹配速度? 安装 pyahocorasick,精确模式自动使用 Aho-Corasick 算法加速。

Q: 没有 API Key 能测试吗? 使用 --mock 参数运行模拟模式。

Q: 输出的分隔符能改吗? 使用 --separator 参数,默认 ||| 不与化学名称冲突。


技术支持

  • Python 3.7+
  • 查看帮助:python3 script.py -h