深色 IDE 截图 OCR 老是漏字,我加了一层预处理,顺手把识别结果做成了可搜索历史

系统自带的截图取字其实已经够用了。Windows 11 截图工具的「文本操作」、PowerToys 文本提取器,白底黑字抠几个字完全没问题;Umi-OCR 更是把批量、PDF、翻译都做全了。所以这篇不是劝谁换工具,只讲两个我反复踩到、现有工具不太顺手的场景,以及为此写的一个开源小工具。

一、深色截图为什么容易整行漏掉

我的编辑器、终端、大部分技术文档都是深色主题。框选一段代码或一段报错栈,常规 OCR 经常整行漏掉,或者只识别到一半。

原因不复杂:检测模型基本是按「白底黑字」训练的,深色背景配浅色字不在它的舒适区。以前的土办法是截图 → 丢进图片工具反色 → 再拿去识别,三步,还经常调不好对比度。

我在送进模型之前加了一层预处理,全部是本地图像运算:

  • 整图平均灰度 < 100 → 自动反色
  • 灰度标准差 < 45(浅灰字、水印字、低对比 UI)→ 对 LAB 的 L 通道再跑一次 CLAHE
  • 小选区放大 2--3 倍 再送进模型

右图是代码里 _enhance() 对左图跑出来的真实像素结果,不是画的示意图。我故意没放「识别结果对比」------挑一张对自己有利的截图当准确率证据没什么意思,欢迎拿自己的深色截图实测。

二、剪贴板只记得最后一次

识别完粘贴到别处,过半小时想再要那段文字,只能重新截一次。现在每次识别都存进历史:关键词即时过滤、鼠标悬停浮窗看全文、双击再次复制,也能一键导出 txt / docx / pdf / md / xlsx。

改动很小,但用起来差别很大。

顺手做的功能

文件夹拖入批量队列(去重、上限 500 张)、PDF 逐页识别(带进度、可取消)、表格框选转 Excel、滚动长截图拼接、截图贴图钉在桌面、框选即译(11 种语言)。

识别引擎是 RapidOCR / PP-OCRv6,栈是 Python 3.12 + PySide6 + onnxruntime + OpenCV。1080p 全屏 CPU 大约 7 秒,小区域基本秒出。

几个不想含糊的地方

  • 目前只有 Windows 10/11 x64 有可直接运行的二进制;Linux / macOS 可跑源码,但全局热键要 sudo 或辅助功能授权,长截图依赖 Win32 直接不可用。没有 macOS 版。
  • 单文件 exe 约 160 MB,每次启动都要自解压;所以另外出了 onedir 结构的 7z 绿色包(约 114 MB),解压一次,之后直接运行、删文件夹即卸载。
  • 程序未做代码签名 ,首次运行 Windows 会弹 SmartScreen。Release 页附了 SHA-256,介意的话可以 pip install -r requirements.txt && python entry.py 从源码跑。
  • 离线声明说准:内置简体中文模型,默认识别全程在本机完成、不上传任何数据;首次切换到繁中 / 英 / 日 / 韩时会联网下载对应识别模型(只下载、不上传),之后离线可用。另一处联网是可选的截屏翻译(文本发给必应翻译 / MyMemory,可在设置里关闭)。

最有用的反馈

不是劝谁换工具,系统自带的够用就继续用。如果你也常在深色 IDE 里抠代码,或者需要回头找之前识别过的内容,可以试试。

如果某个截图识别失手,最有用的反馈是:原始截图(去掉敏感信息)+ 你期望的文本 + Windows 版本,提到 issue 里,我照着调预处理参数。

(叫 SnapOCR 的项目有好几个,这个是 q037180/SnapOCR。)

相关推荐
蜗牛87530 分钟前
个人机票监控开源项目:6 个平台、10 条通道的自托管方案
python
秋名山小白1 小时前
Playwright UI 自动化测试实战教程
python·ui
AI源码2 小时前
基于 Python 的汽车市场数据分析与可视化平台
python·数据分析·汽车
会飞锦鲤2 小时前
基于 SVM + HOG 的铸造缺陷检测系统
python·opencv·机器学习·计算机视觉·缺陷检测·图像分类·svm
starrysky8103 小时前
zipfile 中文乱码修复:把已知 GBK 旧 ZIP 解压到正确中文目录
python
用户91294046848424 小时前
Codex 从零到能交付(09):让 Codex 写有用的测试,而不是只测成功路径
python
2601_967987374 小时前
Debian如何配置Python调试工具
python·debian·pdb·调试工具·ipdb
MoRay4 小时前
放弃云端 Computer Use,我用 Python 手搓了一个带“物理防呆”的本地 GUI Agent 底座
python·github
青少儿编程课堂5 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:Bellman-Ford与SPFA含负权最短路及负环检测全解析
c++·python·算法·bfs·信息学竞赛