# CutThenThink 需求分析报告 ## 项目现状评估 ### 原始需求回顾 **CutThenThink** 应当是一个**轻量级截图工具**,核心功能包括: 1. **截图功能** - 支持多种截图方式 2. **云端存储** - 数据存储在云端 3. **OCR 扫描** - 文字识别,云端部署 4. **AI 分类解析** - 智能分类和内容生成,服务提供商 API 或本地 LLM ### 当前实现状态 #### ✅ 已完成的功能模块 | 模块 | 状态 | 说明 | |------|------|------| | 数据模型 | 完成 | SQLAlchemy Record 模型 | | 配置管理 | 完成 | 完善的 Settings 配置系统 | | OCR 模块 | 部分完成 | 仅支持云端 API,但无本地降级方案 | | AI 模块 | 完成 | 支持 OpenAI/Claude/通义/Ollama | | 存储模块 | 部分完成 | 仅有 JSON 文件存储,无云端存储 | | 处理流程 | 完成 | OCR→AI→Storage 流程整合 | | GUI 框架 | 部分完成 | PyQt6 主窗口和部分组件 | #### ❌ 存在的问题 ### 问题一:架构过度复杂 **设计文档中的架构**: ``` 多用户系统 → 云端 API → 复杂配置 ``` **实际需求**: ``` 轻量级工具 → 简单配置 → 本地使用为主 ``` **具体表现**: 1. 过度的配置系统(AI/OCR/云端/界面/高级 5 大类配置) 2. 支持多种云存储(S3/OSS/COS/MinIO)但无实际实现 3. 多用户隔离设计(实际是单用户工具) ### 问题二:OCR 功能不完整 **设计文档承诺**: - 内置轻量 OCR(PaddleOCR 本地运行) - 云端 OCR API(百度/腾讯/阿里云) - 自动降级机制 **当前实现**: - 仅支持云端 API 调用 - 无任何本地 OCR 实现 - 无任何第三方 OCR 服务集成 - **OCR 功能实际上无法使用** ### 问题三:云端存储未实现 **设计文档承诺**: - WebDAV 支持 - 阿里云 OSS 支持 - AWS S3 支持 - 同步状态显示 **当前实现**: - 仅有简单的 JSON 文件存储 - 无任何云端存储实现 - 云存储配置类存在但无实际功能 ### 问题四:AI 分类功能依赖外部服务 **现状**: - 完全依赖第三方 API(OpenAI/Claude/通义千问) - 虽然支持 Ollama 本地模型,但需要用户自行部署 - 无离线工作能力 **问题**: - 需要配置 API Key - 产生额外费用 - 网络依赖 ### 问题五:项目定位模糊 | 设计文档 | 实际需求 | 现状 | |---------|---------|------| | 多用户系统 | 单人工具 | 架构过于复杂 | | 云端优先 | 本地为主 | 云功能未实现 | | 智能分类器 | 简单分类工具 | AI 调用复杂 | | 完整应用 | 轻量工具 | 依赖过多 | --- ## 重新定义的需求 ### 核心定位 **CutThenThink** 是一个**轻量级个人截图管理工具**,专注于: 1. 快速截图 2. 文字识别 3. 智能分类 4. 本地存储为主,可选云端同步 ### 最小可行产品(MVP)功能 #### Phase 1: 核心功能(必须) 1. **截图功能** - 全局快捷键截图 - 区域选择截图 - 剪贴板图片检测 2. **OCR 识别** - 本地 OCR 引擎(PaddleOCR 轻量版) - 云端 OCR API 作为可选增强 3. **AI 分类** - 简单规则分类(基于关键词) - AI API 分类作为可选功能 4. **本地存储** - SQLite 本地数据库 - 图片文件存储 - 基础 CRUD 操作 5. **简单 GUI** - 主窗口 - 截图预览 - 历史记录浏览 #### Phase 2: 增强功能(可选) 1. **云端同步** - 简单的 WebDAV 同步 - 或单个云服务商集成 2. **高级 AI** - OpenAI/Claude API 集成 - 本地 Ollama 支持 3. **批量操作** - 批量导入图片 - 批量导出 #### Phase 3: 优化功能(未来) 1. 图片标注/编辑 2. 高级搜索 3. 统计报表 4. 多设备同步 --- ## 技术栈简化建议 ### 当前技术栈问题 | 组件 | 当前 | 问题 | |------|------|------| | GUI | PyQt6 | 功能过多,配置复杂 | | 数据库 | SQLAlchemy | 过度工程 | | OCR | 云端 API | 无法使用 | | AI | 多个 API | 配置复杂 | ### 建议的技术栈 | 组件 | 建议 | 理由 | |------|------|------| | GUI | PyQt6 (简化) | 保持不变,但简化功能 | | 数据库 | SQLite 原生 | 去掉 ORM,简化代码 | | OCR | PaddleOCR 轻量版 | 本地运行,不依赖网络 | | AI | 规则 + 可选 API | 基础功能离线可用 | | 存储 | 文件系统 | 简单直接 | --- ## 代码重构建议 ### 1. 简化配置系统 **当前**:5 大类配置(AI/OCR/云端/界面/高级) **建议**: ```yaml # 简化配置文件 config.yaml ocr: engine: local # local 或 cloud ai: enabled: false # 默认关闭 provider: "" # 可选配置 storage: type: local # local 或 webdav hotkeys: screenshot: Ctrl+Shift+A ``` ### 2. 实现本地 OCR ```python # 简化的 OCR 模块 from paddleocr import PaddleOCR class LocalOCR: def __init__(self): self.ocr = PaddleOCR(use_angle_cls=True, lang='ch') def recognize(self, image_path): result = self.ocr.ocr(image_path, cls=True) return self._parse_result(result) ``` ### 3. 简化数据模型 ```python # 简化的数据库模型 import sqlite3 class RecordDB: def __init__(self, path): self.conn = sqlite3.connect(path) self._init_table() def add(self, image_path, ocr_text, category): # 简单的插入操作 pass ``` ### 4. 规则优先的 AI 分类 ```python # 简单规则分类 class RuleClassifier: RULES = { 'TODO': ['待办', '任务', '完成', 'TODO'], 'NOTE': ['笔记', '记录', '会议'], # ... } def classify(self, text): for category, keywords in self.RULES.items(): if any(kw in text for kw in keywords): return category return 'TEXT' ``` --- ## 开发优先级 ### P0 (立即修复) 1. **实现本地 OCR** - 这是核心功能,必须可用 2. **简化配置系统** - 降低使用门槛 3. **基础 GUI 完善** - 确保核心流程可用 ### P1 (短期完成) 1. 实现规则分类系统 2. 完善本地存储功能 3. 添加批量操作支持 ### P2 (长期优化) 1. 云端同步功能 2. AI API 集成 3. 高级编辑功能 --- ## 总结 ### 核心问题 CutThenThink 项目的主要问题在于**过度设计**: - 功能过多但实现不足 - 架构复杂但缺少核心 - 配置繁重但难以使用 ### 解决方向 1. **回归本质**:轻量级截图工具 2. **核心优先**:OCR + 分类 + 存储 3. **本地为主**:确保离线可用 4. **渐进增强**:从简单到复杂 ### 下一步行动 1. 确认 MVP 功能范围 2. 实现 PaddleOCR 本地集成 3. 简化配置系统 4. 完善基础 GUI 流程 5. 测试端到端功能 --- *报告生成时间:2025年* *项目路径:CutThenThink*