- 简化项目定位:从智能工具转为极简截图上传工具 - 移除重型依赖:torch、transformers、paddleocr、SQLAlchemy - 新增轻量级核心模块: - config.py: 简化 YAML 配置管理 - database.py: 原生 SQLite 存储 - screenshot.py: 截图功能(全屏/区域) - uploader.py: 云端上传(支持 custom/telegraph/imgur) - plugins/ocr.py: 可选 RapidOCR 插件 - 重写主窗口:专注核心功能,移除复杂 UI - 更新依赖:核心 ~50MB,OCR 可选 - 更新文档:新的 README 和需求分析 v2 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6.7 KiB
6.7 KiB
CutThenThink 需求分析报告
项目现状评估
原始需求回顾
CutThenThink 应当是一个轻量级截图工具,核心功能包括:
- 截图功能 - 支持多种截图方式
- 云端存储 - 数据存储在云端
- OCR 扫描 - 文字识别,云端部署
- AI 分类解析 - 智能分类和内容生成,服务提供商 API 或本地 LLM
当前实现状态
✅ 已完成的功能模块
| 模块 | 状态 | 说明 |
|---|---|---|
| 数据模型 | 完成 | SQLAlchemy Record 模型 |
| 配置管理 | 完成 | 完善的 Settings 配置系统 |
| OCR 模块 | 部分完成 | 仅支持云端 API,但无本地降级方案 |
| AI 模块 | 完成 | 支持 OpenAI/Claude/通义/Ollama |
| 存储模块 | 部分完成 | 仅有 JSON 文件存储,无云端存储 |
| 处理流程 | 完成 | OCR→AI→Storage 流程整合 |
| GUI 框架 | 部分完成 | PyQt6 主窗口和部分组件 |
❌ 存在的问题
问题一:架构过度复杂
设计文档中的架构:
多用户系统 → 云端 API → 复杂配置
实际需求:
轻量级工具 → 简单配置 → 本地使用为主
具体表现:
- 过度的配置系统(AI/OCR/云端/界面/高级 5 大类配置)
- 支持多种云存储(S3/OSS/COS/MinIO)但无实际实现
- 多用户隔离设计(实际是单用户工具)
问题二:OCR 功能不完整
设计文档承诺:
- 内置轻量 OCR(PaddleOCR 本地运行)
- 云端 OCR API(百度/腾讯/阿里云)
- 自动降级机制
当前实现:
- 仅支持云端 API 调用
- 无任何本地 OCR 实现
- 无任何第三方 OCR 服务集成
- OCR 功能实际上无法使用
问题三:云端存储未实现
设计文档承诺:
- WebDAV 支持
- 阿里云 OSS 支持
- AWS S3 支持
- 同步状态显示
当前实现:
- 仅有简单的 JSON 文件存储
- 无任何云端存储实现
- 云存储配置类存在但无实际功能
问题四:AI 分类功能依赖外部服务
现状:
- 完全依赖第三方 API(OpenAI/Claude/通义千问)
- 虽然支持 Ollama 本地模型,但需要用户自行部署
- 无离线工作能力
问题:
- 需要配置 API Key
- 产生额外费用
- 网络依赖
问题五:项目定位模糊
| 设计文档 | 实际需求 | 现状 |
|---|---|---|
| 多用户系统 | 单人工具 | 架构过于复杂 |
| 云端优先 | 本地为主 | 云功能未实现 |
| 智能分类器 | 简单分类工具 | AI 调用复杂 |
| 完整应用 | 轻量工具 | 依赖过多 |
重新定义的需求
核心定位
CutThenThink 是一个轻量级个人截图管理工具,专注于:
- 快速截图
- 文字识别
- 智能分类
- 本地存储为主,可选云端同步
最小可行产品(MVP)功能
Phase 1: 核心功能(必须)
-
截图功能
- 全局快捷键截图
- 区域选择截图
- 剪贴板图片检测
-
OCR 识别
- 本地 OCR 引擎(PaddleOCR 轻量版)
- 云端 OCR API 作为可选增强
-
AI 分类
- 简单规则分类(基于关键词)
- AI API 分类作为可选功能
-
本地存储
- SQLite 本地数据库
- 图片文件存储
- 基础 CRUD 操作
-
简单 GUI
- 主窗口
- 截图预览
- 历史记录浏览
Phase 2: 增强功能(可选)
-
云端同步
- 简单的 WebDAV 同步
- 或单个云服务商集成
-
高级 AI
- OpenAI/Claude API 集成
- 本地 Ollama 支持
-
批量操作
- 批量导入图片
- 批量导出
Phase 3: 优化功能(未来)
- 图片标注/编辑
- 高级搜索
- 统计报表
- 多设备同步
技术栈简化建议
当前技术栈问题
| 组件 | 当前 | 问题 |
|---|---|---|
| GUI | PyQt6 | 功能过多,配置复杂 |
| 数据库 | SQLAlchemy | 过度工程 |
| OCR | 云端 API | 无法使用 |
| AI | 多个 API | 配置复杂 |
建议的技术栈
| 组件 | 建议 | 理由 |
|---|---|---|
| GUI | PyQt6 (简化) | 保持不变,但简化功能 |
| 数据库 | SQLite 原生 | 去掉 ORM,简化代码 |
| OCR | PaddleOCR 轻量版 | 本地运行,不依赖网络 |
| AI | 规则 + 可选 API | 基础功能离线可用 |
| 存储 | 文件系统 | 简单直接 |
代码重构建议
1. 简化配置系统
当前:5 大类配置(AI/OCR/云端/界面/高级)
建议:
# 简化配置文件 config.yaml
ocr:
engine: local # local 或 cloud
ai:
enabled: false # 默认关闭
provider: "" # 可选配置
storage:
type: local # local 或 webdav
hotkeys:
screenshot: Ctrl+Shift+A
2. 实现本地 OCR
# 简化的 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. 简化数据模型
# 简化的数据库模型
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 分类
# 简单规则分类
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 (立即修复)
- 实现本地 OCR - 这是核心功能,必须可用
- 简化配置系统 - 降低使用门槛
- 基础 GUI 完善 - 确保核心流程可用
P1 (短期完成)
- 实现规则分类系统
- 完善本地存储功能
- 添加批量操作支持
P2 (长期优化)
- 云端同步功能
- AI API 集成
- 高级编辑功能
总结
核心问题
CutThenThink 项目的主要问题在于过度设计:
- 功能过多但实现不足
- 架构复杂但缺少核心
- 配置繁重但难以使用
解决方向
- 回归本质:轻量级截图工具
- 核心优先:OCR + 分类 + 存储
- 本地为主:确保离线可用
- 渐进增强:从简单到复杂
下一步行动
- 确认 MVP 功能范围
- 实现 PaddleOCR 本地集成
- 简化配置系统
- 完善基础 GUI 流程
- 测试端到端功能
报告生成时间:2025年 项目路径:CutThenThink