Files
cutThenThink/docs/需求分析报告_v2.md
congsh e853161975 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>
2026-02-12 15:50:51 +08:00

258 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 - 简化版*