# Keyboard Maestro x OCR，在多语言环境中轻松抓取文字

> 本文公开全文。

原文：https://utgd.net/article/9528

自 macOS 12 以降，OCR（Optical character recognition，光学字符识别）已经成为 macOS 系统级功能。然而，距离随时随地抓取文字，还有一段路需要走。

首先是抓取文字的范围，系统仅支持网页、图片和 PDF，相较之下，截图可以说是一剂兜底方案，对所有 App 都来者不拒；其次，语种也是个问题，识别一种语言并非难事，但是在多语言环境下，要把 OCR 做得考究并不轻松。OCR 工具通常要求预设一个主要语言，比如中文（包括中英混排），可一旦遇到小语种，就要去设置里调整语言参数，用完还得记着改回中文。我曾经识别过一张日本插画的落款，随后识别其他内容总是出乱码，才想起来忘了改回中文，丢三落四。

理想的截图 OCR 工具，应当本身支持几乎所有语种，同时又可以指定常用语言，让人驰骋多语言的网络环境。本文介绍一套基于 Keyboard Maestro 的截图 OCR 动作，满足前述需求，免去屡改参数之苦。

Keyboard Maestro 动作下载（GitHub）

本组动作快捷键为 ⇧Shift\-⌘Command\-0，按下后将出现 Palette 菜单，汇集常用语言，选择其一即可开始工作；等你截好图后，Keyboard Maestro 会主动识别其中的文字并存入剪贴板。

## Keyboard Maestro 中的 OCR 引擎：tesseract

可靠的 OCR 引擎是截图 OCR 基础。Keyboard Maestro 内置 tesseract，该离线 OCR 引擎有三十多年的开发历史，目前开源并由 Google 赞助开发（所以你不需要“内购解锁”）。我们最在意的是，第一，tesseract 支持简体中文，同时也能识别上百个小语种，正中多语言环境之下怀。

免费、离线、多语言，万事俱备，只欠东风。tesseract 自称开箱即用（out of the box），但终归需要一些代码知识，而且每次升级，往往要重新调整脚本；经过 Keyboard Maestro 的打包优化，内置其中的 tesseract 才算得上开箱即用：不需要编写任何代码或输入任何命令行，Keyboard Maestro 将一个命令行工具彻底图形化，点几次鼠标选取目标语言（需要联网下载语言包），就完成了 OCR 引擎的配置。你可以从前文提供的动作中随意复制一个，试着更改其预设语言。

大致了解 tesseract 后，先将 Keyboard Maestro 动作的其余步骤搁置一旁，直奔核心问题：多语言环境。在技术上，几乎很难自动识别图中文字的语种（有上百个语种，计算量可想而知），一般要求预先指定。为了照顾日文、韩文、法语等小语种，需要一种方便的交互方式，以供随时选择语言。这时候，就轮到 Palette 粉墨登场，这相当于一个悬浮工具栏，可以把常用功能搁在一个地方，方便取用（不熟悉 Palette 的读者可以阅读我之前的 文章）。

前文提供的 Keyboard Maestro 动作共享了同一个快捷键 ⇧Shift\-⌘Command\-0，按下之后即可显示所有配备这一键位的动作。随后可以手动点选语言，也可以按下目标语种的前一两个字母（Keyboard Maestro 已将这些字母高亮显示）。后续增加的动作建议延续同一快捷键，这样无论增添多少语种，都不会加重背诵快捷键的负担。

## 串联截图和 OCR

Keyboard Maestro 内置 OCR 引擎可以读取多个渠道的图片，包括图片文件或者系统剪贴板。前者是最朴素的思路，置截图于桌面，用完再删除，貌似简捷，实则操作复杂，需要层层设计、避免误删桌面文件；从系统剪贴板获取图片会更简单漂亮，也让“截图 OCR”名副其实。

Keyboard Maestro 动作由一系列步骤组成，每一步执行完毕即进入下一步，但是截图操作有点特殊，我们总要比划一下、框出合适的区域，而在默认情况下，还没来得及比划，就直接进到了 OCR 阶段，此时当然识别不到屏幕上的文字。对此，需要用上“Pause”（等待）模块，等待截图操作完成，完整流程如下图紫色部分所示：

- 模拟截图并保存到剪贴板的快捷键 ⌃Control\-⇧Shift\-⌘Command\-4；

- 先等待按下光标，再等待抬起光标，这一落一起之间就是整个框选屏幕区域的过程，你可以自己试一试，这两个小动作正好是截图操作的起点与终点；

- 稍微等待一秒，因为截图的分辨率可能很高，需要一些时间写入剪贴板，如果电脑较新或许不需要这段时间，可自行调整；

- 进入 OCR 环节。

OCR 识别引擎贡献九分蛮力，Keyboard Maestro 步骤串联提供一分巧劲，整个截图 OCR 动作至此完成。

Keyboard Maestro 刚刚引入 OCR 功能时，不少用户奔走相告，试着制作截图 OCR 动作，但是都不如意，最大的坎儿就是连不上截图和 OCR 两个步骤，其实抓住光标起落这种标志性动作，就能让截图 OCR 动作顺利运作起来。这种对日常工作流的观察也是一种乐趣，一旦找到了关键环节，往往不需要写代码就能做出流畅的自动化动作。

## 小结

OCR 在不少工作流程中都是核心环节：将图片 PDF 转换为可复制的文档，需要 OCR；Evernote 搜索图中文字的功能，基于 OCR；就连最简单的“抓取屏幕文字”，也离不开 OCR。

支持 OCR 的工具日新月异，本身是一件好事，但是林子大了，难免出现各自为政的情况，识别质量参差不齐、支持语言范围各不相同……这时候，亟需一个统一的、跨应用的解决方案。macOS 原生支持居功厥伟，一般浏览图片和 PDF 时，很少需要其他工具；不过，在多语种和截图识别两个方向上，可能还是要 Keyboard Maestro 这类第三方工具帮一把。

本文是 Keyboard Maestro & OCR 的一个案例，打通了获取截图和 OCR 处理这两大关键步骤。在文本流程上可添砖加瓦，例如配合文字格式清理动作，在识别屏幕文字后删除多余空格和换行符；或者，截图后旋即翻译，等等（读者可以和我交流这类功能）。总之，借助 Keyboard Maestro 这样的自动化工具，可以让 OCR 成为一个“组件”而为我所用，融入不同的工作流。

---

[前往标准阅读页](https://utgd.net/article/9528?audience=web)
