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

View File

@@ -0,0 +1,257 @@
# CutThenThink 需求分析报告 v2.0
## 项目重新定位
**CutThenThink** 是一个**极简轻量级截图上传工具**
### 核心功能(最小化)
| 功能 | 说明 |
|------|------|
| 截图 | 全屏、区域、窗口截图 |
| 上传 | 上传到配置的云端服务 |
| 批量上传 | 选择多张图片批量上传 |
| 分类查看 | 按分类浏览历史记录 |
### 明确移除的功能
- ❌ 移除 PaddleOCR 本地模型(太重)
- ❌ 移除 torch/torchvision 依赖
- ❌ 移除 transformers 依赖
- ❌ 移除复杂的 AI 分类系统
- ❌ 移除多用户系统设计
### 可选功能
- 🔄 **OCR**:可选插件,使用 RapidOCR轻量级 ONNX
- 🔄 **AI 分类**:可选云端 API不作为核心依赖
---
## 参考项目调研
### RapidOCR - 轻量级 OCR 方案
**为什么选择 RapidOCR**
| 对比项 | PaddleOCR | RapidOCR |
|--------|-----------|-----------|
| 安装大小 | ~200MB+ | ~10MB |
| 依赖复杂度 | 高paddlepaddle | 低onnxruntime |
| 安装命令 | `pip install paddleocr paddlepaddle` | `pip install rapidocr onnxruntime` |
| 启动速度 | 较慢 | 极快 |
| 可选性 | 难以做成可选 | 易于做成可选插件 |
**使用示例**
```python
from rapidocr import RapidOCR
engine = RapidOCR()
result = engine("screenshot.png")
print(result[1]) # 识别的文本
```
### ShareX - 成功的上传工具参考
**核心特点**
- 截图 + 编辑 + 上传 一体化
- 支持多种上传目标(自建服务器、云存储)
- 可自定义工作流
- 快捷键优先
**可借鉴的设计**
1. 简洁的配置界面
2. 上传历史记录
3. 自定义上传目标
---
## 简化后的技术栈
### 核心依赖(必须)
```
PyQt6 # GUI
requests # 上传请求
Pillow # 图片处理
pyperclip # 剪贴板
```
### 可选依赖(插件化)
```
rapidocr # OCR可选安装
onnxruntime # OCR 运行时(可选)
```
### 完全移除
```
paddleocr # 移除
paddlepaddle # 移除
torch # 移除
transformers # 移除
openai # 移除(可用扩展支持)
anthropic # 移除(可用扩展支持)
SQLAlchemy # 移除(用原生 sqlite3
```
---
## 简化的项目结构
```
CutThenThink/
├── src/
│ ├── main.py # 入口
│ ├── core/
│ │ ├── screenshot.py # 截图功能
│ │ ├── uploader.py # 上传功能
│ │ └── database.py # 简单 SQLite
│ ├── gui/
│ │ ├── main_window.py # 主窗口
│ │ ├── screenshot_widget.py # 截图组件
│ │ └── upload_widget.py # 上传组件
│ ├── plugins/ # 可选插件
│ │ └── ocr.py # OCR 插件(可选)
│ └── config.py # 简化配置
├── data/
│ └── screenshots/ # 截图存储
├── requirements.txt # 核心依赖
├── requirements-ocr.txt # 可选 OCR
└── config.yaml # 用户配置
```
---
## 简化配置
```yaml
# config.yaml - 最小配置
app:
theme: dark
upload:
# 支持imgur、自建、telegraph、s3等
provider: custom
endpoint: https://your-server.com/upload
api_key: your-key
screenshot:
format: png
save_path: ~/Pictures/Screenshots
hotkeys:
capture: Ctrl+Shift+A
upload: Ctrl+Shift+U
# 可选,如果未安装 rapidocr 则忽略
ocr:
enabled: false
auto_copy: false
```
---
## MVP 功能清单
### P0 - 核心功能
- [x] 全局快捷键截图
- [ ] 区域选择截图
- [ ] 图片上传到服务器
- [ ] 简单的历史记录
- [ ] 复制链接到剪贴板
### P1 - 增强功能
- [ ] 批量上传
- [ ] 自定义上传目标
- [ ] 截图编辑(简单标注)
- [ ] 分类管理
### P2 - 可选插件
- [ ] RapidOCR 集成
- [ ] 云端 AI 分类
- [ ] 更多上传服务
---
## 实现计划
### 第一阶段核心功能1-2周
1. 简化项目结构,移除不必要依赖
2. 实现基础截图功能
3. 实现简单上传功能
4. 实现 SQLite 存储
5. 简洁的主窗口
### 第二阶段增强功能1周
1. 批量上传
2. 上传历史管理
3. 分类浏览
### 第三阶段:可选插件(按需)
1. RapidOCR 插件
2. 云端服务集成
---
## 依赖对比
### 当前项目依赖
```
PyQt6>=6.7.0
SQLAlchemy>=2.0.36
openai>=1.0.0
anthropic>=0.18.0
requests>=2.31.0
pyyaml>=6.0.1
pillow>=10.0.0
pyperclip>=1.8.2
```
### 简化后核心依赖
```
PyQt6>=6.7.0
requests>=2.31.0
pillow>=10.0.0
pyperclip>=1.8.2
```
### 可选 OCR 依赖
```
rapidocr>=1.3.0
onnxruntime>=1.16.0
```
---
## 总结
### 核心变化
1. **定位变化**:从"智能截图工具"变为"截图上传工具"
2. **功能简化**OCR 和 AI 变为可选插件
3. **依赖精简**:移除所有重型 ML 库
4. **架构简化**:去除 ORM 和复杂配置
### 目标
一个**开箱即用**的轻量级截图上传工具:
- 安装简单(`pip install`
- 启动快速
- 配置简洁
- 功能专注
---
*更新时间2025年*
*版本v2.0 - 简化版*