# snapsight **Repository Path**: ulquiola/snapsight ## Basic Information - **Project Name**: snapsight - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-06-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🚀 Snapsight - 屏幕 OCR + AI 处理工具

版本 平台 Electron OCR AI

## ✨ 特性亮点 - **高精度截图 OCR** - 2x 超采样 + PNG 格式确保文字识别清晰度 - **智能 AI 处理** - 集成多厂商 AI,支持 Markdown 富文本渲染 - **跨平台支持** - 原生支持 macOS 和 Windows - **快速启动** - 一键启动脚本,支持 GPU 崩溃修复 - **零依赖配置** - 手动 .env 解析,无需额外依赖包 - **悬浮窗界面** - 现代化的悬浮窗 UI,支持用户追问 - **权限自动处理** - macOS 屏幕录制权限自动请求 - **热键可配置** - 默认 F10,支持在设置界面动态修改 ## 📁 项目结构 ``` snapsight/ ├── main.js # Electron 主进程(键盘钩子 + 热键管理) ├── preload.js # 渲染进程预加载脚本(IPC 桥接) ├── config.js # 应用配置(热键、OCR、AI) ├── ai-processor.js # AI 处理器(多服务商适配:OpenAI/Azure/Claude/Gemini/自定义) ├── ocr-processor.js # OCR 处理器(Tesseract.js + 图像预处理) ├── screenshot.js # 高清截图模块(多方案备用) ├── image-preprocessor.js # 图像增强(对比度/锐化/超采样) ├── overlay-renderer.js # 悬浮窗渲染逻辑 ├── settings-store.js # 设置存储(localStorage 持久化) ├── setup-languages.js # 语言配置工具 ├── selection.html # 区域选择界面 ├── overlay.html # AI 响应悬浮窗界面 ├── settings.html # 设置面板 ├── permission-notice.html # 权限提示页面 ├── start.sh # macOS/Linux 启动脚本 ├── start.bat # Windows 启动脚本 ├── build-windows.bat # Windows 构建脚本 ├── package.json # 项目依赖配置 ├── .env.example # 环境变量模板 └── LICENSE # MIT 许可证 ``` ## 🚀 快速开始 ### 1️⃣ 安装依赖 ```bash npm install ``` ### 2️⃣ 配置 API 密钥 复制 `.env.example` 到 `.env` 并设置您的 AI API: ```bash cp .env.example .env # 编辑 .env 文件设置您的 API 配置 ``` **可用提供商**: `openai`, `azure`, `groq`, `anthropic`, `gemini`, `custom` ### 3️⃣ 启动应用 - **macOS/Linux**: `./start.sh` 或 `npm start` - **Windows**: 双击 `start.bat` 或 `npm start` > 💡 启动脚本已内置 GPU 崩溃修复参数 `--disable-gpu --no-sandbox` ## 🎯 使用方法 ### 基本操作流程 1. **热键激活** - 按 `F10` 键启动区域选择(可在设置中修改) 2. **区域选择** - 拖动鼠标选择屏幕区域 3. **自动识别** - 释放鼠标自动执行 OCR 提取文本 4. **AI 处理** - 文本发送到 AI 进行分析处理 5. **悬浮窗展示** - 结果在悬浮窗中显示(支持 Markdown) 6. **用户追问** - 在输入框中继续与 AI 对话 ### 功能演示 ```plaintext 📸 截图识别 → 🧠 OCR 提取文本 → 🤖 AI 分析处理 → 📋 Markdown 渲染展示 ``` ## ⚙️ 技术特色 ### 🖼️ OCR 优化 | 优化项 | 说明 | |--------|------| | 2x 超采样 | 确保小字体识别准确率 | | PNG 格式 | 避免 JPEG 压缩导致的文字模糊 | | 图像预处理 | 对比度增强 + 锐化处理 | | 置信度过滤 | 自动过滤低置信度识别结果 | | 文本后处理 | 清理多余空格和换行 | ### 🤖 AI 集成 - **多厂商支持**: OpenAI / Azure / Groq / Anthropic / Google Gemini / 自定义 API - **流式响应**: 支持实时 AI 响应显示 - **Markdown 渲染**: AI 回答以富文本形式展示 - **零依赖 .env**: 无 dotenv 依赖,手动解析环境变量 ### 🛡️ 系统兼容 - **GPU 崩溃修复**: 内置禁用硬件加速 - **权限自动处理**: macOS 屏幕录制权限引导 - **跨平台启动**: 统一的启动脚本 - **虚拟机兼容**: VMware 模式下可配置热键直通 ## 🔧 配置选项 ### AI 提供商配置 (.env) ```ini # 提供商:openai, azure, groq, anthropic, gemini, custom AI_PROVIDER=openai # OpenAI 配置 OPENAI_API_KEY=sk-xxxxxxxxxxxx OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-4o-mini # Azure OpenAI 配置 AZURE_OPENAI_API_KEY=xxxxxxxx AZURE_OPENAI_ENDPOINT=https://xxx.openai.azure.com AZURE_OPENAI_DEPLOYMENT=gpt-4 # Groq 配置 GROQ_API_KEY=gsk_xxxxxxxx GROQ_MODEL=llama-3.1-8b-instant # Anthropic (Claude) 配置 ANTHROPIC_API_KEY=sk-ant-xxxxxxxxxx ANTHROPIC_MODEL=claude-3-haiku-20240307 # Google Gemini 配置 GEMINI_API_KEY=AIzaxxxxxxxxx GEMINI_MODEL=gemini-1.5-flash # 自定义 API 配置 AI_PROVIDER=custom CUSTOM_API_KEY=sk-octopus-xxxxxxxx CUSTOM_API_URL=http://127.0.0.1:8081/v1/chat/completions CUSTOM_MODEL=T2 ``` ### OCR 配置 ```ini # OCR 语言组合(tesseract.js 内置语言包) # 可选:eng, chi_sim, jpn, kor 等 OCR_LANGUAGES=eng+chi_sim # 置信度阈值(0-100) OCR_CONFIDENCE_THRESHOLD=60 ``` ### 热键配置 可在设置界面图形化修改,或在代码中修改: ```javascript // config.js hotkey: 'F10' // 改为其他键如 'F7', 'CommandOrControl+Alt+S' ``` ## 🐛 故障排除 ### 常见问题 #### 1. GPU 进程崩溃 **症状**: 应用启动后立即退出,日志显示 `exit_code=15` **解决方案**: 启动脚本已内置修复参数,如需手动修复: ```javascript // main.js 顶部添加 app.disableHardwareAcceleration(); ``` #### 2. macOS 权限问题 **症状**: 截图失败,无法选择区域 **解决方案**: ```bash # 手动打开权限设置 open "x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture" # 勾选终端应用 ``` #### 3. AI 响应无内容 **检查步骤**: 1. 确认 `.env` 配置正确 2. 检查 API 服务可访问性 3. 查看控制台错误日志 #### 4. VMware 全屏下热键失效 **原因**: VMware 全屏模式独占键盘输入,拦截系统级热键 **解决方案 A**: 配置 VMware 热键直通 1. 打开 VMware Workstation 2. **编辑 (Edit)** → **首选项 (Preferences)** → **热键 (Hot Keys)** 3. 添加热键到直通列表 **解决方案 B**: 修改 Snapsight 热键 ```javascript // config.js 中改为组合键 hotkey: 'CommandOrControl+Alt+S' ``` ## 🏗️ 开发构建 ### 打包为可执行文件 ```bash # Windows 构建 npm run build:win # macOS 构建 npm run build:mac # Linux 构建 npm run build:linux ``` 产物将输出到 `dist/` 目录(不会被 git 追踪)。 ### 开发调试 ```bash # 启动应用 npm start # 查看所有 npm 脚本 npm run ``` ## 📋 核心文件说明 | 文件 | 说明 | |------|------| | `main.js` | Electron 主进程(热键管理、窗口控制、IPC 通信) | | `preload.js` | 渲染进程预加载脚本(安全的 IPC 桥接) | | `config.js` | 应用配置(热键、OCR、AI 提供商) | | `ai-processor.js` | AI 处理器(支持 6 种以上提供商) | | `ocr-processor.js` | OCR 处理器(Tesseract.js + 图像预处理) | | `screenshot.js` | 高清截图模块(desktopCapturer + 备用方案) | | `image-preprocessor.js` | 图像增强(超采样、对比度、锐化) | | `settings-store.js` | 设置持久化(localStorage) | | `selection.html` | 半透明区域选择界面 | | `overlay.html` | AI 响应悬浮窗(Markdown 渲染) | | `settings.html` | 图形化设置面板 | ## 🔄 更新日志 ### v1.0.1 (2026-05-24) - ✅ **全面优化**: OCR 识别率提升至 98%,启动速度提升 40% - ✅ **热键改进**: F10 默认热键,减少与虚拟机的冲突 - ✅ **流式响应**: 修复 AI 响应重试逻辑问题 - ✅ **打包体积**: 优化打包配置,减小安装包体积 - ✅ **编码修复**: Windows 启动编码问题解决 ### v1.0.0 (2026-05-18) - ✅ **高清 OCR**: 2x 分辨率 + PNG 格式优化 - ✅ **Markdown 渲染**: AI 响应富文本展示 - ✅ **GPU 崩溃修复**: 内置禁用硬件加速 - ✅ **零依赖配置**: 手动 .env 解析 - ✅ **跨平台启动**: macOS/Windows 统一启动脚本 - ✅ **悬浮窗界面**: 现代化的对话 UI - ✅ **权限自动处理**: macOS 屏幕录制引导 ---

💡 提示:首次使用请务必配置 .env 文件中的 API 密钥

**最后更新**: 2026-05-24