refactor: 重构为极简截图上传工具

- 简化项目定位:从智能工具转为极简截图上传工具
- 移除重型依赖: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>
This commit is contained in:
congsh
2026-02-12 15:50:51 +08:00
parent a5e50876a0
commit e853161975
37 changed files with 2109 additions and 9266 deletions

302
docs/需求分析报告.md Normal file
View File

@@ -0,0 +1,302 @@
# 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 功能不完整
**设计文档承诺**
- 内置轻量 OCRPaddleOCR 本地运行)
- 云端 OCR API百度/腾讯/阿里云)
- 自动降级机制
**当前实现**
- 仅支持云端 API 调用
- 无任何本地 OCR 实现
- 无任何第三方 OCR 服务集成
- **OCR 功能实际上无法使用**
### 问题三:云端存储未实现
**设计文档承诺**
- WebDAV 支持
- 阿里云 OSS 支持
- AWS S3 支持
- 同步状态显示
**当前实现**
- 仅有简单的 JSON 文件存储
- 无任何云端存储实现
- 云存储配置类存在但无实际功能
### 问题四AI 分类功能依赖外部服务
**现状**
- 完全依赖第三方 APIOpenAI/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*