# 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 ``` ## 需求类型说明 工具统计**三类**需求类型: | 类型 | 描述 | |------|------| | **功能需求** | 系统应该提供的功能和行为 | | **接口需求** | 系统的输入/输出接口规范、通信协议等 | | **其他需求** | 性能、安全、可靠性等非功能性需求 | ### 接口需求扩展字段 接口需求除了基本的"需求编号"和"需求描述"外,还包含以下字段: | 字段 | 说明 | |------|------| | **接口名称** | 接口的名称 | **接口类型** | 接口的类型 | **来源** | 数据或信号的来源/发送方 | | **目的地** | 数据或信号的目的地/接收方 | ### 需求描述规则 - **功能需求**:保持原文描述,不改写润色 - **接口需求**:允许改写润色,确保描述清晰完整 - **其他需求**:保持原文描述,不改写润色 ## 目录结构 ``` 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 # 工具函数 ```