苹果扫描文件提取文字:在Mac上随时提取屏幕上的文字和解析二维码
苹果扫描文件提取文字:在Mac上随时提取屏幕上的文字和解析二维码在 Keyboard Maestro 中,「Simulate keystroke」方法在按下快捷键后就已经完成,此时它会继续执行剩下的动作,但此时我们的截图操作还没有完成,所以我们需要让 Keyboard Maestro 等待我们截图完成以后再进行接下来的操作。调用系统剪贴板二维码解析我将这个自动化脚本放在了 GitHub 上,各位可以直接下载使用: http://t.cn/A62bMu4b通过 Keyboard Maestro 的「Simulate keystroke」方法可以模拟按下「将所选区域的图片拷贝到剪贴板」,此时调用系统截图功能
在使用 Mac 的过程中,我们经常遇到的一个麻烦就是,无法复制屏幕上显示的文字。有很多种场景会导致这种情形,例如
- 这段文字上包含超链接,每次试图复制时都会在新标签页中打开超链接
- 这段文字是网页或应用程序中的表单里的一个选择栏,每次点击时都会弹出所有可选择的项目
- 网页受到保护或者应用程序里不让选中这段文字
- 这段文字在应用程序的菜单栏中
- 这段文字并不是文本,而是一张图片
还有很多种场景会导致我们无法复制屏幕上显示的文字,而解决这个麻烦的一个有效方法就是 OCR (Optical Character Recognition,光学字符识别)。想必各位对 OCR 并不陌生,最近几年 OCR 的技术越来越成熟,相关的软件越来越多。简单的说 OCR 就是检查图片中的字符,并将其翻译成计算机文字。在自动化软件 Keyboard Maestro 9 中,自带了 OCR 方法,我们可以通过 Keyboard Maestro 做一个自动化动作,实现在 Mac 上随时提取屏幕上的文字。
通过 OCR 识别中文
除了识别中英文以外,另一个比较重要的工作就是解析屏幕上的二维码,这同样可以通过 Keyboard Maestro 实现。
二维码解析
我将这个自动化脚本放在了 GitHub 上,各位可以直接下载使用: http://t.cn/A62bMu4b
提取屏幕上的文字准备工作
- 安装 Keyboard Maestro 9
使用指南
- 下载 macro,并导入到 Keyboard Maestro 中,且激活这个 macro
- 将系统的「将所选区域的图片拷贝到剪贴板」功能快捷键设置为 ⌥Option ⌘Command Space
- 通过快捷键 (我设置的是 F9) 触发该 macro,根据语言选择「中文识别」或「英文识别」,此时调用系统截图工具,对需要识别的文本进行截图
- 截图完成后,Keyboard Maestro 会对截取的内容进行 OCR,并将结果拷贝至剪贴板,同时发送通知
原理解析
Step 1-调用系统剪贴板
通过 Keyboard Maestro 的「Simulate keystroke」方法可以模拟按下「将所选区域的图片拷贝到剪贴板」,此时调用系统截图功能
调用系统剪贴板
Step 2-等待截图完成
在 Keyboard Maestro 中,「Simulate keystroke」方法在按下快捷键后就已经完成,此时它会继续执行剩下的动作,但此时我们的截图操作还没有完成,所以我们需要让 Keyboard Maestro 等待我们截图完成以后再进行接下来的操作。
这里有一个很有用的技巧,那就是通过 Keyboard Maestro 的「Pause Until」方法,即一直等待,直至达到某个条件。
我们在截图时需要进行的操作时,按下触控板,然后滑动,再松开。我们可以通过这个方式让 Keyboard Maestro 等待我们截图操作完成。
- 暂停 macro,直至鼠标左键按下,此时我们开始选择截图区域
- 暂停 macro,直至鼠标左键松开,此时我们已经完成截图区域的选择,系统也完成了截图操作
- 等待 0.5 秒,保证截图的内容在剪贴板中
等待截图完成
Step 3-OCR 系统剪贴板
通过 Keyboard Maestro 的「OCR System Clipboard」方法可以对剪贴板中的内容进行 OCR,可以根据具体的内容选择识别的语言。我们将识别后的内容依然存入剪贴板。
OCR 系统剪贴板
Step 4-过滤多余空格
通过 Keyboard Maestro 的 OCR 方法识别出来的文本偶尔两端会有多余的空格,这时可以通过 Keyboard Maestro 的「Filter」方法对其进行过滤,仍然将过滤后的文本存入剪贴板。
过滤多余空格
Step 5-发送通知
因为 OCR 文本并不具备 100% 的准确度,这是由两方面决定的,一方面是我们截图时是否将待识别文本截的仔细,另一方面则是程序本身并不保证 100% 准确度。于是,我们在识别完成后发送了一个系统通知,这样我们就能方便的知道识别后的文本是什么。
发送通知
解析屏幕上的二维码准备工作
- 安装 Keyboard Maestro 9
- 通过 Homebrew 安装命令行工具 zbar: brew install zbar
使用指南
- 下载 macro,并导入到 Keyboard Maestro 中,且激活这个 macro
- 将系统的「将所选区域的图片拷贝到剪贴板」功能快捷键设置为 ⌥Option ⌘Command Space
- 通过快捷键 (我设置的是 F9) 触发该 macro,根据语言选择「二维码识别」,此时调用系统截图工具,对需要解析的二维码进行截图,可以将截图区域设置的大一些,这样能够保证截图包括了整个二维码的全部信息
- 截图完成后,Keyboard Maestro 会对截取的内容进行二维码解析,并将结果拷贝至剪贴板,同时发送通知
原理解析
这个 macro 中有很多的步骤跟「提取屏幕上的文字」相同,相同的部分不再赘述,仅对其中不同的地方加以解析。
Step 1-调用系统剪贴板
Step 2-等待截图完成
Step 3-将截图存储成文件
通过 Keyboard Maestro 的「Write System Clipboard to File」方法可以将截图保存成文件,同时暂停 macro 0.5 秒保证截图保存完成。
将截图存储成文件
Step 4-解析二维码
通过命令行工具 zbarimg 来解析二维码,解析后的内容开头是 QR-Code:,使用 sed 命令来提取这部分内容之后的元素,这才是二维码解析后的内容,并将这内容存储到系统剪贴板。
解析二维码
Step 5-删除文件及发送通知
在二维码解析完成后,通过 Keyboard Maestro 的「Delete File」方法删除截图,同时发送通知,这时就可以在通知中看到二维码的识别结果。
删除文件及发送通知
小结通过 Keyboard Maestro 和 OCR 能够提取屏幕上的任何文字,通过 Keyboard Maestro 和 zbar 能够识别屏幕上的二维码,自动化操作给我们的工作带来了很大的便利。我们还可以用这一套流程做很多其他的事情,例如截取一个公式,并将其识别为 LaTeX 代码等等。这篇 Keyboard Maestro 的技巧虽然比较简单,但也希望能给各位更多的启发,用自动化来提高生产力。