Text Grab Windows OCR 工具技术分析
一、概述
1. 项目背景
A. 项目定位
Text Grab 是一款专为 Windows 10/11 设计的轻量级光学字符识别(OCR)工具,旨在解决图像、视频或应用程序中无法选择文本的问题。
B. 核心价值
- 将屏幕上任何可见的文本转化为可复制的内容
- 无需后台常驻进程,按需启动
- 完全本地化 OCR 处理,保护隐私
- 多种工作模式适应不同使用场景
C. 影响力
- GitHub Stars:4.5k
- Forks:284
- 最新版本:v4.11.2(2024 年 12 月发布)
- 作者是 Microsoft PowerToys Text Extractor 的开发者
2. 技术背景
A. 问题定义
在日常工作中,用户经常遇到以下场景:
- 图片中的文字无法复制
- 视频暂停时的字幕无法选择
- 某些应用程序界面中的文本被锁定
- 需要快速提取并处理大量文本
B. 解决方案
利用 Windows 10/11 内置的 OCR API(Windows.Media.Ocr),通过截图识别的方式将文本提取到剪贴板,再进行后续处理。
二、系统架构
1. 技术栈
graph TB
A[Text Grab 应用层] --> B[.NET 6.0+]
B --> C[WPF UI]
B --> D[Windows OCR API]
B --> E[第三方库]
E --> E1[ZXing.Net<br/>QR码识别]
E --> E2[WPF-UI<br/>Fluent UI]
E --> E3[CliWrap<br/>CLI处理]
E --> E4[Community Toolkit]
C --> F[MSIX 打包]
F --> G[Microsoft Store]
F --> H[GitHub Releases]
F --> I[Scoop/Chocolatey]2. 核心组件
A. OCR 引擎
使用 Windows.Media.Ocr API,特点:
- 完全本地运行,无需网络连接
- 支持多种语言识别
- 自动识别文本边界框
- 提供字符级和单词级定位信息
B. UI 框架
- WPF(Windows Presentation Foundation)
- WPF-UI 提供 Fluent Design 风格
- 支持浅色/深色主题
C. 进程模型
- 前台模式:按需启动,用完即退
- 后台模式(可选):常驻进程,支持全局热键
- 命令行模式:支持自动化脚本
3. 工作原理
sequenceDiagram
participant U as 用户
participant T as Text Grab
participant O as OCR API
participant C as 剪贴板
U->>T: 触发捕获(快捷键/选择区域)
T->>T: 截取屏幕区域
T->>O: 发送图像进行 OCR
O->>T: 返回识别结果+位置信息
T->>T: 文本处理/编辑
T->>C: 复制到剪贴板
C->>U: 粘贴使用三、功能模式分析
1. 全屏模式(Full-Screen Grab)
A. 功能描述
这是 Text Grab 的核心功能,也是 Microsoft PowerToys Text Extractor 的基础实现。
B. 使用方式
- 按快捷键启动(可自定义)
- 鼠标拖拽选择屏幕区域
- 自动识别选中区域内的文本
- 单击即可复制单个单词
C. 技术特点
- 利用 OCR API 返回的单词边界框
- 精确定位每个单词的位置
- 支持即时取消(ESC 键或右键)
2. 抓取框架模式(Grab Frame)
A. 功能描述
一个半透明的浮动框架,可放置在任何文本上方进行 OCR。
B. 使用场景
- 需要多次从同一位置提取文本
- 视频字幕提取
- 固定区域的文本监控
C. 技术优势
- 窗口大小和位置可调
- 调整窗口可改善 OCR 准确率
- 内置搜索功能快速定位文本
3. 文本编辑窗口(Edit Text Window)
A. 功能描述
类似记事本的纯文本编辑环境,专门用于处理 OCR 提取的文本。
B. 核心功能
mindmap
root((文本编辑窗口))
文本获取
全屏捕获
抓取框架
批量图像OCR
剪贴板监听
文本处理
大小写转换
空格/空行修剪
单行化
重复行删除
高级工具
正则表达式提取
查找替换
表格格式转换
保留字符替换
批量操作
目录列表
文件夹图像批量OCR
URL启动C. 典型工作流
- 使用全屏模式或抓取框架提取文本
- 在编辑窗口中清理和格式化
- 使用工具函数处理(如去重、转换表格)
- 复制最终结果到目标应用
4. 快速查询(Quick Simple Lookup)
A. 功能描述
一个个人文本字典/剪贴板管理器,用于存储和快速检索常用文本。
B. 使用流程
- 按 Win + Shift + Q(默认快捷键)
- 输入关键词过滤
- 按 Enter 复制第一条结果
- 粘贴到目标应用
C. 适用场景
- 频繁使用的 URL
- 常用邮箱地址
- 零件编号/产品代码
- 代码片段
5. 命令行接口
A. 支持的参数
| 参数 | 功能 |
|---|---|
| Fullscreen | 启动全屏捕获模式 |
| GrabFrame | 启动新的抓取框架 |
| EditText | 启动新的编辑窗口 |
| Settings | 打开设置界面 |
| "文件路径" | OCR 图像文件或打开文本文件 |
| "文件夹路径" | 批量 OCR 文件夹中所有图像 |
B. 自动化集成示例
graph LR
A[脚本/自动化工具] -->|调用| B[Text Grab CLI]
B --> C[Fullscreen]
B --> D[批量OCR]
B --> E[EditText]
D --> F[文件夹路径]
F --> G[生成文本报告]
E --> H[文本处理]
H --> I[输出到文件]四、技术实现细节
1. OCR 引擎集成
A. Windows.Media.Ocr API
// 初始化 OCR 引擎
var engine = OcrEngine.TryCreateFromUserProfileLanguages();
// 识别图像
var ocrResult = await engine.RecognizeAsync(softwareBitmap);
// 获取文本
string text = oprResult.GetText();B. 性能优化
- 按需初始化 OCR 引擎
- 缓存用户语言设置
- 异步处理避免阻塞 UI
2. 文本边界处理
A. 单词级别识别
OCR API 返回每个单词的边界框,Text Grab 利用此特性实现:
- 单击单词即复制
- 精确的区域选择
- 视觉反馈(单词高亮)
B. 多语言支持
自动检测用户系统语言,支持:
- 英语
- 中文简体/繁体
- 日语
- 韩语
- 以及 Windows 支持的其他语言
3. 二维码识别
A. 技术实现
集成 ZXing.Net 库,支持:
- QR 码识别
- 条形码识别
- 多码批量识别
B. 应用场景
- 快速添加联系方式
- 网址跳转
- 产品信息提取
五、安装与分发
1. 官方渠道
A. Microsoft Store
- 自动更新
- 简单安装
- 一键卸载
B. GitHub Releases
- MSIX 包
- 便携版(解压即用)
- 完整安装包
2. 社区包管理器
A. Scoop
scoop install text-grabB. Chocolatey
choco install text-grab3. 开发构建
A. 环境要求
- .NET 6.0 SDK
- Visual Studio 2019/2022 或 VS Code
- Windows 10 SDK(10.0.19041.0)
B. 构建命令
# 使用 .NET CLI
dotnet publish -c Release
# 或使用提供的脚本
./build-unpackaged.ps1六、设计原则与用户体验
1. 核心设计理念
A. 极简主义
- 无不必要的 UI 元素
- 快速启动,快速退出
- 减少点击次数
B. 按需运行
- 默认无需后台进程
- 降低系统资源占用
- 保护用户隐私
C. 模块化
- 四种模式各司其职
- 可独立使用
- 支持组合工作流
2. 交互设计
A. 快捷键优先
- 所有功能都有快捷键
- 可自定义快捷键
- 全局热键支持(后台模式)
B. 视觉反馈
- 选中区域实时预览
- OCR 结果即时显示
- 错误状态明确提示
C. 容错设计
- 无文本时保持窗口打开
- ESC 键快速取消
- 右键菜单备选方案
七、技术优势与局限
1. 技术优势
A. 本地化处理
- 无需网络连接
- 数据不离设备
- 响应速度快
B. 深度集成
- 利用 Windows 原生 API
- 与系统集成度高
- 兼容性好
C. 功能丰富
- 不只是 OCR,还包含文本处理
- 支持批量操作
- 命令行接口扩展性强
2. 技术局限
A. OCR 准确率
- 依赖 Windows OCR 引擎质量
- 特殊字体识别可能失败
- 手写字体支持有限
B. 平台限制
- 仅支持 Windows 10/11
- 不支持 Linux/macOS
- 旧版 Windows 不兼容
C. 语言支持
- 需要系统安装对应语言包
- 某些语言识别效果较差
八、竞品对比
1. 与 PowerToys Text Extractor
| 特性 | Text Grab | Text Extractor |
|---|---|---|
| 开发者 | Joe Finney | 基于 Text Grab |
| 功能模式 | 4 种模式 | 仅全屏模式 |
| 文本编辑 | 内置编辑器 | 无 |
| 后台进程 | 可选 | 必须运行 |
| 批量 OCR | 支持 | 不支持 |
2. 与云 OCR 方案
| 特性 | Text Grab | 云 OCR 方案 |
|---|---|---|
| 隐私 | 本地处理 | 需上传图片 |
| 网络依赖 | 无需网络 | 必须联网 |
| 准确率 | 中等 | 通常更高 |
| 成本 | 免费 | 可能有费用 |
九、应用场景
1. 日常工作
A. 开发者
- 从截图提取错误代码
- 复制日志中的关键信息
- 快速提取配置参数
B. 设计师
- 从设计稿提取文本内容
- 复制样式文件中的 CSS
- 导出图标中的文字
C. 数据录入
- 从纸质文档数字化
- 发票/收据信息提取
- 表格数据转换
2. 教育领域
A. 在线学习
- 视频字幕提取
- 课件文本复制
- 笔记整理
B. 语言学习
- 外语文本快速复制
- 词典辅助翻译
- 语法例句收集
3. 内容创作
A. 写作
- 引用资料提取
- 图片转文字
- 摘要整理
B. 社交媒体
- 图片文案提取
- 热点内容收集
- 多平台发布准备
十、未来发展方向
1. 功能增强
A. AI 集成
- 本地 LLM 文本润色
- 智能摘要生成
- 自动翻译
B. 表格识别
- 更智能的表格 OCR
- 自动识别表头
- 导出为 Excel/CSV
C. 手写识别
- 集成手写 OCR 引擎
- 笔记数字化
- 手写公式识别
2. 平台扩展
A. 跨平台支持
- macOS 版本(已有类似产品 Text Sniper)
- Linux 版本
- Web 版本(使用 WebAssembly)
B. 移动端
- iOS/Android 应用
- 手机拍照 OCR
- 云端同步
3. 生态建设
A. 插件系统
- 第三方扩展支持
- 自定义文本处理器
- API 开放
B. 云服务(可选)
- 多设备同步
- 快速查询云端备份
- 团队共享字典
十一、总结
Text Grab 是一款设计精良的 Windows OCR 工具,通过充分利用 Windows 原生 OCR API,实现了轻量、快速、功能丰富的文本提取体验。它的四种工作模式覆盖了从简单复制到复杂文本处理的多种场景,适合不同用户需求。
项目的核心价值在于:
- 极简的设计理念
- 本地化处理保护隐私
- 丰富的文本处理工具
- 灵活的命令行接口
对于经常需要从图片或视频中提取文本的用户来说,Text Grab 是一款值得尝试的效率工具。