172 lines
8.1 KiB
Markdown
172 lines
8.1 KiB
Markdown
|
|
# CutThenThink 设计文档
|
|||
|
|
|
|||
|
|
## 项目概述
|
|||
|
|
|
|||
|
|
一个多用户的截图管理工具,核心流程:**截图 → OCR解析 → AI理解分类 → 生成备注和执行计划**
|
|||
|
|
|
|||
|
|
## 技术架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
┌────────────────────────────────────────────────────────────────┐
|
|||
|
|
│ PyQt6 桌面应用(纯客户端) │
|
|||
|
|
├────────────────────────────────────────────────────────────────┤
|
|||
|
|
│ • 截图/上传 • 分类浏览 • Markdown预览+复制 • 设置面板 │
|
|||
|
|
│ • 内置轻量OCR(本地) │
|
|||
|
|
│ • SQLite 本地存储 │
|
|||
|
|
└────────────────────────────────────────────────────────────────┘
|
|||
|
|
↓ API 调用
|
|||
|
|
┌────────────────────────────────────────────────────────────────┐
|
|||
|
|
│ 外部服务(云端/自建,可配置) │
|
|||
|
|
├────────────────────────────────────────────────────────────────┤
|
|||
|
|
│ • OCR服务:百度/腾讯/自定义API │
|
|||
|
|
│ • AI服务:OpenAI/Claude/通义/本地模型 │
|
|||
|
|
│ • 云存储:OSS/S3/WebDAV(可选) │
|
|||
|
|
└────────────────────────────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 核心功能模块
|
|||
|
|
|
|||
|
|
### 1. 截图与输入模块
|
|||
|
|
|
|||
|
|
| 功能 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 全局快捷键截图 | 用户自定义快捷键,触发系统区域截图 |
|
|||
|
|
| 剪贴板监听 | 自动检测剪贴板中的图片,提示用户是否处理 |
|
|||
|
|
| 图片上传 | 支持拖拽或浏览选择本地图片文件(PNG、JPG、JPEG、WEBP) |
|
|||
|
|
| 批量上传 | 一次选择多张图片,排队处理 |
|
|||
|
|
|
|||
|
|
### 2. OCR 处理模块
|
|||
|
|
|
|||
|
|
| 方案 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 内置轻量OCR | PaddleOCR轻量版,本地运行,无需联网 |
|
|||
|
|
| 云端OCR API | 支持配置百度OCR、腾讯OCR、或自建OCR服务 |
|
|||
|
|
| 自动降级 | 优先使用云端OCR,失败时自动降级到本地OCR |
|
|||
|
|
|
|||
|
|
### 3. AI 分析与分类模块
|
|||
|
|
|
|||
|
|
**分类类型**:
|
|||
|
|
- 待办事项
|
|||
|
|
- 信息/笔记
|
|||
|
|
- 灵感/想法
|
|||
|
|
- 参考资料
|
|||
|
|
- 搞笑文案
|
|||
|
|
- 纯文本
|
|||
|
|
|
|||
|
|
**支持的AI提供商**:
|
|||
|
|
- 国际:OpenAI (GPT-4)、Anthropic (Claude)
|
|||
|
|
- 国内:通义千问、文心一言、智谱、DeepSeek
|
|||
|
|
- 本地:Ollama、LM Studio(兼容OpenAI API)
|
|||
|
|
|
|||
|
|
**输出格式**:Markdown,支持复制粘贴到其他工具
|
|||
|
|
|
|||
|
|
### 4. 数据存储模块
|
|||
|
|
|
|||
|
|
- **本地存储**:SQLite 单文件数据库
|
|||
|
|
- **可选云同步**:WebDAV / 阿里云OSS / AWS S3
|
|||
|
|
- **数据导出**:导出全部/按分类导出为Markdown
|
|||
|
|
|
|||
|
|
## UI 设计
|
|||
|
|
|
|||
|
|
### 配色方案
|
|||
|
|
```
|
|||
|
|
背景色: #faf8f5 (米白)
|
|||
|
|
卡片色: #ffffff (纯白)
|
|||
|
|
强调色: #ff6b6b (珊瑚红)
|
|||
|
|
边框色: #e9ecef (浅灰)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 分类颜色
|
|||
|
|
| 分类 | 颜色 |
|
|||
|
|
|------|------|
|
|||
|
|
| 待办事项 | #ff6b6b (红) |
|
|||
|
|
| 笔记 | #4dabf7 (蓝) |
|
|||
|
|
| 灵感 | #ffd43b (黄) |
|
|||
|
|
| 参考资料 | #51cf66 (绿) |
|
|||
|
|
| 搞笑文案 | #ff922b (橙) |
|
|||
|
|
| 纯文本 | #adb5bd (灰) |
|
|||
|
|
|
|||
|
|
### 主界面布局
|
|||
|
|
```
|
|||
|
|
┌──────────┬─────────────────────────────────────────┐
|
|||
|
|
│ 侧边栏 │ 主内容区 │
|
|||
|
|
│ │ ┌─────────────────────────────────┐ │
|
|||
|
|
│ Logo │ │ 卡片网格展示 │ │
|
|||
|
|
│ ─────── │ │ (图片预览+分类标签+内容摘要) │ │
|
|||
|
|
│ 全部 │ └─────────────────────────────────┘ │
|
|||
|
|
│ 待办 │ │
|
|||
|
|
│ 笔记 │ [📷 截图] [➕ 新建] │
|
|||
|
|
│ 灵感 │ │
|
|||
|
|
│ 参考资料 │ │
|
|||
|
|
│ 搞笑文案 │ │
|
|||
|
|
│ ─────── │ │
|
|||
|
|
│ 批量上传 │ │
|
|||
|
|
│ 设置 │ │
|
|||
|
|
└──────────┴─────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 批量上传页面
|
|||
|
|
```
|
|||
|
|
┌─────────────────────────────────────────────────────────┐
|
|||
|
|
│ 批量上传 [清空] [开始处理] │
|
|||
|
|
├────────────────┬────────────────────────────────────┤
|
|||
|
|
│ │ 📷 拖放区 │
|
|||
|
|
│ 图片列表 │ 点击选择或拖放图片到这里 │
|
|||
|
|
│ │ 支持 PNG, JPG, WEBP │
|
|||
|
|
│ □ [缩略图] │ │
|
|||
|
|
│ 文件名 │ │
|
|||
|
|
│ 2.3 MB │ │
|
|||
|
|
│ [移除] │ │
|
|||
|
|
└────────────────┴────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 详情弹窗
|
|||
|
|
```
|
|||
|
|
┌────────────────────────────────────────┐
|
|||
|
|
│ 详情 [✕] │
|
|||
|
|
├────────────────────────────────────────┤
|
|||
|
|
│ ┌──────────────────────────────┐ │
|
|||
|
|
│ │ 原图预览 │ │
|
|||
|
|
│ └──────────────────────────────┘ │
|
|||
|
|
│ ┌──────────────────────────────┐ │
|
|||
|
|
│ │ Markdown 结果 │ │
|
|||
|
|
│ │ ## 待办事项 │ │
|
|||
|
|
│ │ - [ ] 完成界面设计 │ │
|
|||
|
|
│ │ - [ ] 编写 API 文档 │ │
|
|||
|
|
│ └──────────────────────────────┘ │
|
|||
|
|
│ │
|
|||
|
|
│ [关闭] [📋 复制 Markdown] │
|
|||
|
|
└────────────────────────────────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 数据模型
|
|||
|
|
|
|||
|
|
### records 表
|
|||
|
|
| 字段 | 类型 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| id | INTEGER | 主键 |
|
|||
|
|
| image_path | TEXT | 图片存储路径 |
|
|||
|
|
| ocr_text | TEXT | OCR识别结果 |
|
|||
|
|
| category | TEXT | 分类类型 |
|
|||
|
|
| ai_result | TEXT | AI生成的Markdown |
|
|||
|
|
| tags | TEXT | 标签(JSON数组) |
|
|||
|
|
| notes | TEXT | 用户备注 |
|
|||
|
|
| created_at | TIMESTAMP | 创建时间 |
|
|||
|
|
| updated_at | TIMESTAMP | 更新时间 |
|
|||
|
|
|
|||
|
|
## 技术栈
|
|||
|
|
|
|||
|
|
- **GUI框架**: PyQt6
|
|||
|
|
- **OCR**: PaddleOCR(本地)+ API接口(云端)
|
|||
|
|
- **数据库**: SQLite (sqlalchemy)
|
|||
|
|
- **AI调用**: OpenAI SDK / requests
|
|||
|
|
- **配置管理**: YAML/JSON
|
|||
|
|
- **打包**: PyInstaller
|
|||
|
|
|
|||
|
|
## 开发优先级
|
|||
|
|
|
|||
|
|
1. **P0**: 基础框架 + 本地OCR + 简单AI分类
|
|||
|
|
2. **P1**: 批量上传 + 完整分类 + 云端OCR支持
|
|||
|
|
3. **P2**: 云存储同步 + 高级配置
|
|||
|
|
4. **P3**: 多用户隔离 + 导入导出
|