# 图片OCR与智能文档管理系统 - 需求文档

## 1. 项目概述

### 1.1 项目背景
在数字化办公场景中，用户经常需要从截图中提取文字内容（如截图保存的待办事项、会议记录、资料等），然后手动整理成文档或待办任务。本项目旨在通过OCR和AI技术，自动化这一流程，提升工作效率。

### 1.2 项目目标
- 实现图片到文本的自动识别与转换
- 利用AI智能分析，自动为文档打标签和分类
- 支持将识别结果一键转化为待办事项或归档文档
- 提供友好的Web界面，支持多用户协作

### 1.3 成功标准
- OCR识别准确率达到90%以上（清晰印刷体）
- AI标签分类准确率达到85%以上
- 端到端流程（截图→待办）操作步骤不超过5步
- 系统响应时间 < 2秒（不含OCR处理时间）
- 支持Docker一键部署

---

## 2. 功能需求

### 2.1 核心功能 (Must Have - P0)

#### 2.1.1 用户认证与授权
- **描述**: 支持多用户注册登录，数据隔离
- **优先级**: P0
- **验收标准**:
  - [ ] 支持邮箱/用户名注册登录
  - [ ] 支持密码加密存储（bcrypt）
  - [ ] 用户只能查看和操作自己的数据
  - [ ] 提供登出功能
  - [ ] JWT Token认证机制

#### 2.1.2 图片采集
- **描述**: 支持系统截图和本地图片上传两种方式
- **优先级**: P0
- **验收标准**:
  - [ ] 支持点击调用系统截图（需浏览器权限）
  - [ ] 支持拖拽上传图片
  - [ ] 支持点击选择文件上传
  - [ ] 支持常见图片格式（JPG、PNG、WEBP）
  - [ ] 图片预览功能
  - [ ] 单个图片大小限制 < 10MB

#### 2.1.3 OCR文字识别与智能处理
- **描述**: 将图片中的文字转换为可编辑文本，建立图片-文档关联，支持OCR失败时的降级处理
- **优先级**: P0
- **验收标准**:
  - [ ] 支持中文、英文识别
  - [ ] OCR结果可编辑
  - [ ] 建立图片与识别结果的永久关联
  - [ ] 显示OCR置信度/处理状态
  - [ ] 支持重新OCR识别
  - [ ] **OCR失败处理**:
    - [ ] 当OCR置信度低于阈值（如30%）时，不自动生成文档
    - [ ] 图片保存到"待处理"列表，用户可查看所有失败/待处理的图片
    - [ ] 用户可从待处理列表手动创建文档（输入文字内容）
    - [ ] 提供图片预处理选项（旋转、裁剪、亮度调整）后重试
    - [ ] 显示明确的失败原因和建议
  - [ ] **模糊图片处理**:
    - [ ] 自动检测图片质量（模糊度、分辨率）
    - [ ] 低质量图片发出警告，但仍可继续处理
    - [ ] 提供图片增强选项

#### 2.1.4 文档管理
- **描述**: 对OCR结果进行CRUD操作
- **优先级**: P0
- **验收标准**:
  - [ ] 创建文档（从OCR结果）
  - [ ] 编辑文档内容
  - [ ] 删除文档
  - [ ] 文档列表展示
  - [ ] 文档搜索（按标题、内容）
  - [ ] 文档详情查看

#### 2.1.5 待办事项管理
- **描述**: 将文档转化为待办事项并管理，支持三种状态列表
- **优先级**: P0
- **验收标准**:
  - [ ] 从文档创建待办事项
  - [ ] 设置优先级（高/中/低）
  - [ ] 设置截止日期
  - [ ] **三种状态列表**:
    - [ ] **未完成列表**: 新创建、进行中的待办
    - [ ] **已完成列表**: 用户标记完成的待办
    - [ ] **已确认列表**: 完成后经过用户确认归档的待办
  - [ ] 状态流转：未完成 → 已完成 → 已确认
  - [ ] 支持批量操作（批量完成、批量确认）
  - [ ] 待办列表按状态/优先级/截止日期排序
  - [ ] 待办归类（支持分类文件夹）
  - [ ] 已确认列表支持归档和导出

