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:
257
docs/需求分析报告_v2.md
Normal file
257
docs/需求分析报告_v2.md
Normal 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 - 简化版*
|
||||
Reference in New Issue
Block a user