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

212 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 涉毒风险监测数据处理系统
从文本和图片中识别化学品 CAS 号、关键词,并进行多模态风险分析。
## 快速开始
```bash
# 安装依赖
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` 格式
- **精确匹配**:匹配中文名、英文名、简称等
### 基本用法
```bash
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 识别图片中的文字、物品和风险信息。
### 基本用法
```bash
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` 配置文件并填写:
```bash
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` 管理后台任务:
```bash
cd scripts/
./run.sh start # 启动任务
./run.sh stop # 停止任务
./run.sh status # 查看状态
./run.sh log # 实时日志
```
设置参数:
```bash
API_TYPE=openai MAX_WORKERS=3 ./run.sh start
```
---
## 依赖安装
```bash
# 必需
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`