项目初始化 - 创建完整项目结构(src/, data/, docs/, examples/, tests/) - 配置requirements.txt依赖 - 创建.gitignore P0基础框架 - 数据库模型:Record模型,6种分类类型 - 配置管理:YAML配置,支持AI/OCR/云存储/UI配置 - OCR模块:PaddleOCR本地识别,支持云端扩展 - AI模块:支持OpenAI/Claude/通义/Ollama,6种分类 - 存储模块:完整CRUD,搜索,统计,导入导出 - 主窗口框架:侧边栏导航,米白配色方案 - 图片处理:截图/剪贴板/文件选择/图片预览 - 处理流程整合:OCR→AI→存储串联,Markdown展示,剪贴板复制 - 分类浏览:卡片网格展示,分类筛选,搜索,详情查看 技术栈 - PyQt6 + SQLAlchemy + PaddleOCR + OpenAI/Claude SDK - 共47个Python文件,4000+行代码 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8.1 KiB
8.1 KiB
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
开发优先级
- P0: 基础框架 + 本地OCR + 简单AI分类
- P1: 批量上传 + 完整分类 + 云端OCR支持
- P2: 云存储同步 + 高级配置
- P3: 多用户隔离 + 导入导出