init: first upload
This commit is contained in:
211
README.md
Normal file
211
README.md
Normal file
@@ -0,0 +1,211 @@
|
||||
# 涉毒风险监测数据处理系统
|
||||
|
||||
从文本和图片中识别化学品 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`
|
||||
Reference in New Issue
Block a user