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?
使用你能找到的最佳版本,框選緊湊的區域,設對語言,然後在編輯器裡修正剩下的誤讀。低解析度或壓縮過度的片源永遠不可能完美識別,所以要儘量拿到畫面最乾淨的版本,把區域收窄到只覆蓋字幕,匹配好識別語言,並提前做好手動修正個別行的準備。