一个功能丰富的Windows原生截图工具,支持截图、标注、OCR文字识别等功能。
🚀 最新更新: 项目已完成重大架构重构,从单体应用升级为现代化的模块化架构,提供更好的代码组织、可维护性和扩展性。
- 全屏截图: 支持全屏幕截图
- 区域选择: 鼠标拖拽选择任意区域
- 窗口检测: 自动高亮检测到的窗口边界
- 实时预览: 截图过程中实时显示选择区域
- 绘图工具: 矩形、圆形、箭头、自由画笔
- 文字标注: 支持添加文字说明
- 颜色选择: 多种颜色可选
- 线条粗细: 可调节绘图线条粗细
- 撤销功能: 支持撤销上一步操作
- 智能识别: 基于PaddleOCR引擎的高精度文字识别
- 结果展示: 独立窗口显示识别结果和原图
- 多语言支持: 支持5种语言的OCR识别
- 🇨🇳 简体中文 (默认) - 最稳定,识别精度最高
- 🇺🇸 英文 - 支持英文文本识别
- 🇹🇼 繁体中文 - 支持繁体中文识别
- 🇯🇵 日文 - 支持日文文本识别
- 🇰🇷 韩文 - 支持韩文文本识别
- 语言切换: 在设置界面可选择OCR识别语言
- 智能配置: 根据选择的语言自动加载对应的识别模型
- 异步启动: OCR引擎异步启动,不阻塞界面操作
- 状态指示: OCR按钮根据引擎状态自动启用/禁用
- 窗口固钉: 将截图结果固定在桌面上
- 拖拽移动: 固钉窗口支持拖拽移动
- 始终置顶: 固钉窗口始终显示在最前面
- 快速保存: 一键保存到剪贴板
- 文件保存: 支持保存为PNG等格式
- 自定义路径: 用户可选择保存位置
- Windows 10/11
- 支持Direct2D的显卡
- PaddleOCR引擎: 需要
PaddleOCR-json_v1.4.1
文件夹与主程序在同一目录
截图工具/
├── sc_windows.exe # 主程序
├── PaddleOCR-json_v1.4.1/ # OCR引擎文件夹
│ ├── PaddleOCR-json.exe # OCR主程序
│ ├── models/ # 识别模型文件
│ │ ├── config_en.txt # 英文识别配置
│ │ ├── config_chinese_cht.txt # 繁体中文识别配置
│ │ ├── config_japan.txt # 日文识别配置
│ │ ├── config_korean.txt # 韩文识别配置
│ │ └── *.infer/ # 各语言识别模型
│ └── *.dll # 运行时依赖库
└── README.md # 说明文档
开发环境文件结构/
├── src/ # 主程序源代码(模块化架构)
│ ├── app.rs # 应用程序协调器
│ ├── message.rs # 消息系统
│ ├── drawing/ # 绘图功能模块
│ ├── platform/ # 平台抽象层
│ ├── screenshot/ # 截图管理模块
│ ├── system/ # 系统功能模块
│ ├── ui/ # UI组件模块
│ ├── interaction/ # 交互处理模块
│ └── utils/ # 工具函数模块
├── src_backup/ # 旧版本源代码备份
├── paddleocr/ # 本地PaddleOCR库
│ ├── src/lib.rs # PaddleOCR Rust封装
│ └── Cargo.toml # 本地库配置
├── PaddleOCR-json_v1.4.1/ # OCR引擎文件夹
├── Cargo.toml # 项目配置
└── README.md # 说明文档
- 启动程序: 运行exe文件,程序将最小化到系统托盘
- 程序启动时会自动检测PaddleOCR引擎
- 如果检测到OCR引擎,会异步启动并准备就绪
- 开始截图:
- 使用热键
Ctrl+Alt+S
- 或点击托盘图标
- 使用热键
- 选择区域: 鼠标拖拽选择要截图的区域
- 标注编辑: 使用工具栏进行绘图标注
- 文字识别:
- 点击OCR按钮识别图片中的文字
- 如果OCR引擎未就绪,按钮会显示为灰色不可点击
- 引擎就绪后按钮自动变为可用状态
- 识别结果会在新窗口中显示,包含原图和识别的文字
- OCR语言设置:
- 右键点击系统托盘图标,选择"设置"
- 在设置窗口中选择"OCR识别语言"
- 可选择:简体中文、英文、繁体中文、日文、韩文
- 点击"确定"保存设置,下次OCR时会使用选择的语言
- 保存结果:
- 点击确认按钮保存到剪贴板
- 点击保存按钮选择文件保存位置
- 点击固钉按钮将截图固定在桌面
- 🏹 箭头: 选择和移动工具
- ⬜ 矩形: 绘制矩形框
- ⭕ 圆形: 绘制圆形
- ✏️ 画笔: 自由绘制
- 📝 文字: 添加文字标注
- ↩️ 撤销: 撤销上一步操作
- 🔍 OCR: 文字识别
- 💾 保存: 保存到文件
- 📌 固钉: 固定到桌面
- ✅ 确认: 保存到剪贴板并关闭
- ❌ 取消: 取消截图
- 模块化架构: 采用领域驱动设计(DDD),按功能域分离模块
- 应用协调器模式: 使用
App
结构体统一协调各个业务领域 - 消息驱动架构: 通过
Command
/Message
系统实现组件解耦 - 平台抽象层:
PlatformRenderer
trait支持未来跨平台扩展 - 关注点分离: 每个模块专注于特定功能域,提高代码可维护性
- Rust语言: 使用Rust开发,性能优异,内存安全
- Windows API: 直接调用Windows原生API,系统集成度高
- Direct2D: 使用Direct2D进行高性能图形渲染
- 异步运行时: 基于tokio的异步处理能力
- PaddleOCR集成: 集成PaddleOCR-json引擎,高精度文字识别
- 异步处理: OCR引擎异步启动和状态检查,不阻塞UI
- 智能状态管理: 按钮状态根据OCR引擎可用性自动更新
- SVG图标: 使用SVG矢量图标,界面清晰美观
- 统一错误处理: 使用anyhow库提供一致的错误处理体验
- 操作系统: Windows 10 1903 或更高版本
- 内存: 至少 200MB 可用内存(包含OCR引擎)
- 显卡: 支持Direct2D的显卡
- 磁盘空间: 约 150MB(包含PaddleOCR引擎和模型文件)
- 运行时: Visual C++ 2019 Redistributable(通常系统已包含)
- Rust: 1.70+ (支持2024 edition)
- Windows SDK: Windows 10 SDK 或更高版本
- Visual Studio: 推荐 Visual Studio 2019/2022 或 Build Tools
# 克隆项目
git clone https://github.com/han1548772930/sc_windows.git
cd sc_windows
# 确保PaddleOCR引擎文件夹存在
# 下载PaddleOCR-json_v1.4.1文件夹并放置在项目根目录
# 编译发布版本
cargo build --release
# 运行程序
./target/release/sc_windows.exe
- 下载 PaddleOCR-json_v1.4.1 文件夹
- 将整个文件夹放置在与
sc_windows.exe
相同的目录中 - 确保文件夹结构完整,包含所有
.dll
文件和models/
目录
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
本项目采用现代化的模块化架构设计,从传统的单体应用重构为领域驱动的模块化系统:
- App (app.rs): 应用程序协调器,负责统一管理各个业务领域
- Message System (message.rs): 消息驱动架构,通过Command/Message实现组件解耦
- Platform Layer (platform/): 平台抽象层,支持未来跨平台扩展
- Screenshot (screenshot/): 截图捕获和管理
- Drawing (drawing/): 绘图工具和图形渲染
- System (system/): 系统集成功能(热键、托盘、窗口检测)
- UI (ui/): 用户界面组件
- Interaction (interaction/): 用户交互处理
- 单一职责: 每个模块专注于特定功能域
- 依赖注入: 通过trait抽象实现松耦合
- 消息驱动: 使用Command模式协调组件交互
- 错误处理: 统一的错误处理和传播机制
项目经历了重大架构重构:
- 旧架构: 单体文件结构,功能混合
- 新架构: 模块化目录结构,关注点分离
- 迁移策略: 保持核心功能不变,重构代码组织
欢迎提交Issue和Pull Request来改进这个项目!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 开启 Pull Request
- 文件依赖: OCR功能需要
PaddleOCR-json_v1.4.1
文件夹与主程序在同一目录 - 首次启动: 程序启动时会自动检测并启动OCR引擎,可能需要几秒钟时间
- 按钮状态: OCR按钮会根据引擎状态自动变为可用(正常)或禁用(灰色)
- 错误处理: 如果OCR引擎启动失败,会显示友好的错误提示信息
如果OCR功能无法使用,请检查:
PaddleOCR-json_v1.4.1
文件夹是否存在- 文件夹内的
PaddleOCR-json.exe
是否完整 - 所有
.dll
文件是否齐全 models/
目录是否包含模型文件- 是否有足够的磁盘空间和内存
- 简体中文: 默认语言,最稳定可靠
- 英文: 通常工作良好,适合英文文档识别
- 繁体中文: 支持繁体中文文本识别
- 日文/韩文: 如果识别失败,建议切换回简体中文或英文
- 语言切换: 在设置中更改OCR语言后,重新进行识别即可生效