- 简化项目定位:从智能工具转为极简截图上传工具 - 移除重型依赖: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>
5.0 KiB
5.0 KiB
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 |
| 启动速度 | 较慢 | 极快 |
| 可选性 | 难以做成可选 | 易于做成可选插件 |
使用示例:
from rapidocr import RapidOCR
engine = RapidOCR()
result = engine("screenshot.png")
print(result[1]) # 识别的文本
ShareX - 成功的上传工具参考
核心特点:
- 截图 + 编辑 + 上传 一体化
- 支持多种上传目标(自建服务器、云存储)
- 可自定义工作流
- 快捷键优先
可借鉴的设计:
- 简洁的配置界面
- 上传历史记录
- 自定义上传目标
简化后的技术栈
核心依赖(必须)
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 # 用户配置
简化配置
# 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 - 核心功能
- 全局快捷键截图
- 区域选择截图
- 图片上传到服务器
- 简单的历史记录
- 复制链接到剪贴板
P1 - 增强功能
- 批量上传
- 自定义上传目标
- 截图编辑(简单标注)
- 分类管理
P2 - 可选插件
- RapidOCR 集成
- 云端 AI 分类
- 更多上传服务
实现计划
第一阶段:核心功能(1-2周)
- 简化项目结构,移除不必要依赖
- 实现基础截图功能
- 实现简单上传功能
- 实现 SQLite 存储
- 简洁的主窗口
第二阶段:增强功能(1周)
- 批量上传
- 上传历史管理
- 分类浏览
第三阶段:可选插件(按需)
- RapidOCR 插件
- 云端服务集成
依赖对比
当前项目依赖
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
总结
核心变化
- 定位变化:从"智能截图工具"变为"截图上传工具"
- 功能简化:OCR 和 AI 变为可选插件
- 依赖精简:移除所有重型 ML 库
- 架构简化:去除 ORM 和复杂配置
目标
一个开箱即用的轻量级截图上传工具:
- 安装简单(
pip install) - 启动快速
- 配置简洁
- 功能专注
更新时间:2025年 版本:v2.0 - 简化版