5c028d7952
包含 FastAPI 后端、React 前端、队列/OCR/标签/待办等完整功能。 Co-authored-by: Cursor <cursoragent@cursor.com>
3.6 KiB
3.6 KiB
snapAna · 截图智能整理
让 AI 帮你认识每一张截图。本地运行的 Web 应用:自动监听截图文件夹,提取文字、识别内容、给出标题/摘要/标签/待办,按时间和分类整理成可筛选、可随机展示的卡片库。
特性
- 监听一个或多个文件夹,新截图自动入库(含 OneDrive/同步盘的轮询兜底)
- 哈希去重,文件重命名/移动只更新路径
- 可插拔 Provider:Tesseract / PaddleOCR / HTTP OCR / 视觉模型识文 + OpenAI 兼容视觉 AI(Ollama / 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/v1qwen2.5vl:7bOpenAI https://api.openai.com/v1gpt-4o-mini智谱 GLM https://open.bigmodel.cn/api/paas/v4glm-4v-flashMiniMax https://api.minimaxi.com/v1MiniMax-VL-01OpenRouter https://openrouter.ai/api/v1qwen/qwen2.5-vl-72b-instruct
保存后回到「设置」→「监听目录」,添加一个截图文件夹,系统会自动扫描并入库;右侧 worker 会按配置并发分析(默认并发数 2,可通过 .env 调整)。
数据与隐私
- 所有数据存在
backend/.data/:snapana.db(SQLite)+thumbs/(缩略图缓存) - 默认绑定
127.0.0.1,仅本机访问 - 标记为「敏感目录」的截图不会上传到云端 VLM;如果两个 Provider 都是本地,则永远离线
- 上传 VLM 之前会自动压缩到长边 1280 像素以节省成本/时延
开发提示
- 前端通过 Vite 反向代理
/api/*到127.0.0.1:8765 - 队列 / 监听器在 FastAPI lifespan 内启动,热重载会自动复用
- SQLAlchemy 模型与 FTS5 触发器在首次启动时由
init_db()创建,无需额外迁移命令