Files
Extract_reqs/README.md

107 lines
3.3 KiB
Markdown
Raw Permalink 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.
# SRS需求文档解析工具
一个智能的SRS软件需求规格说明书文档解析工具支持PDF和Docx格式能够自动提取需求并生成结构化JSON输出。
## 特性
- **LLM增强**:集成阿里云千问大模型,智能识别和提取需求
- **多格式支持**支持PDF和Docx格式的SRS文档
- **非严格文档结构**:支持不规范的文档结构
- **智能过滤**:自动过滤系统描述、重复需求等非需求内容
- **结构化输出**按章节层次组织的JSON格式输出
- **表格需求识别**:支持从表格中提取功能/接口/其他需求
- **PDF表格提取**支持从PDF中提取表格并自动挂接到章节
- **长句原子拆分**:自动将包含多个需求点的长句拆分为多个可验证需求项
## 快速开始
### 安装依赖
```bash
pip install -r requirements.txt
# 如果使用LLM功能还需安装
pip install dashscope
# 若需增强PDF表格提取能力requirements.txt已包含
pip install pdfplumber
```
### 配置API密钥LLM模式
```bash
# 方式1环境变量推荐
# Linux/Mac
export DASHSCOPE_API_KEY="your-api-key"
# Windows PowerShell
$env:DASHSCOPE_API_KEY="your-api-key"
# 方式2在config.yaml中配置
llm:
api_key: "your-api-key"
```
### 运行
```bash
# LLM增强模式
python main.py -i ".\input\DC-SRS.pdf" -o ".\output\output.json"
# 纯规则模式不使用LLM
python main.py -i DC-SRS.pdf -o output.json --no-llm
```
<!-- ```bash
# 查看顶级章节编号
python -c "from src.document_parser import DocxParser; parser = DocxParser('test.docx'); sections = parser.parse(); print('所有顶级章节:'); [print(f'{i+1}. [{s.number}] {s.title}') for i, s in enumerate(sections)]"
``` -->
## 需求类型说明
工具统计**三类**需求类型:
| 类型 | 描述 |
|------|------|
| **功能需求** | 系统应该提供的功能和行为 |
| **接口需求** | 系统的输入/输出接口规范、通信协议等 |
| **其他需求** | 性能、安全、可靠性等非功能性需求 |
### 接口需求扩展字段
接口需求除了基本的"需求编号"和"需求描述"外,还包含以下字段:
| 字段 | 说明 |
|------|------|
| **接口名称** | 接口的名称
| **接口类型** | 接口的类型
| **来源** | 数据或信号的来源/发送方 |
| **目的地** | 数据或信号的目的地/接收方 |
### 需求描述规则
- **功能需求**:保持原文描述,不改写润色
- **接口需求**:允许改写润色,确保描述清晰完整
- **其他需求**:保持原文描述,不改写润色
## 目录结构
```
SRS_reqs_qwen/
├── main.py # 主程序入口
├── config.yaml # 配置文件
├── requirements.txt # 依赖
├── json_to_excel.py # JSON转Excel工具
├── README.md # 项目说明
├── input/ # 输入文档目录
├── output/ # 输出结果目录
└── src/ # 源代码目录
├── __init__.py
├── document_parser.py # 文档解析器
├── requirement_extractor.py # 需求提取器
├── json_generator.py # JSON生成器
├── llm_interface.py # LLM接口
└── utils.py # 工具函数
```