Files
cutThenThink/docs/需求分析报告.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

6.7 KiB
Raw Permalink Blame History

CutThenThink 需求分析报告

项目现状评估

原始需求回顾

CutThenThink 应当是一个轻量级截图工具,核心功能包括:

  1. 截图功能 - 支持多种截图方式
  2. 云端存储 - 数据存储在云端
  3. OCR 扫描 - 文字识别,云端部署
  4. AI 分类解析 - 智能分类和内容生成,服务提供商 API 或本地 LLM

当前实现状态

已完成的功能模块

模块 状态 说明
数据模型 完成 SQLAlchemy Record 模型
配置管理 完成 完善的 Settings 配置系统
OCR 模块 部分完成 仅支持云端 API但无本地降级方案
AI 模块 完成 支持 OpenAI/Claude/通义/Ollama
存储模块 部分完成 仅有 JSON 文件存储,无云端存储
处理流程 完成 OCR→AI→Storage 流程整合
GUI 框架 部分完成 PyQt6 主窗口和部分组件

存在的问题

问题一:架构过度复杂

设计文档中的架构

多用户系统 → 云端 API → 复杂配置

实际需求

轻量级工具 → 简单配置 → 本地使用为主

具体表现

  1. 过度的配置系统AI/OCR/云端/界面/高级 5 大类配置)
  2. 支持多种云存储S3/OSS/COS/MinIO但无实际实现
  3. 多用户隔离设计(实际是单用户工具)

问题二OCR 功能不完整

设计文档承诺

  • 内置轻量 OCRPaddleOCR 本地运行)
  • 云端 OCR API百度/腾讯/阿里云)
  • 自动降级机制

当前实现

  • 仅支持云端 API 调用
  • 无任何本地 OCR 实现
  • 无任何第三方 OCR 服务集成
  • OCR 功能实际上无法使用

问题三:云端存储未实现

设计文档承诺

  • WebDAV 支持
  • 阿里云 OSS 支持
  • AWS S3 支持
  • 同步状态显示

当前实现

  • 仅有简单的 JSON 文件存储
  • 无任何云端存储实现
  • 云存储配置类存在但无实际功能

问题四AI 分类功能依赖外部服务

现状

  • 完全依赖第三方 APIOpenAI/Claude/通义千问)
  • 虽然支持 Ollama 本地模型,但需要用户自行部署
  • 无离线工作能力

问题

  • 需要配置 API Key
  • 产生额外费用
  • 网络依赖

问题五:项目定位模糊

设计文档 实际需求 现状
多用户系统 单人工具 架构过于复杂
云端优先 本地为主 云功能未实现
智能分类器 简单分类工具 AI 调用复杂
完整应用 轻量工具 依赖过多

重新定义的需求

核心定位

CutThenThink 是一个轻量级个人截图管理工具,专注于:

  1. 快速截图
  2. 文字识别
  3. 智能分类
  4. 本地存储为主,可选云端同步

最小可行产品MVP功能

Phase 1: 核心功能(必须)

  1. 截图功能

    • 全局快捷键截图
    • 区域选择截图
    • 剪贴板图片检测
  2. OCR 识别

    • 本地 OCR 引擎PaddleOCR 轻量版)
    • 云端 OCR API 作为可选增强
  3. AI 分类

    • 简单规则分类(基于关键词)
    • AI API 分类作为可选功能
  4. 本地存储

    • SQLite 本地数据库
    • 图片文件存储
    • 基础 CRUD 操作
  5. 简单 GUI

    • 主窗口
    • 截图预览
    • 历史记录浏览

Phase 2: 增强功能(可选)

  1. 云端同步

    • 简单的 WebDAV 同步
    • 或单个云服务商集成
  2. 高级 AI

    • OpenAI/Claude API 集成
    • 本地 Ollama 支持
  3. 批量操作

    • 批量导入图片
    • 批量导出

Phase 3: 优化功能(未来)

  1. 图片标注/编辑
  2. 高级搜索
  3. 统计报表
  4. 多设备同步

技术栈简化建议

当前技术栈问题

组件 当前 问题
GUI PyQt6 功能过多,配置复杂
数据库 SQLAlchemy 过度工程
OCR 云端 API 无法使用
AI 多个 API 配置复杂

建议的技术栈

组件 建议 理由
GUI PyQt6 (简化) 保持不变,但简化功能
数据库 SQLite 原生 去掉 ORM简化代码
OCR PaddleOCR 轻量版 本地运行,不依赖网络
AI 规则 + 可选 API 基础功能离线可用
存储 文件系统 简单直接

代码重构建议

1. 简化配置系统

当前5 大类配置AI/OCR/云端/界面/高级)

建议

# 简化配置文件 config.yaml
ocr:
  engine: local  # local 或 cloud

ai:
  enabled: false  # 默认关闭
  provider: ""   # 可选配置

storage:
  type: local    # local 或 webdav

hotkeys:
  screenshot: Ctrl+Shift+A

2. 实现本地 OCR

# 简化的 OCR 模块
from paddleocr import PaddleOCR

class LocalOCR:
    def __init__(self):
        self.ocr = PaddleOCR(use_angle_cls=True, lang='ch')

    def recognize(self, image_path):
        result = self.ocr.ocr(image_path, cls=True)
        return self._parse_result(result)

3. 简化数据模型

# 简化的数据库模型
import sqlite3

class RecordDB:
    def __init__(self, path):
        self.conn = sqlite3.connect(path)
        self._init_table()

    def add(self, image_path, ocr_text, category):
        # 简单的插入操作
        pass

4. 规则优先的 AI 分类

# 简单规则分类
class RuleClassifier:
    RULES = {
        'TODO': ['待办', '任务', '完成', 'TODO'],
        'NOTE': ['笔记', '记录', '会议'],
        # ...
    }

    def classify(self, text):
        for category, keywords in self.RULES.items():
            if any(kw in text for kw in keywords):
                return category
        return 'TEXT'

开发优先级

P0 (立即修复)

  1. 实现本地 OCR - 这是核心功能,必须可用
  2. 简化配置系统 - 降低使用门槛
  3. 基础 GUI 完善 - 确保核心流程可用

P1 (短期完成)

  1. 实现规则分类系统
  2. 完善本地存储功能
  3. 添加批量操作支持

P2 (长期优化)

  1. 云端同步功能
  2. AI API 集成
  3. 高级编辑功能

总结

核心问题

CutThenThink 项目的主要问题在于过度设计

  • 功能过多但实现不足
  • 架构复杂但缺少核心
  • 配置繁重但难以使用

解决方向

  1. 回归本质:轻量级截图工具
  2. 核心优先OCR + 分类 + 存储
  3. 本地为主:确保离线可用
  4. 渐进增强:从简单到复杂

下一步行动

  1. 确认 MVP 功能范围
  2. 实现 PaddleOCR 本地集成
  3. 简化配置系统
  4. 完善基础 GUI 流程
  5. 测试端到端功能

报告生成时间2025年 项目路径CutThenThink