Files
lyxy-document/openspec/specs/pdf-reader/spec.md
lanyuanxiaoyao 6c003d73f3 docs: 同步 delta specs 到主 specs
从归档的 unify-document-readers change 同步 delta specs 到主 specs 目录。

新增 specs:
- document-reading - 统一文档读取核心能力
- docx-reader - DOCX 文档解析能力
- xlsx-reader - XLSX 文档解析能力
- pptx-reader - PPTX 文档解析能力
- pdf-reader - PDF 文档解析能力(含 OCR)
- html-reader - HTML/URL 文档解析能力
2026-03-08 13:52:30 +08:00

121 lines
3.9 KiB
Markdown
Raw 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.
## Purpose
PDF 文档解析能力(含 OCR支持多种解析方法。
## Requirements
### Requirement: PDF 文档解析
系统 SHALL 支持解析 PDF 格式文档按优先级尝试多个解析器OCR 优先。
#### Scenario: 按优先级尝试解析器
- **WHEN** 解析 PDF 文档
- **THEN** 系统按 docling OCR → unstructured OCR → docling → unstructured → markitdown → pypdf 的顺序尝试
#### Scenario: 成功解析
- **WHEN** 任一解析器成功
- **THEN** 系统返回解析结果
#### Scenario: 所有解析器失败
- **WHEN** 所有解析器均失败
- **THEN** 系统返回失败列表并退出非零状态码
### Requirement: 无 --high-res 参数
系统 SHALL NOT 提供 --high-res 参数来控制是否使用 OCROCR 解析器直接加入解析器链。
#### Scenario: 不接受 --high-res 参数
- **WHEN** 用户使用 --high-res 参数
- **THEN** 系统提示该参数不存在
### Requirement: docling OCR 解析器
系统 SHALL 支持使用 docling 库的 OCR 模式解析 PDF。
#### Scenario: docling OCR 解析成功
- **WHEN** docling 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: docling 库未安装
- **WHEN** docling 库未安装
- **THEN** 系统尝试下一个解析器
### Requirement: unstructured OCR 解析器
系统 SHALL 支持使用 unstructured 库的 hi_res 策略+PaddleOCR 解析 PDF。
#### Scenario: unstructured OCR 解析成功
- **WHEN** unstructured 和 unstructured-paddleocr 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: unstructured OCR 依赖未安装
- **WHEN** unstructured 或 unstructured-paddleocr 库未安装
- **THEN** 系统尝试下一个解析器
### Requirement: docling 解析器(非 OCR
系统 SHALL 支持使用 docling 库的非 OCR 模式解析 PDF。
#### Scenario: docling 解析成功
- **WHEN** docling 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: docling 库未安装
- **WHEN** docling 库未安装
- **THEN** 系统尝试下一个解析器
### Requirement: unstructured 解析器(非 OCR
系统 SHALL 支持使用 unstructured 库的 fast 策略解析 PDF。
#### Scenario: unstructured 解析成功
- **WHEN** unstructured 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: unstructured 库未安装
- **WHEN** unstructured 库未安装
- **THEN** 系统尝试下一个解析器
### Requirement: markitdown 解析器
系统 SHALL 支持使用 markitdown 库解析 PDF。
#### Scenario: markitdown 解析成功
- **WHEN** markitdown 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: markitdown 库未安装
- **WHEN** markitdown 库未安装
- **THEN** 系统尝试下一个解析器
### Requirement: pypdf 解析器
系统 SHALL 支持使用 pypdf 库解析 PDF。
#### Scenario: pypdf 解析成功
- **WHEN** pypdf 库可用且文档有效
- **THEN** 系统返回 Markdown 内容
#### Scenario: pypdf 库未安装
- **WHEN** pypdf 库未安装
- **THEN** 系统返回失败信息
### Requirement: 每个解析器独立文件
系统 SHALL 将每个解析器实现为独立的单文件模块。
#### Scenario: docling OCR 解析器在独立文件
- **WHEN** 使用 docling OCR 解析器
- **THEN** 从 readers/pdf/docling_ocr.py 导入
#### Scenario: unstructured OCR 解析器在独立文件
- **WHEN** 使用 unstructured OCR 解析器
- **THEN** 从 readers/pdf/unstructured_ocr.py 导入
#### Scenario: docling 解析器在独立文件
- **WHEN** 使用 docling 解析器
- **THEN** 从 readers/pdf/docling.py 导入
#### Scenario: unstructured 解析器在独立文件
- **WHEN** 使用 unstructured 解析器
- **THEN** 从 readers/pdf/unstructured.py 导入
#### Scenario: markitdown 解析器在独立文件
- **WHEN** 使用 markitdown 解析器
- **THEN** 从 readers/pdf/markitdown.py 导入
#### Scenario: pypdf 解析器在独立文件
- **WHEN** 使用 pypdf 解析器
- **THEN** 从 readers/pdf/pypdf.py 导入