#### 2.1.6 AI智能分析
- **描述**: 对OCR结果进行AI分析，自动打标签和分类，支持动态类型和标签扩展
- **优先级**: P0
- **验收标准**:
  - [ ] 支持GLM（智谱AI）接口
  - [ ] 支持MiniMax接口
  - [ ] 支持DeepSeek接口
  - [ ] **智能标签生成**:
    - [ ] 自动生成3-5个标签
    - [ ] AI可根据内容创建新标签（非预定义标签）
    - [ ] 新标签自动添加到用户标签库
    - [ ] 标签使用频率统计，常用标签优先展示
  - [ ] **智能分类与类型**:
    - [ ] AI可自动识别文档/待办类型
    - [ ] 支持AI创建新分类（如"会议记录"、"发票"、"学习笔记"等）
    - [ ] 新分类自动添加到用户分类体系
    - [ ] 分类图标和颜色自动生成（可手动修改）
  - [ ] **动态展示优化**:
    - [ ] 根据用户保存的内容，自动调整标签/分类展示顺序
    - [ ] 常用组合（标签+分类）智能推荐
    - [ ] 相似内容自动归集建议
  - [ ] 标签和分类可手动修改
  - [ ] AI分析失败时降级处理

### 2.2 重要功能 (Should Have - P1)

#### 2.2.1 标签与分类系统
- **描述**: 完善的标签分类管理体系
- **优先级**: P1
- **验收标准**:
  - [ ] 创建自定义分类
  - [ ] 创建自定义标签
  - [ ] 标签颜色自定义
  - [ ] 按标签/分类筛选
  - [ ] 标签统计展示

#### 2.2.2 配置管理
- **描述**: 可配置的服务提供商设置
- **优先级**: P1
- **验收标准**:
  - [ ] OCR提供商配置（本地/云端）
  - [ ] AI提供商配置（API Key等）
  - [ ] 模型参数配置（温度、top_p等）
  - [ ] 配置测试功能
  - [ ] 配置导入/导出

#### 2.2.3 批量操作
- **描述**: 提高批量处理效率
- **优先级**: P1
- **验收标准**:
  - [ ] 批量上传图片
  - [ ] 批量OCR识别
  - [ ] 批量AI分析
  - [ ] 批量删除
  - [ ] 批量打标签

### 2.3 可选功能 (Could Have - P2)

#### 2.3.1 数据导出
- **描述**: 支持将数据导出为各种格式
- **优先级**: P2
- **功能**:
  - 导出为Markdown
  - 导出为PDF
  - 导出为JSON

#### 2.3.2 数据统计
- **描述**: 展示使用统计
- **优先级**: P2
- **功能**:
  - OCR次数统计
  - 文档数量趋势
  - 待办完成率

#### 2.3.3 模板系统
- **描述**: 预设文档/待办模板
- **优先级**: P2
- **功能**:
  - 创建模板
  - 应用模板
  - 模板市场

---

## 3. 非功能需求

### 3.1 性能要求
- 页面首屏加载时间: < 2秒
- API响应时间: < 500ms（不含OCR处理）
- OCR处理时间: < 5秒（单张常规图片）
- 并发用户: 5-10人同时使用
- 数据容量: 单用户最多1000个文档

### 3.2 安全要求
- 密码使用bcrypt加密
- JWT Token有效期24小时
- API Key加密存储
- 文件上传类型验证
- SQL注入防护
- XSS防护
- CORS配置
- HTTPS部署支持

### 3.3 可用性要求
- 系统可用性: 99%
- 故障恢复时间: < 1小时
- 数据备份频率: 每日自动备份

### 3.4 可维护性要求
- 代码结构清晰，模块化
- 完善的日志系统
- Docker容器化部署
- 环境变量配置
- API文档完整

---

## 4. 技术栈

### 4.1 前端技术栈
- **框架**: React 18
- **构建工具**: Vite
- **UI组件库**: Ant Design 5
- **状态管理**: Zustand / React Query
- **路由**: React Router v6
- **HTTP客户端**: Axios
- **截图功能**: html2canvas 或 MediaDevices API
- **拖拽上传**: react-dropzone

### 4.2 后端技术栈
- **运行时**: Node.js 18+
- **框架**: Express.js / Fastify
- **ORM**: Prisma
- **数据库**: SQLite（开发） / PostgreSQL（生产）
- **认证**: JWT
- **文件存储**: 本地存储 / 可选OSS

### 4.3 OCR方案
- **本地**: PaddleOCR (Python微服务) / Tesseract.js
- **云端API**:
  - 百度OCR
  - 腾讯云OCR
  - 阿里云OCR

