Files
SnapAndAnaly/README.md
T
congsh 5c028d7952 Initial commit: snapAna 截图智能整理工具
包含 FastAPI 后端、React 前端、队列/OCR/标签/待办等完整功能。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 15:45:50 +08:00

3.6 KiB
Raw Blame History

snapAna · 截图智能整理

让 AI 帮你认识每一张截图。本地运行的 Web 应用:自动监听截图文件夹,提取文字、识别内容、给出标题/摘要/标签/待办,按时间和分类整理成可筛选、可随机展示的卡片库。

特性

  • 监听一个或多个文件夹,新截图自动入库(含 OneDrive/同步盘的轮询兜底)
  • 哈希去重,文件重命名/移动只更新路径
  • 可插拔 ProviderTesseract / PaddleOCR / HTTP OCR / 视觉模型识文 + OpenAI 兼容视觉 AIOllama / GLM / MiniMax / OpenAI…)
  • 文字识别方式可选:传统 OCR、视觉 AI、混合(OCR 失败自动视觉识文)
  • 单张图同时拿到结构化结果:标题 + 摘要 + 分类 + 标签 + 待办 + 建议
  • SQLite + FTS5 全文搜索(OCR 文本 / AI 摘要 / AI 标题)
  • 分类色块、标签云、收藏、日期范围、状态筛选;卡片网格虚拟滚动
  • 随机展示页 + 首页「每日回顾」
  • 待办清单:AI 自动抽取「待看 / 待读 / 待办」,可逐条标记完成
  • 敏感目录黑名单:勾选后该目录内的截图不会上传云端 VLM

目录结构

snapAna/
├── backend/         # FastAPI + SQLite + watchdog
│   ├── app/         # 应用代码
│   ├── run.py       # 开发入口
│   └── requirements.txt
├── frontend/        # Vite + React + Tailwind
│   └── src/
├── start-dev.ps1    # 一键启动脚本(Windows
└── PROGRESS.md      # 进度文档

快速开始

一键启动(Windows PowerShell

# 在仓库根目录
.\start-dev.ps1                # 首次会自动建 venv + 安装依赖
# 或显式重新装依赖
.\start-dev.ps1 -InstallDeps

启动后访问:

手动启动

# 后端
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python run.py
# 前端(另开一个终端)
cd frontend
npm install
npm run dev

配置 AI Provider

进入「设置」页:

  • 文字识别方式:传统 OCR / 视觉 AI 识文 / 混合(推荐)
  • OCR 引擎tesseract(本地)、paddleocr(需 pip install paddleocr)、http(自定义 API)、vision(视觉模型纯识文)
  • 视觉 AI 模型:选 openai_compat,填入:
    模型 Base URL Model 示例
    本地 Ollama http://localhost:11434/v1 qwen2.5vl:7b
    OpenAI https://api.openai.com/v1 gpt-4o-mini
    智谱 GLM https://open.bigmodel.cn/api/paas/v4 glm-4v-flash
    MiniMax https://api.minimaxi.com/v1 MiniMax-VL-01
    OpenRouter https://openrouter.ai/api/v1 qwen/qwen2.5-vl-72b-instruct

保存后回到「设置」→「监听目录」,添加一个截图文件夹,系统会自动扫描并入库;右侧 worker 会按配置并发分析(默认并发数 2,可通过 .env 调整)。

数据与隐私

  • 所有数据存在 backend/.data/snapana.dbSQLite+ thumbs/(缩略图缓存)
  • 默认绑定 127.0.0.1,仅本机访问
  • 标记为「敏感目录」的截图不会上传到云端 VLM;如果两个 Provider 都是本地,则永远离线
  • 上传 VLM 之前会自动压缩到长边 1280 像素以节省成本/时延

开发提示

  • 前端通过 Vite 反向代理 /api/*127.0.0.1:8765
  • 队列 / 监听器在 FastAPI lifespan 内启动,热重载会自动复用
  • SQLAlchemy 模型与 FTS5 触发器在首次启动时由 init_db() 创建,无需额外迁移命令