258 lines
5.0 KiB
Markdown
258 lines
5.0 KiB
Markdown
|
|
# 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 - 简化版*
|