### 4.4 AI提供商
- **智谱AI (GLM)**: GLM-4 / GLM-4-Flash
- **MiniMax**: MiniMax-Pro
- **DeepSeek**: DeepSeek-Chat / DeepSeek-Coder

### 4.5 部署方案
- **容器化**: Docker + Docker Compose
- **反向代理**: Nginx
- **进程管理**: PM2 (开发环境)

---

## 5. 数据模型

### 5.1 实体关系图

```mermaid
erDiagram
    USER ||--o{ DOCUMENT : owns
    USER ||--o{ TODO : owns
    USER ||--o{ CATEGORY : owns
    USER ||--o{ TAG : owns
    USER ||--o{ IMAGE : owns

    DOCUMENT ||--o| IMAGE : has
    DOCUMENT ||--o{ DOCUMENT_TAG : has
    DOCUMENT }|--|| CATEGORY : belongs_to

    TODO }|--o| DOCUMENT : derived_from
    TODO }|--|| CATEGORY : belongs_to
    TODO ||--o{ TODO_TAG : has

    TAG ||--o{ DOCUMENT_TAG : associated
    TAG ||--o{ TODO_TAG : associated

    DOCUMENT }|--|| AI_ANALYSIS : has

    NOTE: IMAGE.document_id 可为空，支持待处理图片独立存在
```

### 5.2 核心实体

#### User (用户)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| username | String | 用户名 | UNIQUE, NOT NULL |
| email | String | 邮箱 | UNIQUE |
| password_hash | String | 密码哈希 | NOT NULL |
| created_at | DateTime | 创建时间 | |
| updated_at | DateTime | 更新时间 | |

#### Document (文档)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| title | String | 标题 | |
| content | Text | OCR内容/编辑后内容 | NOT NULL |
| category_id | UUID | 所属分类 | FK |
| created_at | DateTime | 创建时间 | |
| updated_at | DateTime | 更新时间 | |

#### Image (图片)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| document_id | UUID | 关联文档 | FK (可为空) |
| file_path | String | 存储路径 | NOT NULL |
| file_size | Integer | 文件大小 | |
| mime_type | String | MIME类型 | |
| ocr_result | Text | OCR原始结果 | |
| ocr_confidence | Float | 置信度 | |
| processing_status | Enum | 处理状态 | pending/processing/success/failed |
| quality_score | Float | 图片质量分数 | |
| error_message | Text | 失败原因 | |
| created_at | DateTime | 创建时间 | |
| updated_at | DateTime | 更新时间 | |

#### Todo (待办事项)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| document_id | UUID | 来源文档 | FK |
| title | String | 标题 | NOT NULL |
| description | Text | 描述 | |
| priority | Enum | 优先级 | high/medium/low |
| status | Enum | 状态 | pending(未完成)/completed(已完成)/confirmed(已确认) |
| due_date | DateTime | 截止日期 | |
| category_id | UUID | 所属分类 | FK |
| completed_at | DateTime | 完成时间 | |
| confirmed_at | DateTime | 确认时间 | |
| created_at | DateTime | 创建时间 | |
| updated_at | DateTime | 更新时间 | |

#### Category (分类)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| name | String | 分类名 | NOT NULL |
| type | Enum | 类型 | document/todo |
| color | String | 颜色 | |
| icon | String | 图标 | |
| parent_id | UUID | 父分类 | FK |
| sort_order | Integer | 排序 | |
| usage_count | Integer | 使用次数 | 默认0 |
| is_ai_created | Boolean | AI创建 | 默认false |
| created_at | DateTime | 创建时间 | |

#### Tag (标签)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| name | String | 标签名 | NOT NULL |
| color | String | 颜色 | |
| usage_count | Integer | 使用次数 | 默认0 |
| is_ai_created | Boolean | AI创建 | 默认false |
| created_at | DateTime | 创建时间 | |

#### AIAnalysis (AI分析结果)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| document_id | UUID | 关联文档 | FK, NOT NULL |
| provider | String | AI提供商 | |
| model | String | 模型名 | |
| suggested_tags | JSON | 推荐标签 | |
| suggested_category | String | 推荐分类 | |
| summary | Text | 摘要 | |
| raw_response | JSON | 原始响应 | |
| created_at | DateTime | 创建时间 | |

