L-mimimi
SnapShot
一款 Windows 截图工具:截图 · 离线 OCR 文字识别 · 桌面置顶钉图,单文件绿色版,双击即用,无需安装、无需联网。
- Stars
- 0
- Language
- C#
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
SnapShot 截图助手
一款 Windows 截图工具:截图 · 离线 OCR 文字识别 · 桌面置顶钉图,单文件绿色版,双击即用,无需安装、无需联网。
功能
| 功能 | 说明 |
|---|---|
| 截图 | 全局热键 / 托盘菜单,拖拽选择区域,自动保存 + 自动复制到剪贴板 |
| 离线提取文字 (OCR) | 调用 Windows 系统自带 OCR 引擎(Windows.Media.Ocr),完全离线、无需联网、无需捆绑模型;内置图像预处理(小图放大 + 灰度 + 自动对比度增强),小字与中文识别效果显著提升;智能自动识别:含中文的图片自动切换中文引擎,纯英文图片使用英文引擎;识别结果原样保留空格与排版 |
| 修改截图快捷键 | 设置界面点击输入框后直接按下新组合键即可修改(含"识别文字"快捷键) |
| 更改图片存储位置 | 设置界面自由选择存储文件夹,截图自动按时间戳命名保存 |
| 桌面钉图 | 任意图片(文件 / 剪贴板 / 截图)钉在桌面上,始终置顶不被其他窗口覆盖,可拖动、缩放、调透明度 |
| 鼠标穿透 | 钉图可开启鼠标穿透:图片留在桌面最上层但完全不阻挡鼠标操作,点击会落到下方窗口 |
使用方法
- 双击运行
SnapShot.exe,程序驻留任务栏右下角托盘(蓝色 T 图标)。 - 截图:按
Ctrl + Alt + A(可在设置中修改),拖拽选择区域后松手,图片自动保存并复制到剪贴板,选区旁出现工具条:- 识别文字:离线 OCR 提取图中文字(可复制 / 保存为 TXT)
- 复制 / 另存为 / 钉在桌面 / 关闭
- 截图并识别:按
Ctrl + Alt + S,截图后直接进入文字识别窗口。 - 钉图:托盘菜单 →「钉住图片…(从文件)」或「钉住剪贴板图片」;也可以把截图通过工具条钉在桌面。
- 拖动图片移动位置;滚轮缩放;双击在"原始大小 / 适应屏幕"间切换
- 右键菜单:鼠标穿透、复制、另存为、放大/缩小、恢复原始大小、适应屏幕、透明度、关闭
- 鼠标穿透:勾选后图片不再响应鼠标(窗口右下角显示"鼠标穿透中"角标),点击会直接作用于下方窗口。恢复方式:托盘菜单「取消所有钉图穿透」或按
Ctrl + Alt + P - 透明度:右键菜单快速档位(30%~100%)或「自定义…」滑块精确调整(10%~100%),可勾选"设为默认透明度"
- 置顶机制:窗口每 400ms 自动重新锁定为最顶层,即使被其他置顶窗口抢占也能立即回到最前
- 设置:托盘菜单 →「设置…」,可修改:
- 截图快捷键 / 识别文字快捷键(点击输入框 → 直接按新组合键;Esc 取消、Delete 清除)
- 图片存储位置、是否自动保存 / 自动复制
- OCR 默认语言(默认英文 en-US;选择「自动识别」时智能检测:图片含中文自动用中文引擎,纯英文用英文引擎;强制识别中文请选择"中文(简体)")
- 配置保存在
%APPDATA%\SnapShot\settings.json,日志在%APPDATA%\SnapShot\logs\。
系统要求
- Windows 10 / Windows 11(x64 或 x86,自带 .NET Framework 4.8,无需安装运行库)
- 中文 OCR 需要系统已安装「中文(简体)」语言并启用「基本文字识别」:
设置 → 时间和语言 → 语言和区域 → 添加语言 → 中文(简体) → 语言选项 → 基本文字识别(仅需安装一次,之后完全离线可用;未安装时自动回退英文/自动识别)
开发与构建
- 技术栈:C#(.NET Framework 4.8)+ WinForms + Windows.Media.Ocr(系统 WinRT OCR)
- 编译器:Windows 自带的
csc.exe,无需安装任何 SDK,构建过程完全离线 - 构建:在 PowerShell 中运行
.\build.ps1,产物为dist\SnapShot.exe(约 50 KB 单文件) - 自检:
SnapShot.exe --diagnose <输出文件>检测 OCR 语言、离线识别与热键注册 - 自动化测试:
.\build_test.ps1构建SnapShot_test.exe(设置序列化、屏幕截图、钉图置顶机制)
目录结构
SnapShot/
├── SnapShot.exe # 成品(dist 目录)
├── src/ # 源码
│ ├── Program.cs # 入口、单实例、DPI
│ ├── AppContext.cs # 托盘、菜单、截图流程编排
│ ├── HotkeyManager.cs # 全局热键(RegisterHotKey)
│ ├── CaptureOverlay.cs # 全屏选区截图
│ ├── OcrService.cs # 离线 OCR(Windows.Media.Ocr)
│ ├── OcrForm.cs # 识别结果窗口
│ ├── ToolbarForm.cs # 截图后工具条
│ ├── PinForm.cs # 桌面置顶钉图
│ ├── SettingsForm.cs # 设置界面
│ └── ...
├── assets/ # 图标、应用清单
├── tools/ # 自动化测试
├── build.ps1 # 构建脚本
└── build_test.ps1 # 测试构建脚本
常见问题
- 识别不了中文:请先确认系统中已安装「中文(简体)基本文字识别」语言组件(见上文),并在识别窗口或设置中将语言切换为中文。
- 识别效果不佳:内置预处理会自动放大过小的图片并增强对比度;截图时尽量框选清晰、正立的文字区域,避免反光、渐变背景与艺术字体。
- 快捷键无效:可能与其他程序冲突,请在设置中更换组合键。
- 钉图被覆盖:钉图窗口是置顶窗口,会被定时器持续锁回最顶层;若与全屏独占游戏/远程桌面共存,请将游戏切到窗口化。
- 穿透后无法操作钉图:这是预期行为。按
Ctrl + Alt + P或托盘菜单「取消所有钉图穿透」即可恢复。 - 杀毒软件提示:本程序未签名,个别杀软可能误报;可通过"仍要运行"放行,或在源码基础上自行构建。