博客

如何让截图的 OCR 识别结果更准确

发布于 · OCR, 文字识别, 技巧, 准确率

如何让截图的 OCR 识别结果更准确

文字识别的好坏取决于你给它的像素。裁紧一点、保住分辨率、避开倾斜和杂乱背景,并了解它的语言限制。

OCR 进步很大,但它和人眼遵循同一条规律:清晰、平直、光线好的文字好认;压在花纹上又小又歪的文字就不行。按下 OCR 按钮前多做几个习惯动作,结果就是从干净的复制稿和一串猜测之间的差别。

裁到文字本身,而不是圈住周围

识别只作用于选区。文字周围多出来的界面元素会变成噪声:图标、边框和标签可能被误读成字符,或者把一行拆开。

  • 选区只框文字块,留一点小边距,别框整个窗口。
  • 两栏并排时分两次截,太宽的选区会把跨栏的行连在一起。
  • 只要一个值,就把这个值和它的标签一起裁下来。

保住分辨率

OCR 需要像素。一张为了塞进聊天窗口而缩小的截图,可能已经小到读不出来。

  • 在 100% 或更高的缩放下截图,而不是先把页面缩小。
  • 在 Retina 屏幕上截到的是物理像素,这会有帮助。
  • 如果来源是视频或照片,截取前先暂停或放大;不要把模糊的图放大来指望 OCR 恢复细节。

避免倾斜和透视变形

斜着走的文字行更难切分。对屏幕的照片,先用编辑器的裁剪视图把图摆正再识别。截图里的文字本来就是水平的,之后不要再旋转它。

给文字足够的对比度

OCR 靠边缘区分字符。遇到下面这些情况它会吃力:

  • 白底上的浅灰字,或黑底上的深灰字。
  • 文字后面是照片或渐变。
  • 高亮或标注盖住了行的一部分。

对比度不好时,回到状态更好的画面重新截取。也可以把行周围杂乱的背景裁掉,只留下文字和一条干净的底。

在截图上运行 OCR · 1280 × 800

了解语言限制

InSnap 的 OCR 在本机运行,中文、英文以及拉丁字母语言(含带重音符号的字符)都处理得很好。日文假名、韩文和俄文不能可靠识别;遇到这些文字,不要承诺能拿到干净的复制稿。艺术字体、手写和装饰性字体同样不在它擅长的范围内。

如果文档混用多种语言,只对需要的那部分跑 OCR,并核对结果,而不是假设整块都对。

留意长得像的字符

再好的 OCR 也会混淆:

容易混淆例子
数字零和字母 O0 与 O
数字一、小写 l、竖线1 与 l 与 ``
S 和 5S 与 5
逗号和句点1,000 与 1.000

对编号、订单号、代码和价格,把复制出来的文字和图片对一遍。发票号里错一位数字,比重新打这一行麻烦得多。

用放大镜查看细节

识别前的检查清单

检查原因
文字是平直的吗?倾斜会破坏行切分
屏幕上的字够大吗?OCR 需要像素
背景干净吗?花纹会变成噪声
对比度够强吗?边缘决定字符
语言支持吗?假名、韩文和俄文不可靠
只裁了一个文字块吗?分栏和混杂界面会干扰排版判断

常见问题

为什么明明看得清的一行,OCR 却漏掉了?

这一行可能太小、有倾斜、对比度低,或者用了识别器支持不好的文字。裁近一点、在更高缩放下截取,并确认语言是否受支持。

OCR 能读屏幕照片里的文字吗?

有时可以,前提是照片清晰、文字平直。透视和反光通常会影响准确率;先用编辑器把图摆正、裁紧,再运行 OCR。

OCR 能离线用吗?

可以。识别在你的电脑上运行,文字留在本机。代价是模型只支持有限几种文字,具体见上面的语言限制。

下一张截图,只需一个快捷键。

macOS 14.4+(Apple 芯片和 Intel)· Windows 10+(64 位)