#### Config (配置)
| 字段 | 类型 | 说明 | 约束 |
|------|------|------|------|
| id | UUID | 主键 | PK |
| user_id | UUID | 所属用户 | FK, NOT NULL |
| key | String | 配置键 | NOT NULL |
| value | JSON | 配置值 | |
| created_at | DateTime | 创建时间 | |
| updated_at | DateTime | 更新时间 | |

---

### 5.3 待处理图片列表

#### 概念说明
当OCR失败或置信度过低时，图片不会被删除，而是保存到"待处理图片列表"中，用户可以：
1. 查看所有待处理的图片
2. 手动输入文字创建文档
3. 调整图片后重新OCR
4. 删除无用的图片

#### 查询逻辑
```sql
-- 待处理图片列表
SELECT * FROM images
WHERE user_id = ? AND (document_id IS NULL OR processing_status = 'failed')
ORDER BY created_at DESC
```

#### 状态流转
```
图片上传 → OCR处理 → 成功(创建文档) / 失败(进入待处理列表)
待处理列表 → 手动创建文档 / 删除 / 重新OCR
```

---

## 6. 用户界面

### 6.1 页面结构

| 页面 | 路由 | 权限 | 描述 |
|------|------|------|------|
| 登录/注册 | `/auth` | 公开 | 用户登录和注册 |
| 工作台 | `/` | 需登录 | 主页面，包含快速操作和统计 |
| 文档列表 | `/documents` | 需登录 | 文档管理页面 |
| 文档详情 | `/documents/:id` | 需登录 | 文档编辑/查看 |
| **待办列表** | `/todos` | 需登录 | **待办事项管理（三种状态）** |
| **待处理图片** | `/pending-images` | 需登录 | **OCR失败的待处理图片列表** |
| 设置 | `/settings` | 需登录 | 系统配置 |
| 标签管理 | `/tags` | 需登录 | 标签和分类管理 |
| 统计 | `/stats` | 需登录 | 数据统计 |

### 6.2 核心交互流程

```mermaid
flowchart TD
    A[用户登录] --> B[工作台]
    B --> C{选择操作}

    C -->|截图/上传| D[图片上传]
    D --> E[OCR处理]
    E --> F{OCR结果}

    F -->|成功且置信度高| G[显示OCR结果]
    F -->|失败/置信度低| H[保存到待处理列表]

    G --> I{满意结果?}
    I -->|是| J[保存文档]
    I -->|需编辑| K[编辑OCR结果]
    K --> J

    H --> L[待处理图片页]
    L --> M{处理方式}
    M -->|手动输入| N[创建文档]
    M -->|图片增强+重试| D
    M -->|删除| O[移除图片]

    J --> P[AI智能分析]
    P --> Q{AI分析}
    Q -->|自动创建| R[新标签/新分类]
    Q -->|推荐已有| S[现有标签/分类]

    R --> T[用户确认/修改]
    S --> T

    T --> U{文档用途}
    U -->|待办事项| V[创建待办]
    U -->|存档| W[归档文档]

    V --> X[设置优先级/截止日期]
    X --> Y[保存到未完成列表]

    Y --> Z{状态流转}
    Z -->|完成| AA[移动到已完成列表]
    Z -->|确认| AB[移动到已确认列表]

    W --> AC[选择分类]
    AC --> AD[保存完成]
```

### 6.3 界面原型要点

#### 工作台首页
- 顶部：快速截图按钮（突出显示）
- 中部：最近文档 + 待办事项
- 底部：快捷操作入口

#### 文档编辑页
- 左侧：图片预览 + OCR原始结果
- 右侧：可编辑文本区域
- 底部：AI分析按钮 + 标签选择 + 操作按钮

#### 待办管理页（三种状态列表）
- **顶部**: Tab切换（未完成 / 已完成 / 已确认）
- **筛选器**: 优先级、分类、标签、截止日期
- **未完成列表**:
  - 待办卡片显示：标题、描述、优先级标签、截止日期
  - 操作：编辑、标记完成、删除
  - 支持拖拽排序
- **已完成列表**:
  - 已完成的待办，显示完成时间
  - 操作：撤销（回到未完成）、确认归档、删除
  - 批量确认操作
- **已确认列表**:
  - 归档的待办，只读查看
  - 支持导出、批量删除
  - 显示确认时间

