TL;DR:OCR 乱码几乎总是输入端的问题,而不是设置的问题。拖垮字幕 OCR 准确率的四大元凶是:低分辨率片源、框选区域超出字幕行范围、文字背后的杂乱背景、以及识别语言设置错误——把这四点解决好,准确率会明显提升。如果片源本身画质就太差,任何 OCR 都做不到完美,这时在编辑器里快速人工校对一遍,比反复调整设置更省时间。
为什么 OCR 提取出来是乱码?
字幕 OCR 读取的并不是一份字幕"文件"——根本没有这种文件存在。它读取的是逐帧的文字图片,把看到的形状转换成字符。所以输出结果的好坏,完全取决于这些图片有多清晰。如果画面模糊、背景杂乱,或者是一种系统没被告知要识别的语言,读取结果就会出错,表现为错字、丢字,或整行看起来语无伦次。
这就是需要转变的关键认知:输出乱码时,问题几乎从来不是某个隐藏的准确率开关,而是输入端四件事之一。实际排查下来,字幕 OCR 出错的根源通常是片源分辨率过低或压缩过度、框选区域抓取范围超出了字幕行、文字背后的背景杂乱或对比度过高,又或者识别语言设置错了。本文接下来会逐一讲解这四点。
字幕 OCR 乱码是输入端的问题:模糊的画面、框选区域不准、干扰背景,或者语言设置错误——而不是某个坏掉的开关需要切换。
片源分辨率低或压缩过度
这是导致误读的头号原因。当视频分辨率低、或经过了狠压缩,文字的边缘就会丢失——变得模糊、糊成块状,OCR 根本分不清一个"m"和"rn"的区别,或者两个长得相似的汉字。再怎么调参数,也没法让模糊的文字重新变清晰。
解决办法是:给 OCR 喂它能得到的最干净的画面。始终使用你能拿到的最高分辨率视频版本——1080p 片源的 OCR 效果,远好于同一段视频被压缩过的 480p 转发版本。如果要在聊天软件里下载的小体积文件和原始文件之间选,就用原始文件。如果你手头确实只有低画质的片源,就要调整预期——无论如何都会有一些错误,正确的思路是事后修正,而不是执着于追求一次完美的运行结果。
模糊、糊成块状的文字是导致 OCR 乱码的头号原因;先从你能拿到的最高分辨率版本开始,因为 1080p 片源的识别效果远好于压缩过的 480p 版本。
OCR 框选区域抓取范围超出了字幕
如果你框选给 OCR 的区域里,除了字幕行还包含了频道台标、角落水印、屏幕内字幕、比分板,或烧录的片尾字幕,这些文字也会一并被读取,混进你的字幕行里变成垃圾内容。字幕本身可能读取得很准确,但输出结果看起来是坏的,因为它被粘上了一些从来不属于对白的文字。
解决办法是把 OCR 区域紧贴着字幕行框选,通常是画面底部一条窄窄的区域,不包含其他任何内容。GeekLink 支持手动设置这个区域,还能按颜色、字号、语言进行过滤,这样只有字幕会被读取,台标或屏幕内字幕会被排除在外。当片源本身没问题、但输出依然很乱时,收紧框选区域是最快见效的单项改进。
如果 OCR 区域覆盖到了台标或屏幕内文字,这些内容就会作为垃圾内容混进你的字幕行——把区域紧贴着字幕框选就能解决。
文字背后的背景杂乱或对比度过高
字幕是叠加在画面之上的,当画面本身明亮、细节丰富或运动剧烈时,文字就可能和背后的内容融为一体。白色字幕出现在雪景画面上,或者背景高光不断变化时,确实很难分辨清楚——字符的边缘会消失在背景里,导致误读。
跨多帧读取文字在这种情况下会有帮助,因为同一句字幕在屏幕上停留期间,背后的画面在持续变化:有些帧背后正好是更干净、更暗的区域,同样这几个字在那些帧里就能被正确读出来。紧贴字幕框选的区域,加上正确的识别语言,也能帮助识别引擎锁定文字本身而不是被背景干扰。不过要现实一点:字幕与背景对比度极低的情况,始终是最难处理的场景,个别行可能仍需要手动修正。
明亮杂乱的背景会让文字与画面融为一体导致误读;跨帧读取能捕捉到较干净的瞬间,但对比度极低的字幕依然是最难处理的情况。
识别语言设置错误
OCR 在知道应该识别哪种语言时,效果会好得多,因为它会依据该语言字符的形状来判断自己看到的是什么。如果 OCR 设置的是英文,但字幕实际是中文、日文或韩文——或者反过来——那么从第一个字符开始,输出就会是一团乱码,因为识别引擎一直在用错误的文字体系去匹配。
解决办法只需十秒钟:运行之前,把识别语言设置成与字幕相符。如果视频画面上同时有两种语言(比如双语字幕),就选择你真正需要提取的那一种,或者按你工作中最重要的那种语言来运行。先把这一点设对,往往能把一个完全不可读的结果变成干净的输出,所以在怀疑其他原因之前,先检查一下这个设置。
如果识别语言与字幕语言不匹配,输出就会是乱码——运行前先把语言设置成字幕对应的语言,这也是最先该检查的一点。
OCR 依然不够完美时该怎么办
坦白说,OCR 是有上限的:面对困难片源,没有任何 OCR 能做到 100% 准确。在画质干净清晰、背景简单的高分辨率视频上,它能做到非常接近完美;但对于经过压缩、背景杂乱、字体样式化的下载资源,总会留下一些误读。想靠反复微调设置来追求完美,通常是一条很慢的路。
更快的做法是反过来:先在能做到的范围内把输入端处理好——用能拿到的最高分辨率、把区域框紧、设对语言——然后在编辑器里修正剩下的少数误读行,而不是反复重跑。在 Mac 上,GeekLink 在你的电脑本地运行 OCR,让你设置区域和识别语言,然后可以在内置编辑器里修正误读的行,再导出 SRT。你逐行看下来,改掉少数几处错误,一次性导出——这几乎总是比反复摸索出一套能完美识别困难片源的设置组合要快得多。
面对困难片源,没有任何 OCR 是完美的,所以先把输入端处理好,再在编辑器里修正剩下的误读,而不是反复更换设置重新运行。
常见问题
为什么我的 OCR 全是错字?
通常是片源分辨率过低,或者识别语言设置错误;先把这两点都检查一遍。压缩视频导致的模糊、块状文字是最常见的原因,语言不匹配则会让原本可读的文字从一开始就变成乱码。先从你能拿到的最高分辨率版本入手,并确认识别语言与字幕语言一致。
OCR 把字幕和屏幕内文字混在了一起,怎么解决?
把 OCR 区域紧贴字幕行框选,并按颜色或区域过滤,忽略台标和屏幕内字幕。当选取的区域包含水印、频道台标或屏幕内字幕时,这些文字就会被读进你的字幕行里。在画面底部框选一条窄区域,再加上颜色和语言过滤,就能只保留字幕本身。
我的 OCR 输出语言不对,或者完全是乱码。
识别语言和字幕语言不匹配;把它设置成字幕对应的语言后重新运行。如果 OCR 设定的是英文,但字幕实际是中文、日文或韩文(或者反过来),每一个字符都会出错。运行前设对语言,通常一步就能把完全无法读懂的结果修好。
字幕 OCR 能做到 100% 准确吗?
不能——在干净清晰的高分辨率片源上表现非常好,但困难片源始终需要人工快速核对一遍。压缩过的下载资源、杂乱背景、样式化字体都会留下一些误读。最快的流程是先处理好输入端,再在导出前于编辑器里修正剩余的行。
低画质视频该怎么做 OCR?
使用你能找到的最佳版本,框选紧凑的区域,设对语言,然后在编辑器里修正剩下的误读。低分辨率或压缩过度的片源永远不可能完美识别,所以要尽量拿到画面最干净的版本,把区域收窄到只覆盖字幕,匹配好识别语言,并提前做好手动修正个别行的准备。