# 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**: 多用户隔离 + 导入导出