Repository navigation
Releases
SnapOCR v1.0.3
SnapOCR v1.0.3 是稳定性与正确性修复版:功能与界面没有变化,修掉 22 个缺陷 —— 其中 2 个会让程序在特定操作下崩溃或永久失效,1 个会把导出的表格悄悄写错列,1 个让长截图在真实网页上拼不出来。另外把 docx 导出提速 123 倍。
从 v1.0.1 或更早版本升级的用户,请先看 v1.0.2 的说明:那一版修的是「双击没反应」,本版是在它基础上的进一步收敛。
🛡️ 会让程序崩掉 / 失效的
- 关闭程序时后台还有任务在跑 → 进程崩溃:批量识别、PDF 识别、翻译中直接点关闭,正在运行的线程被析构,进程 abort,用户看到的是「程序突然消失」。现在会先请求可取消的任务收手,再给它们 3 秒收尾时间,超时的等它自然结束后再退出。实测批量处理 5 张图中退出:2.0 秒干净退出,退出码 0(修复前退出码 127)。
- 截图遮罩被 Alt+F4 关掉后,「立即截图」永久没反应:用任何非 Esc 的方式关掉遮罩,主窗口仍以为截图还在进行中,之后每次触发都被判定为「正在截图」而直接忽略,只能重启程序。长截图的控制条同理会永久拦住下一次截图。现在两个控件关闭时都会补发取消信号,主窗口也会检测对象是否已销毁并自动恢复状态。
📊 导出的表格会错列
- 表格某行某格没有文字 → 整列左移:原来的列边界是「词与词间隙的中点」,缺一个字就少一根边界,右侧所有单元格往前顶一格。3 列表格导出 Excel 后,第 3 列的数据跑到第 2 列,且没有任何提示。现在改成按「单元格水平区段重叠合并」生成全局列带,每行的列数恒定等于总列数,空格留空串。
- 列挨得很紧的表格会被并成一列:切列阈值原来绑死在「0.9 倍字高」,密集排版、小字号截图就整片并成一列。现在按「全表没有任何文字跨过的竖直空白缝」切列 —— 缝宽与字高无关,5 px 的缝也能切对;同时允许少量行跨过缝隙,表头合并单元格不会被多切一列。
🖼️ 长截图
- 页面上有视频、滚动条、走秒的时钟 → 拼接直接失败,长图里出现整段重复内容。根因有三层:模板取新帧顶部 100 px,正好压着动态内容时它本身就是噪声;重叠区平均差超过阈值就整体判「拼不上」;相关系数门槛对动态画面过于苛刻。现在改为:缩略图粗搜(噪点被平均掉、排版结构还在)+ 多候选复评 + 「逐列差异比例中位数」判定(对得齐时只有动态那几列不齐,对不齐时整体都差)+ 动态列自动屏蔽。实测页面有 22% 面积的固定视频时,拼接结果从 2400 px(5 次整帧追加)变成 900 px(5 次正常重叠)。
- 大片纯色区域让长截图提前结束:纯色模板在模板匹配里处处得 1.0,位置退化到 (0,0),连续几帧后被判「页面已到底」。现在先做纹理预检,再做像素级复核。
⚡ 性能
- docx 导出 10 万行要 419 秒:
add_paragraph()是 O(n) 插入,整体退化成 O(n²)。改为直接构造 XML 节点插入,线性写入 —— 10 万行 3.4 秒,提速 123 倍,回读 10 万段内容逐字一致。 - 启动后 1–3 秒内改任何设置,整窗冻结近 2 秒:改设置会重建识别引擎,而重建要抢一把正被预热线程持有的锁。现在改为无锁清引用 + 版本号校验,改设置立即返回。
- 超大 PDF 页面撑爆内存:4000×5000 pt 的页面按原比例渲染会生成 8000×10000 的位图,单页常驻内存 +306 MB。现在按「单边 4096 像素、总量 1600 万像素」钳制,同一页面降到 3276×4096。
🖥️ 多屏与单实例
- 混合 DPI 多屏,跨屏截图有 1–2 px 接缝:整块虚拟桌面原来只用一个统一缩放比,两块屏 DPI 不同时这个值等于加权平均 —— 100% 的屏被放大、125% 的屏被压缩,右半边文字发虚、边缘错位。现在逐屏配对,每块屏用自己的物理/逻辑比例绘制与裁剪。实测「左屏 1:1 + 右屏 2:1」布局下,分界线从错误的 x≈33 回到正确的 x=50。
- 125% 缩放下长截图控制条跑到屏幕外:控制条原来按物理像素摆位,而 Qt 的窗口定位用逻辑坐标,缩放后直接飞出屏幕点不到。现在改用逻辑坐标 + 所在屏幕判断 + 边界夹取。
- 同时启动两个实例,单实例保护失效:两个进程几乎同时启动时双方都还没开始监听,互相探不到,结果双双启动(两套全局热键钩子、两份历史互相覆盖)。现在改用内核互斥体仲裁,本地套接字只负责「唤起已运行的窗口」。实测并发启动 3 个只活 1 个,第二个实例 0.8 秒退出。
🔧 其它加固
- 「截图贴图」开关此前完全没生效(代码里没有任何地方读取它),现在生效。
- 长截图预览里的「识别」按钮会绕过 OCR 忙碌检查,导致两个任务抢同一个引擎,现在纳入统一检查。
- 拖入 PDF 文件时不检查「PDF 识别」开关状态,现在会提示并拒绝。
- PDF 识别正常完成后进度框可能误触发「已取消」,现在先断开信号再复位。
Ctrl+A, Ctrl+B这类多段组合热键会被校验放行,但底层键盘库不支持,现在明确拒绝。- Excel 导出中以
=开头的文本会被写成公式(公式注入),现在按纯文本写入。 - 识别结果里含
\x00等 XML 非法控制字符会让 docx 导出直接抛异常,现在过滤后正常导出。 - 翻译功能在语言配置缺失时会抛
StopIteration使对话框崩溃,现在回落到第一个可用语言。 - 保存文件时没写扩展名会存成无后缀文件,现在按所选格式补
.txt/.docx/.xlsx。 - 抓屏失败(权限、远程桌面、锁屏)以前只写日志,界面上毫无反应,现在会弹窗说明。
📦 下载说明
| 文件 | 说明 |
|---|---|
SnapOCR-v1.0.3-win64.7z |
推荐:onedir 绿色包,解压一次即用,启动约 2.5 秒 |
SnapOCR-v1.0.3-win64.zip |
与 7z 内容逐字节相同,只是容器不同;给 winget(只认 zip)用,手工安装用 7z 更省 35 MB |
SnapOCR.exe |
单文件版,双击即用。⚠ 实测有约 13% 概率启动失败(onefile 解压问题),不建议日常使用,见下方说明 |
*.sha256 |
SHA-256 校验文件 |
系统要求:Windows 10/11 x64。默认简体中文模型已内置,识别全程离线;切换到繁中 / 英 / 日 / 韩时首次会下载对应模型(只下载模型文件,不上传任何截图或识别文本),之后离线可用。
SHA-256 校验值:
SnapOCR-v1.0.3-win64.7z
29fec864e619aeff605c1dd11c3ed7b4693d7c72153f116dffc06c476be55177
SnapOCR-v1.0.3-win64.zip
d6fdf2b05660a6a796183552cfd2166c4e1ed2c8a3344d455ee633d197a75591
SnapOCR.exe
68dbec68c8bb8934e045e2ab324d609938acf999ee0e54df4d8bda2c683a5abf
⚠️ 关于单文件版 SnapOCR.exe
它是 PyInstaller onefile 打包,每次启动都要把 155 MB 解压到临时目录。本机(Windows 11 x64)
实测 52 次启动失败 7 次(13.5%),表现为双击后没有任何窗口、退出码 127
(ERROR_PROC_NOT_FOUND)。把临时目录换到另一块盘仍然 3/20 失败,所以与磁盘无关;
同一份 onedir 产物 20 次启动 0 次失败。日常使用请下载 7z 或 zip 绿色包。
这个 zip 资产就是为此新增的:winget 的 SnapOCR 清单改走 zip + onedir,不走单文件版。
⬆️ 要不要升级
建议都升。 下面这些都不是极端操作,但 v1.0.2 会出问题:
- 批量识别/PDF 识别还没跑完就关程序 → 进程崩溃;
- 用 Alt+F4 关掉截图遮罩 → 之后截图功能一直没反应,只能重启;
- 识别带空单元格的表格并导出 Excel → 数据悄悄错列;
- 长截图一个带视频或滚动条的网页 → 拼不出来,出来一堆重复内容;
- 导出几万行文本为 docx → 等几分钟;
- 双屏且缩放比不同屏不同 → 跨屏截图边缘发虚。
⚠️ SmartScreen 提示
本程序暂未做代码签名,首次运行可能弹出「Windows 已保护你的电脑」。点「更多信息 → 仍要运行」即可,建议先用上方校验值核对文件完整性。介意的话可从源码自行构建(Python 3.10+):pip install -r requirements.txt && python entry.py。
📝 反馈
识别不准、有 bug、想要新功能?欢迎提 Issue,附上截图(脱敏后)和期望文本是最有效的反馈方式。完整测试报告见仓库 docs/QA-REPORT-2026-11-06.md(第 7 章与第 8 章为本版修复记录)。
SnapOCR v1.0.2
SnapOCR v1.0.2 是稳定性修复版:功能与界面没有变化,修掉 18 个缺陷,其中 3 个会让程序「双击没反应」,3 个会在长时间任务里把界面卡住或让数据悄悄丢掉。
🛡️ 修好了「双击没反应」
- 历史文件被改坏就打不开程序:
history.json里只要有一条结构不对(手工编辑、磁盘写坏、旧版本残留),构造窗口时就抛异常,进程直接退出、连报错窗口都没有。现在逐条校验,坏记录跳过并在状态栏提示「已跳过 N 条」,11 组脏数据全部能正常启动。 - 设置文件里快捷键写错也打不开:
settings.json的hotkey_capture变成null、数字或数组时,拼提示文字时.upper()直接崩。现在逐项类型兜底,非法值回落到默认的Ctrl+Alt+Q,9 组脏数据全部正常启动。 - 双开互相覆盖历史:同时开两个实例时,两边各自持有全量历史、退出时全量重写,后写的把先写的记录永久抹掉,还会出现一次热键弹出两个遮罩。现在程序是单实例的:再次双击只是把已有窗口唤到前台。需要刻意多开排查问题可以加
--multi。
🚀 修好了「卡住 / 占内存 / 静默失效」
- 导出大文件时界面整段冻住:PDF / docx 渲染原来在主线程同步跑,10 万行 PDF 要 137 秒,期间窗口无法拖动。现在整体搬到后台线程:77 万字符导出时
start()1 毫秒返回;超过 20 万字会先提示预计耗时;进度框可取消,取消后会删掉半成品文件。 - 批量识别一次性把图片全读进内存:500 张 1080p 会常驻 600 MB 以上,读盘还在 GUI 线程里做,点下去界面先卡 1 秒。现在只把路径交给线程,线程逐张读、逐张识别,并显示「第 x/y 张:文件名」进度。
- PDF 识别点了「取消」没反应:取消后不发任何信号,进度框留在屏幕上下不去。现在取消必定发信号、关框、提示「已取消」。
- 改快捷键失败却提示「已保存」:注册失败被静默吞掉,用户以为生效了、实际热键全废。现在失败会回滚到上一次真正注册成功的组合并弹窗说明(提示文案按平台区分:Linux 需 root、macOS 需辅助功能权限)。
- 单个按键也能被注册成热键:把热键设成
A或F1会把全系统这个键劫持掉,打字都在截图。现在保存前校验必须是「修饰键 + 普通键」,A/F1/Ctrl+Shift一律拒绝。
🔧 其它加固
- 历史写入改「临时文件 + 原子替换 + fsync」:磁盘写满或断电不会把已有记录截断成半个 JSON,写失败会提示而不是静默丢失。
- 截图遮罩改为覆盖整个虚拟桌面,副屏在主屏左侧/上方(坐标为负)时选区不再偏移;长截图回传绝对物理坐标。
- 零尺寸图片不再触发除零;灰度 / 四通道截图统一转成三通道再识别。
- 超长单行文本翻译会循环分块(每段 ≤5000 字符),不会再发出超限请求被接口拒绝。
- 预热失败(模型缺失、目录不可写)会在状态栏说明,不再静默。
- 空内容不再导出空白文件;Excel 导出跳过空行;旧版本识别结果结构异常时容错。
📦 下载说明
| 文件 | 说明 |
|---|---|
SnapOCR-v1.0.2-win64.7z |
推荐:onedir 绿色包,解压一次即用,启动约 2.5 秒 |
SnapOCR.exe |
单文件版,双击即用(每次启动要自解压 160 MB,约 11–16 秒) |
*.sha256 |
SHA-256 校验文件 |
系统要求:Windows 10/11 x64。默认简体中文模型已内置,识别全程离线;切换到繁中 / 英 / 日 / 韩时首次会下载对应模型(只下载模型文件,不上传任何截图或识别文本),之后离线可用。
SHA-256 校验值:
SnapOCR-v1.0.2-win64.7z
40bd0c545cd41d360b3fc72755b7b89fac566178c4d02694e1db2ba18af7570e
SnapOCR.exe
ef694b4a52ac28679a70594129ef461d8cacd6e9f21e661324aec6c44d8bd50c
⬆️ 要不要升级
建议都升。 v1.0.1 在下面这些情况下会出问题,而它们都不是极端操作:
- 用过一段时间的
history.json恰好有一条坏记录 → 打不开; - 手工改过设置里的快捷键(写错格式)→ 打不开;
- 习惯开两个窗口对照着用 → 历史会莫名少记录;
- 导出大段内容、批量识别几十张图 → 界面冻结几十秒。
⚠️ SmartScreen 提示
本程序暂未做代码签名,首次运行可能弹出「Windows 已保护你的电脑」。点「更多信息 → 仍要运行」即可,建议先用上方校验值核对文件完整性。介意的话可从源码自行构建(Python 3.10+):pip install -r requirements.txt && python entry.py。
📝 反馈
识别不准、有 bug、想要新功能?欢迎提 Issue,附上截图(脱敏后)和期望文本是最有效的反馈方式。完整测试报告见仓库 docs/QA-REPORT-2026-11-06.md。
SnapOCR v1.0.1
SnapOCR v1.0.1 补丁版:修两个实际会踩到的问题,功能没有变化。
🐞 修复
- 表格识别导出的 Excel 里字被拆开:原先单元格内按字符切分后用空格拼接,
姓名会变成姓 名、苹果变成苹 果。现在跟随「智能排版」设置压缩汉字之间的空格(英文单词与数字之间的间隔保留),姓名 / 苹果 / 香蕉原样输出。 - 贴图关掉后再贴第二张,贴图不出来:贴图窗口关闭时立即销毁(
WA_DeleteOnClose),主窗口却还留着旧引用,第二次贴图遍历列表时抛RuntimeError,新贴图创建不出来。现在清理列表时跳过已销毁的窗口。
📄 文档校正
- 1080p 全屏识别耗时从「约 7 秒」改为「约 7–10 秒(视 CPU 与文字密度)」。实测 1920×1080 深色代码图 38 行约 9.8 秒,原先写小了。
- 下载文件名同步为 v1.0.1。
📦 下载说明
| 文件 | 说明 |
|---|---|
SnapOCR-v1.0.1-win64.7z(115 MB) |
推荐:onedir 绿色包,解压一次即用,启动快 |
SnapOCR.exe(155 MB) |
单文件版,双击即用(每次启动要自解压,较慢) |
*.sha256 |
SHA-256 校验文件 |
系统要求:Windows 10/11 x64。默认简体中文模型已内置,识别全程离线;切换到繁中 / 英 / 日 / 韩时首次会下载对应模型(只下载模型文件,不上传任何截图或识别文本),之后离线可用。
SHA-256 校验值:
SnapOCR-v1.0.1-win64.7z
2bb9c437aa4831a91bc0202dc1e4b42166c65b412698feb80aadb8de5db312c6
SnapOCR.exe
338d059232fd22205b5bc19a9a84a67bc81410b3c08e69734b704d5167c2553a
⬆️ 要不要升级
会用表格识别导出 Excel,或者会连着贴多张图 → 建议升。其余情况 v1.0.0 继续用没有问题,功能上没有差别。
⚠️ SmartScreen 提示
本程序暂未做代码签名,首次运行可能弹出「Windows 已保护你的电脑」。点「更多信息 → 仍要运行」即可,建议先用上方校验值核对文件完整性。介意的话可从源码自行构建(Python 3.10+):pip install -r requirements.txt && python entry.py。
📝 反馈
识别不准、有 bug、想要新功能?欢迎提 Issue,附上截图(脱敏后)和期望文本是最有效的反馈方式。
SnapOCR v1.0.0
SnapOCR v1.0.0 首个正式版发布。
✨ 功能亮点
- 截图识别:
Ctrl+Alt+Q框选即识别、即复制,全程本地离线,截图不出本机 - 深色截图增强:深色 IDE / 暗色网页自动反色 + CLAHE 对比度增强,自带工具容易漏检的场景专用
- 可搜索历史:每次识别自动存档,关键词即时过滤、浮窗预览、双击再次复制
- 截屏翻译:
Ctrl+Alt+T框选即译,11 种语言互译(必应翻译 + MyMemory,免 Key) - 长截图:
Ctrl+Alt+L自动滚动拼接整页 - PDF 整档识别:拖入 PDF 逐页识别,进度可取消
- 表格识别:框选表格 → 行列矩阵 → 一键导出 Excel
- 截图贴图:截图钉在桌面置顶,滚轮缩放、Ctrl+滚轮调透明度
- 批量识别:文件夹拖入排队识别(递归、去重、上限 500 张)
- 多语言:内置简体中文模型,离线即用;繁中 / 英 / 日 / 韩首次切换时会联网下载对应识别模型,下载后本地缓存、之后离线可用
- 导出:txt / docx / pdf / md / xlsx
- 二维码兜底:区域内无文字时自动解码二维码
📦 下载说明
| 文件 | 说明 |
|---|---|
SnapOCR-v1.0.0-win64.7z(113 MB) |
推荐:onedir 绿色包,解压一次即用,启动快(单文件 exe 每次启动要自解压 160 MB) |
SnapOCR.exe(153 MB) |
单文件版,双击即用 |
*.sha256 |
SHA-256 校验文件 |
compare-dark-ui.png / hero-15s.gif |
深色增强对比图 / 15 秒串联演示(宣传素材) |
系统要求:Windows 10/11 x64。无需安装 Python;默认简体中文模型已内置,识别全程离线。首次切换到繁中 / 英 / 日 / 韩时会联网下载对应识别模型(只下载模型文件,不上传任何截图或识别文本),之后离线可用。
SHA-256 校验值:
SnapOCR-v1.0.0-win64.7z
57b6810ee3626ba06f9227741ec4b7640f308057bbde9c294f4fd8b45ae75127
SnapOCR.exe
211267420dd489330ef0ed5799b8d6a8c97f20aee71b1714e33fc19748cb7afb
⚠️ SmartScreen 提示
本程序暂未做代码签名,首次运行可能弹出「Windows 已保护你的电脑」。点「更多信息 → 仍要运行」即可,建议先用上方校验值核对文件完整性。介意的话可从源码自行构建(Python 3.10+):pip install -r requirements.txt && python entry.py。
📝 反馈
识别不准、有 bug、想要新功能?欢迎提 Issue,附上截图(脱敏后)和期望文本是最有效的反馈方式。