为什么从视频里复制文字这么麻烦

很多人下意识会去试三连击、Cmd+C、Cmd+V,然后才反应过来:视频不是网页。屏幕上看到的"文字"其实是画面的一部分,是从 H.264 或 HEVC 解码出来的一连串位图。终端里的命令、PPT 上的要点、视频底部的角标,全是画上去的,不是文字。

这件事比普通截图识字更棘手,原因有三个:

这三个问题 OCR 引擎都解决不了——它们不在 OCR 这一步,而在视频送到屏幕的方式上。好消息是:日常需求里的大多数场景,比如 B 站的编程教程、网易云课堂的录播、飞书会议的回放、内部的 Loom 演示,画面都是正常渲染、正常截图的。关键是:暂停在对的那一帧之后,要选对工具。

先试实况文本(顺便搞清楚它能用在哪里)

如果视频是在 Safari 里播放的,Apple 的实况文本是最省事的路:

  1. 暂停视频。
  2. 在画面上点右键。
  3. 选择"显示实况文本"(菜单项在系统识别到可选文字时才会出现)。
  4. 框选你要的文字,复制。

这能成的原因是 Safari 基于 WebKit,Apple 把 WebKit 和 Vision 框架做了深度集成。一旦暂停,WebKit 就把当前画面作为一张静态图交给系统,Vision 在其上做识别,播放器叠加一层可选层。无需额外应用,无需记快捷键。

但有一个细节绝大多数文章都没讲清楚:实况文本对视频画面的支持仅限 Safari。Apple 没把这个钩子开放给其他浏览器,而 Chrome、Firefox 走的 GPU 合成路径会绕开实况文本要检查的图层。截至 macOS Sonoma 和 Sequoia,在 Chrome、Firefox、Brave、Arc、Edge 中暂停视频,都没有"显示实况文本"这个选项。Mac 版 Chrome 能对普通图片做实况文本,但对 video 元素的当前帧不行。

实况文本不奏效的地方

一旦走出 Safari,视频画面上的实况文本就消失了。从我们的实际使用看,这覆盖了相当一部分常见场景:

这并不是要否定实况文本。在它覆盖的范围里——照片、预览、备忘录、Safari 的图片和视频——它是一项相当出色的系统能力。它只是不适合"教程在 Chrome、录像在腾讯会议、PPT 在 B 站"这种现实情况。

真正能跨场景搞定的工作流

我们自己日常在用、也是 Cheese! OCR 围绕设计的工作流,是把 OCR 看作一个系统层操作,而不是某个浏览器的功能:

  1. 暂停视频。按空格。让播放器停一下。
  2. 按下 OCR 快捷键。Cheese! OCR 默认是 ⇧⌘E。屏幕变暗,出现十字光标。
  3. 框选包含文字的区域。教程里的终端窗口、PPT 上的某条要点、网课里的板书——按需框选。
  4. 粘贴。识别出来的文字已经在剪贴板里。Cmd+V 到笔记、代码编辑器、微信对话框,都行。

这套流程不挑播放器,因为 Cheese! OCR 不去问浏览器、video 元素或者会议客户端"你在显示什么"。它通过 macOS 屏幕捕获 API 直接从显示输出抓像素,然后在本地用 Apple Vision 做识别。从操作系统的视角看,这跟 ⇧⌘4 是同一类操作——只要东西在屏幕上画出来了、又没有被 DRM 主动遮掉,都能截下来识别。

有两个实操层面的好处值得一提。第一,全程本地。Apple Vision 完全在你的 Mac 上跑,截下来的画面不离开本机,Cheese! OCR 没有任何网络权限。读机密会议录像或者尚未发布的课程材料时,这点比平时更重要。第二,有历史记录。Cheese! OCR 把最近的识别结果保存在一个可搜索的列表里。如果你从一段教程里连抓四段代码截图,不会因为抓最新的一段就丢掉前面三段。

真实使用场景

编程教程

B 站、网易云课堂、慕课网、Udemy、Coursera。讲师在屏幕上敲一段代码,你想原样拿到自己的编辑器里、又懒得重打。暂停、OCR、粘贴。现代 Apple Vision 在主流编程字体的录屏上识别得相当稳,通常只需要修一下缩进,偶尔在低码率流里把 l1 改一下。

网课 PPT

录播里讲师在念一张 PPT,上面有一条定义、一条公式、一段引文。这一页停 20 秒就翻篇了。暂停、框选 PPT 区域、OCR、走人。比拖回去再暂停再重打要快得多。

会议聊天面板

录播会议里的聊天框里经常有最有价值的提问——主持人当场回答了,但没有重复一遍问题。把聊天面板 OCR 出来,问题原文就有了。

带要点的演讲视频

B 站上的技术分享、内部全员会回放、年会主题视频。讲者啪啦啪啦过完一页五条要点的 PPT。你想把这五条记进会议笔记。OCR、粘贴,搞定。

同事录的腾讯会议、飞书、Loom 演示

同事录了个演示,告诉你某个工具怎么配置,画面里有命令行片段。录像在 Chrome 或者 Loom 桌面端。实况文本帮不上忙。全局热键 OCR 工具就能。

真正能提升效率的小技巧

用 IINA 做逐帧步进。IINA 是一款基于 MPV 的开源 Mac 播放器,做工很精致。方向键支持逐帧前进。当你要的文字在屏幕上闪一下不到一秒时,用 IINA 可以精准停在文字最清晰的那一帧再 OCR。

挑高分辨率的那一帧暂停。如果一段教程在讲师全身镜头和录屏特写之间切来切去,要 OCR 就 OCR 录屏特写——同样的代码在全身镜头里太小了,编解码器留不住细节。

文字太小先放大网页再暂停。大多数浏览器对 B 站、YouTube 这类网页播放器都支持 Cmd+加号。放大一档常常能把 12px 字幕拉到 18px,识别准确率有明显提升。

用 OCR 历史拼接多帧。较长的代码段经常一帧塞不下。逐帧捕获,Cheese! OCR 会把每一次识别都留在可搜索列表里,最后到编辑器里把片段拼起来即可,不会丢中间结果。

有现成字幕就别 OCR。如果视频带字幕、你又只关心台词,字幕一定比 OCR 烧录字幕更准。视频画面 OCR 适合的是字幕里没有的内容——代码、PPT 要点、聊天面板、屏幕共享文档——而不是替代字幕本身。

用之前需要知道的几个限制

视频画面 OCR 好用,但也不是万能。几条诚实的限制:

这些都不是致命问题,无非是和普通截图识字一样的取舍——只是因为视频被压缩了两次(一次编解码,一次播放器缩放),上述问题被略微放大。只要主动暂停在干净的一帧上,现代 Apple Vision 在主流教程录屏上的识别准确率,已经稳定到可以省掉重打这一步。

一句话总结:视频本质就是一连串图片,所以只要你能截到一张干净的图,OCR 就能用。先暂停、再截屏、再 OCR。剩下的,就是根据当前播放器选对工具。