#### 待处理图片页
- **顶部**: 统计信息（待处理数量、本周新增）
- **图片网格**: 显示所有待处理图片
- **图片卡片操作**:
  - 预览图片
  - 手动创建文档（打开编辑对话框）
  - 图片增强（旋转、裁剪、亮度）后重新OCR
  - 删除图片
- **批量操作**: 全选后批量删除

#### 文档详情页
- **左侧**: 图片预览 + OCR原始结果
- **右侧**: 可编辑文本区域
- **底部/侧边**:
  - AI分析按钮
  - 动态标签展示（常用标签优先）
  - 动态分类展示（AI推荐分类置顶）
  - 转为待办按钮

---

## 7. API设计

### 7.1 认证相关
```
POST   /api/auth/register     # 用户注册
POST   /api/auth/login        # 用户登录
POST   /api/auth/logout       # 用户登出
GET    /api/auth/me           # 获取当前用户信息
```

### 7.2 文档相关
```
GET    /api/documents         # 获取文档列表
POST   /api/documents         # 创建文档
GET    /api/documents/:id     # 获取文档详情
PUT    /api/documents/:id     # 更新文档
DELETE /api/documents/:id     # 删除文档
GET    /api/documents/:id/image # 获取关联图片
```

### 7.3 OCR相关
```
POST   /api/ocr/upload        # 上传图片并OCR
POST   /api/ocr/analyze       # 对已有图片重新OCR
GET    /api/ocr/status/:taskId # 查询OCR任务状态
POST   /api/ocr/enhance       # 图片增强后重新OCR
GET    /api/ocr/pending       # 获取待处理图片列表
DELETE /api/ocr/pending/:id   # 删除待处理图片
POST   /api/ocr/pending/:id/manual-create # 手动创建文档
```

### 7.4 待办相关
```
GET    /api/todos             # 获取待办列表（支持状态筛选）
POST   /api/todos             # 创建待办
GET    /api/todos/:id         # 获取待办详情
PUT    /api/todos/:id         # 更新待办
DELETE /api/todos/:id         # 删除待办
PATCH  /api/todos/:id/complete # 标记完成
PATCH  /api/todos/:id/confirm # 标记确认
PATCH  /api/todos/:id/reopen  # 撤销到未完成
POST   /api/todos/batch-complete # 批量完成
POST   /api/todos/batch-confirm  # 批量确认
```

### 7.5 AI分析相关
```
POST   /api/ai/analyze        # AI分析文档（标签+分类）
POST   /api/ai/suggest-tags   # 获取标签建议（可创建新标签）
POST   /api/ai/suggest-category # 获取分类建议（可创建新分类）
POST   /api/ai/detect-type    # AI检测文档类型
GET    /api/ai/smart-suggestions # 获取智能推荐（基于历史）
```

### 7.6 分类与标签
```
GET    /api/categories        # 获取分类列表
POST   /api/categories        # 创建分类
PUT    /api/categories/:id    # 更新分类
DELETE /api/categories/:id    # 删除分类

GET    /api/tags              # 获取标签列表
POST   /api/tags              # 创建标签
PUT    /api/tags/:id          # 更新标签
DELETE /api/tags/:id          # 删除标签
```

### 7.7 配置相关
```
GET    /api/config            # 获取配置
PUT    /api/config            # 更新配置
POST   /api/config/test       # 测试配置
```

---

## 8. 开发计划

### 8.1 里程碑

| 里程碑 | 预计完成 | 交付物 |
|--------|----------|--------|
| M1: 基础框架搭建 | 第1周 | 项目脚手架、数据库设计、基础API |
| M2: 核心功能开发 | 第2-3周 | OCR识别、文档CRUD、用户认证 |
| M3: AI集成 | 第4周 | AI分析功能、标签分类 |
| M4: 待办管理 | 第5周 | 待办CRUD、优先级截止日期 |
| M5: 完善与优化 | 第6周 | UI优化、测试、文档 |

### 8.2 任务分解

#### Sprint 1: 基础架构
- 搭建React + Vite项目
- 搭建Express后端项目
- 设计数据库Schema (Prisma)
- 实现JWT认证
- Docker配置文件编写
- **估算**: 3-5天

#### Sprint 2: 图片与OCR
- 实现图片上传功能
- 集成本地OCR (PaddleOCR)
- 集成云端OCR API
- 建立图片-文档关联
- OCR结果编辑功能
- **估算**: 5-7天
- **依赖**: Sprint 1

