TL;DR:OCR 出現亂碼幾乎都是輸入端的問題,不是設定的問題。毀掉字幕 OCR 準確率的四大元凶是:來源解析度太低、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 能做到百分之百準確。在畫質乾淨、解析度高、背景單純的影片上,準確率可以非常接近完美,但一支經過壓縮、畫面雜亂又用了特殊字型的下載檔,多少還是會留下幾個誤讀。想靠反覆微調設定來追求完美,通常是比較慢的做法。
更快的做法順序剛好相反:先盡力處理輸入端——用能拿到的最高解析度、框緊擷取範圍、設對語言——再用編輯器修正剩下的少數誤讀,而不是一直重跑。在 Mac 上,GeekLink 會在你的機器上本機執行 OCR,讓你設定擷取範圍和辨識語言,接著在匯出 SRT 之前,讓你在內建編輯器裡修正任何辨識錯誤的行。你只要逐行看過去,修正錯的那幾行,匯出一次就好——這幾乎總是比一直尋找能完美讀出困難來源的設定組合來得快。
面對困難的來源,沒有任何 OCR 是完美的,所以要先處理好輸入端,再用編輯器修正剩下的誤讀,而不是一直換設定重跑。
常見問題
為什麼我的 OCR 結果滿是錯字?
通常是來源解析度太低,或辨識語言設錯,這兩項要先檢查。壓縮過的影片導致文字模糊、帶方塊雜訊,是最常見的原因;而語言設定不符,會讓原本可讀的文字從一開始就變成亂碼。先從你手上解析度最高的版本開始,並確認辨識語言和字幕相符。
OCR 把字幕和畫面上的其他文字混在一起了,該怎麼避免?
把 OCR 擷取範圍框得緊一點,只框住字幕行,並透過顏色或範圍篩選,忽略標誌和字卡。當選取範圍包含浮水印、頻道標誌或畫面字卡時,這些文字就會被一起讀進你的字幕行裡。畫面下方一條窄窄的範圍,再搭配顏色和語言篩選,就能只留下字幕內容。
我的 OCR 結果語言不對,或整個都是亂碼。
這代表辨識語言和字幕不符;把辨識語言設定成字幕的語言後重新執行即可。如果 OCR 預期的是英文,但字幕實際上是中文、日文或韓文(或反過來),每個字都會出錯。執行前先設對語言,通常一步就能把完全讀不出來的結果修好。
字幕 OCR 能做到百分之百準確嗎?
不行——在畫質乾淨、解析度高的來源上,表現會非常好,但困難的來源永遠需要人工快速檢查一遍。經過壓縮的下載檔、雜亂的背景,以及特殊字型,都會留下幾個誤讀。最快的做法,是先處理好輸入端,再用編輯器修正剩下的行,最後才匯出。
低畫質影片該怎麼做 OCR?
使用你能找到的最佳版本,設定緊縮的擷取範圍和正確的語言,再用編輯器修正剩下的錯誤。解析度太低或壓縮過度的來源,永遠沒辦法做到完美 OCR,所以要盡量找最乾淨的畫面、把範圍縮到只框住字幕、對好辨識語言,並預留時間手動修正幾行。