1
0
Files

116 lines
5.2 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.
## Requirements
### Requirement: 优先使用 lyxy-reader-office 解析办公文档
大模型在遇到 .docx、.xlsx、.pptx、.pdf 文件时SHALL 优先激活并使用 lyxy-reader-office skill 来读取文件内容。
#### Scenario: 用户请求读取支持的文件格式
- **WHEN** 用户请求读取或解析 .docx、.xlsx、.pptx 或 .pdf 文件
- **THEN** 大模型 SHALL 激活 lyxy-reader-office skill
- **AND** 使用 skill 目录下的 `scripts/parser.py` 执行解析
#### Scenario: 文件扩展名自动识别
- **WHEN** 用户提供的文件路径以 .docx、.xlsx、.pptx 或 .pdf 结尾
- **THEN** 大模型 SHALL 自动识别为 lyxy-reader-office skill 的处理范围
- **AND** 无需用户显式指定使用哪个 skill
### Requirement: 必须通过 lyxy-runner-python 执行脚本
当环境中存在 lyxy-runner-python skill 时,大模型 SHALL 必须使用该 skill 来运行 parser.py 脚本。
#### Scenario: lyxy-runner-python 可用
- **WHEN** 大模型环境中存在 lyxy-runner-python skill
- **THEN** 大模型 SHALL 通过 lyxy-runner-python skill 执行 parser.py
- **AND** 利用 lyxy-runner-python 的自动依赖管理功能uv安装所需的 Python 包
#### Scenario: lyxy-runner-python 不可用
- **WHEN** 大模型环境中不存在 lyxy-runner-python skill
- **THEN** 大模型 SHALL 降级到直接使用 Python 执行 parser.py
- **AND** 提示用户当前使用直接执行模式
- **AND** 禁止自动执行 pip install 安装依赖
### Requirement: 引导阅读 README 获取详细用法
大模型在需要了解 parser.py 的详细使用方式时SHALL 阅读 `scripts/README.md` 文件。
#### Scenario: 首次使用 skill 执行解析
- **WHEN** 大模型首次使用 lyxy-reader-office skill 或不确定具体参数用法
- **THEN** 大模型 SHALL 阅读 `scripts/README.md` 获取命令行参数、依赖安装和使用示例等详细信息
#### Scenario: 遇到特殊参数需求
- **WHEN** 用户请求使用特殊功能(如 PDF OCR、章节提取、正则搜索等
- **THEN** 大模型 SHALL 参考 `scripts/README.md` 中的对应参数说明
### Requirement: 支持多格式文档解析
系统 SHALL 支持 DOCX、PPTX、XLSX、PDF 四种格式的文档解析,将文件转换为 Markdown 格式输出。
#### Scenario: 解析 DOCX 文件
- **WHEN** 用户请求解析 .docx 文件
- **THEN** 系统返回完整的 Markdown 格式文本
- **AND** 保留标题、列表、表格、粗体、斜体等格式
- **AND** 移除图片
#### Scenario: 解析 PPTX 文件
- **WHEN** 用户请求解析 .pptx 文件
- **THEN** 系统返回完整的 Markdown 格式文本
- **AND** 每张幻灯片以 `## Slide N` 为标题
- **AND** 幻灯片之间以 `---` 分隔
#### Scenario: 解析 XLSX 文件
- **WHEN** 用户请求解析 .xlsx 文件
- **THEN** 系统返回完整的 Markdown 格式文本
- **AND** 以 `## SheetName` 区分工作表
- **AND** 数据以 Markdown 表格呈现
#### Scenario: 解析 PDF 文件
- **WHEN** 用户请求解析 .pdf 文件
- **THEN** 系统返回完整的 Markdown 格式文本
- **AND** 默认使用普通文本提取模式
#### Scenario: PDF OCR 高精度模式
- **WHEN** 用户请求对 PDF 文件启用 OCR 或高精度解析
- **THEN** 系统使用 `--high-res` 参数启用 OCR 版面分析
- **AND** 通过 Docling OCR 或 unstructured hi_res 策略处理
### Requirement: 统一的查询功能
系统 SHALL 对所有支持的文件格式提供统一的查询接口,包括全文提取、元数据查询、标题提取、章节提取和正则搜索。
#### Scenario: 获取文档字数
- **WHEN** 用户请求获取文档的字数
- **THEN** 系统使用 `-c` 参数返回文档的总字符数
#### Scenario: 获取文档行数
- **WHEN** 用户请求获取文档的行数
- **THEN** 系统使用 `-l` 参数返回文档的总行数
#### Scenario: 提取所有标题
- **WHEN** 用户请求提取文档的标题结构
- **THEN** 系统使用 `-t` 参数返回所有 1-6 级标题
#### Scenario: 提取指定章节内容
- **WHEN** 用户请求提取特定标题名称的章节内容
- **THEN** 系统使用 `-tc` 参数返回该章节的完整内容
- **AND** 包含完整的上级标题链和所有下级内容
#### Scenario: 正则表达式搜索
- **WHEN** 用户请求在文档中搜索关键词或模式
- **THEN** 系统使用 `-s` 参数返回所有匹配结果及上下文
- **AND** 默认包含前后各 2 行非空行上下文
- **AND** 支持 `-n` 参数自定义上下文行数
### Requirement: 多策略解析降级
系统 SHALL 对每种文件格式按优先级尝试多种解析策略,确保最大的兼容性。
#### Scenario: 解析器按优先级降级
- **WHEN** 优先级最高的解析器不可用或解析失败
- **THEN** 系统自动尝试下一优先级的解析器
- **AND** 记录每个解析器的失败原因
#### Scenario: 所有解析器失败
- **WHEN** 某种格式的所有解析策略均失败
- **THEN** 系统返回详细的失败信息
- **AND** 列出每种解析策略的失败原因
- **AND** 以退出码 1 退出
#### Scenario: DOCX/PPTX/XLSX 无依赖运行
- **WHEN** 未安装任何第三方解析库
- **THEN** DOCX、PPTX、XLSX 文件 SHALL 仍可通过内置 XML 原生解析工作
- **AND** PDF 至少需要 pypdf 才能解析