#### Sprint 3: 文档管理
- 文档CRUD API
- 文档列表UI
- 文档详情/编辑页
- 搜索功能
- **估算**: 3-4天
- **依赖**: Sprint 2

#### Sprint 4: AI集成
- AI提供商抽象层设计
- 集成GLM API
- 集成MiniMax API
- 集成DeepSeek API
- 标签分类生成逻辑
- **估算**: 5-7天
- **依赖**: Sprint 3

#### Sprint 5: 待办管理
- 待办数据模型
- 待办CRUD API和UI
- 优先级和截止日期
- 状态管理
- 待办分类
- **估算**: 4-5天
- **依赖**: Sprint 3

#### Sprint 6: 配置与优化
- 配置管理页面
- OCR/AI提供商配置
- UI/UX优化
- 性能优化
- 错误处理完善
- **估算**: 3-4天

---

## 9. 风险评估

| 风险 | 可能性 | 影响 | 缓解措施 |
|------|--------|------|----------|
| OCR准确率不达标 | 中 | 高 | 同时支持多个OCR提供商，允许用户选择 |
| AI API成本过高 | 中 | 中 | 提供本地模型选项，优化prompt减少token |
| 浏览器截图权限限制 | 高 | 中 | 提供本地文件上传作为替代方案 |
| 本地OCR性能问题 | 中 | 中 | 使用GPU加速，或默认使用云端API |
| 多用户数据隔离问题 | 低 | 高 | 严格的中间件验证，充分的测试 |
| AI提供商API变更 | 中 | 中 | 抽象层设计，便于切换提供商 |

---

## 10. Docker部署方案

### 10.1 服务架构

```
┌─────────────────────────────────────────┐
│              Nginx (80/443)              │
├─────────────────────────────────────────┤
│                                         │
│  ┌─────────────┐  ┌─────────────────┐  │
│  │   React     │  │   Express API   │  │
│  │   Frontend  │  │   Backend       │  │
│  └─────────────┘  └─────────────────┘  │
│                          │              │
│  ┌─────────────┐  ┌──────▼──────┐      │
│  │  PaddleOCR  │  │  Database   │      │
│  │  (Optional) │  │  (SQLite/   │      │
│  │             │  │   PG)       │      │
│  └─────────────┘  └─────────────┘      │
└─────────────────────────────────────────┘
```

### 10.2 Docker Compose 配置

```yaml
services:
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    depends_on:
      - backend

  backend:
    build: ./backend
    ports:
      - "4000:4000"
    environment:
      - DATABASE_URL=file:./dev.db
      - JWT_SECRET=${JWT_SECRET}
    volumes:
      - ./uploads:/app/uploads
      - ./data:/app/data

  ocr-service:
    build: ./ocr-service
    ports:
      - "5000:5000"
    profiles:
      - local-ocr

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - frontend
      - backend
```

---

## 11. 后续扩展方向

1. **移动端适配**: 响应式设计或PWA
2. **协作功能**: 分享文档、多人协作编辑
3. **语音输入**: 支持语音转文字后处理
4. **智能提醒**: 基于待办的智能提醒
5. **知识图谱**: 构建文档间的关联关系
6. **版本控制**: 文档修改历史和版本回溯
7. **插件系统**: 支持自定义扩展
8. **API开放**: 提供开放API供第三方集成

---

## 12. 附录

### 12.1 参考资料
- [PaddleOCR文档](https://github.com/PaddlePaddle/PaddleOCR)
- [智谱AI开放平台](https://open.bigmodel.cn/)
- [MiniMax API文档](https://www.minimaxi.com/)
- [DeepSeek API文档](https://platform.deepseek.com/)
- [Ant Design React](https://ant.design/)

### 12.2 术语表
- **OCR**: Optical Character Recognition，光学字符识别
- **GLM**: General Language Model，智谱AI的大语言模型
- **JWT**: JSON Web Token，用于身份验证的令牌
- **CRUD**: Create, Read, Update, Delete，增删改查
- **Docker**: 容器化部署技术

---

## 需求确认

我已经整理了完整的需求文档。请确认：

1. **功能完整性** - 是否有遗漏的功能？
2. **优先级** - P0/P1/P2 的划分是否合理？
3. **可行性** - 技术方案和时间估算是否可行？
4. **其他** - 还有其他需要补充的吗？

如果确认无误，请回复 **"确认"**，我将进入开发规划阶段。
如果需要修改，请告诉我具体需要调整的地方。
