## 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 才能解析