你正在看一个 YouTube 教程,视频里演示了一段很漂亮的 Python 代码。你暂停视频,想复制下来自己跑一遍。但手动打字太慢,还容易出错。你试了试鼠标选中文字——不行,视频帧里的文本根本选不中。

这个场景每个开发者都遇到过。本文会介绍三种从教程视频里复制代码的方法:macOS 自带的 Live Text(仅限 Safari)、系统截图加第三方 OCR 工具、以及快捷键驱动的 OCR 工具 Cheese! OCR。每种方法都有适用场景和局限,你可以根据自己的浏览器和播放器选择最顺手的那一个。

方法一:用 macOS Live Text(仅限 Safari)

如果你用的是 Safari 浏览器,这是最直接的方法。在 YouTube 或 B 站上暂停视频,把鼠标移到代码区域,光标会变成文本选择工具。你可以像选中普通网页文字一样高亮、复制代码。整个过程不需要安装任何额外软件。

这个方法依赖 macOS 的 Live Text 功能,它从 2021 年的 macOS 12 Monterey 开始内置。Live Text 对等宽字体的识别效果不错,代码区域只要分辨率够高(1080p 以上),识别准确率相当可观。

什么时候这个方法失效

Live Text 只在 Safari 里有效。如果你用 Chrome、Firefox、Edge、Brave 或 Arc 浏览器,暂停视频后光标不会变成文本选择工具——这些浏览器使用自己的渲染引擎,Live Text 无法访问其中的像素数据。同样,在 IINA、VLC 或大多数第三方 Mac 视频播放器里,Live Text 也不起作用。

另外,即使你在 Safari 里,如果视频分辨率太低(比如 720p 或更低),小字体的代码可能识别不全。Live Text 对多行代码的缩进支持也不好,粘贴后通常需要手动调整。

方法二:系统截图 + OCR 工具

这个方法适用于任何浏览器和播放器。按 Shift+Command+4 截取视频帧中的代码区域,保存为图片。然后打开一个支持 OCR 的 App(比如系统自带的预览、或者第三方 OCR 工具),从图片中提取文本。

如果你用的是 macOS 自带的预览 App,打开截图后可以直接选中文字——预览也集成了 Live Text。但这个方法有两个问题:一是步骤多(截图→打开→选中→复制),二是预览的 Live Text 同样受限于 Apple Vision 的识别能力,对特殊字符和缩进的处理不够理想。

什么时候这个方法失效

截图本身没问题,但 OCR 环节的准确率取决于截图分辨率和字体大小。720p 视频里的小字体代码,识别结果可能包含大量错误。另外,如果你需要频繁复制代码,每次都要走一遍截图→打开→复制的流程,效率很低。

方法三:用 Cheese! OCR 一键识别

Cheese! OCR 是一个专门解决这类问题的 Mac 应用。它通过读取屏幕像素(需要屏幕录制权限)来识别文本,不依赖浏览器或播放器的渲染引擎。所以无论你用 Chrome 看 YouTube、用 IINA 看本地视频、还是在任何 App 里看教程,它都能工作。

默认快捷键是 Shift+Command+E。按下后,鼠标变成十字准线,你框选视频中的代码区域,识别结果会直接复制到剪贴板。整个过程不到两秒。Cheese! OCR 底层使用 Apple Vision 框架,识别准确率与 Live Text 相当,但适用范围更广——它可以在任何屏幕上工作。

识别出的代码会丢失缩进,这是所有 OCR 工具的通病。粘贴到编辑器后,你需要手动重新缩进。另外,建议把代码运行一遍来验证,重点检查 0/O、1/l、5/S 这些容易混淆的字符。

三种方法对比

方法 最佳场景 局限
Live Text(Safari) 只用 Safari 看视频,偶尔复制代码 其他浏览器和播放器无效
截图 + OCR 工具 任何浏览器/播放器,不介意多几步操作 步骤多,效率低
Cheese! OCR 需要频繁复制代码,追求一步到位 需要安装应用并授予屏幕录制权限

常见问题排查

OCR 代码后最常见的问题是缩进丢失和字符混淆。缩进只能手动修复,没有捷径。字符混淆方面,建议用编辑器的搜索功能查找 0/O、1/l、5/S、rn/m 这些常见错误对。如果你使用了 Fira Code 或 Cascadia Code 这类连字字体,->=> 可能被识别成单个字符,导致语法错误——在视频设置里关闭连字字体可以缓解这个问题。

另一个常见问题是屏幕录制权限。Cheese! OCR 首次启动时会请求屏幕录制权限,你需要在系统设置中手动授权。如果拒绝,应用无法读取屏幕像素,也就无法识别文本。授权后,应用会像 macOS 截图工具一样在后台运行,不会影响你的正常工作。