Aray 發表於 2019-7-31 07:11:59

Subtitle Edit 進階使用技巧和心得

本文最後由 Aray 於 2019-9-14 01:03 PM 編輯


特別聲明
1.本文原創僅精研獨發
2.謝絕任何轉載



更新記錄:
2019/09/14 新增 Part.IV 正規表示式 / 1.對話單行轉對話雙行常用規則附件
2019/09/14 更新 Part.IV 正規表達式 / 8.中文全形拉丁字符附件
2019/09/04 更新 Part.IV 正規表達式 / 8.中文全形拉丁字符附件
2019/09/04 更新 Part.IV 正規表達式 / 10.Unicode不可見字符清除 (NetFlix) 表達式
2019/08/05 新增 Part.IV 正規表示式 / 10.Unicode不可見字符清除
2019/08/01 修改 Part.IV 正規表示式 / 2.無用空格清除
2019/07/30 首發



緣起

電影看得多了之後, 得出兩點:

1.靠譜的中文字幕遠比海量的片源重要, 也更難得, 很多時候花在找靠譜的字幕的時間比找片源的時間更多

2.電影載體隨着科技不斷在推陳出新, VHS->LD->VCD->DVD->BD->UHD…, 但靠譜的字幕卻能以不變應萬變

於是慢慢變得耐性, 沒有靠譜的中文字幕寧願先不看影片, 也不願被垃圾字幕耽誤了

大陸字幕組各種水準參差、敷衍隨性、虛浮功利, 基本直接忽略無視

因為找字幕, 有幾個名字經常見到會和R3字幕關聯在一起, Hill661205、Fatbibis、Linusmom、大姆哥, 這才找到精研

來精研混的時間不算長, 主要在字幕區混, 受益匪淺, 尤其是諸如Wb2013、Fatbibis等諸多達人OCR的幾乎零錯誤的字幕更是甚感敬佩, 這份認真, 是一種態度

現在把蒐集和OCR字幕官方字幕當成了一項很嚴謹的, 甚至有些吹毛求疵的興趣愛好

對相關的軟體也逐漸有了一些認知和體驗, IdxSubOcr、SubToSrt、esrXP、Subtitle Edit等軟體的使用, 精研論壇及網路有很多前輩高手已經有很多主題討論了, 從這貼到後續另一貼, 再到Ethan大這貼, 發現很多OCRer對Subtitle Edit有一些盲區, 由此記錄下了一些關於Subtitle Edit 及 Binaray Image Compare OCR模式的進階使用技巧和心得

經過近幾個月的逐漸累積、修改, 有了這篇文章, 由於語言習慣差異, 加之撰文水平有限, 難免不妥之處, 僅此班門弄斧希望能拋磚引玉, 望前輩達人提點指正



本文內容分五個部分:

Part.I 軟體版本
Part.II SE OCR 設定
Part.III 字型/字號/字庫(圖像資料庫)
Part.IV SE 用正規表示式(Regular Expression)來快速尋找及多重取代(Mutiple Replace)
Part.V 已OCR字幕影片目錄、字庫檔分享




Part.I 軟體版本

SE v3.5.3以前的版本, 用的是老的OCR via Image Compare的模式, 識別率差、效率低, 經常出現連字或跳字, 而且字庫之間不能匯入匯出

SE v3.5.3以後已經放棄這種模式, 關於這個問題, 我曾徵詢過軟體作者, 他說OCR via Image Compare存在很多不足, 而後來的Binaray Image Compare OCR模式擴展了很多數據項, 所以無法實現新舊版本字庫兼容, 無法使用老版本的字庫

SE v3.5.7後, Binaray Image Compare OCR模式基本穩定

使用 Subtitle Edit v3.5.9 (x64-bit) 從零開始建立字庫, 至今OCR了50多套BluRay/UHD字幕, 字庫共計5萬多字元, 現在通常標楷體、黑體字型的字幕最快10分鐘甚至更短時間可完成一份字幕OCR, 慢點30分鐘可完成一份字幕OCR, 這個過程遠比當初用SubToSrt建立字庫輕鬆, 得益於軟體本身的先進和藍光字幕的規範

Subtitle Edit v3.5.9 保留了兩種OCR方式:

1.Tesseract 3.02/4.00 OCR

這種方式是藉助Google的開源OCR引擎, 通過訓練、學習、建立字庫來進行文字辨識

曾嘗試訓練建立DFKai-SB(微軟華康標楷體)字庫, 實測優點是能快速建立不同字型的完整字庫, 缺點是對BluRay/UHD字庫的辨識仍然錯誤率高、效率低, 至今仍不是中文字幕OCR的最佳方式

2.Binaray Image Compare OCR

這種方式原理很笨很簡單, 卻是目前最適合BluRay/UHD字幕OCR的方式




Part.IISE OCR 設定

圖1: SE.OCR.01-匯入 OCR 界面


圖2: SE Binaray Image Compare OCR幾項設定的參考值




1.像素數是空的 / No of pixels space (Default 8)

值太大會影響對空格的辨識, 例如: 簡中字幕用空格替代標點符號, 另外有些字幕的對話之間用4空格位的

值太小會影響辨識準確度, 例如: 左右結構的漢字, 標點符號(…)

不同字型, 不同字號, 設定值不同, 以能辨識出空格為準, 實測:
SimHei            (黑體), 58 -> 34-35
SimHei            (黑體), 70 -> 38
DFKai-SB      (微軟華康標楷體), 70 -> 37
SimKai             (楷體), 58 -> 32

中文字幕的空格辨識主要是為了區分包括對話單行、中英文混排、或英文單詞之間的空格, 儘量確保字幕內容還原的可讀性和準確性

但這也會導致在辨識中文標點符號時很容易產生多餘的空格, 如何快速清除無效空格見下文 Part.IV SE 用正規表示式



2.最大容錯率 / Max. error (Default 7.5)

Max. error% 0.0-0.1 適合拉丁字元和阿拉伯數字辨識; 漢字辨識時可以作為OCR完成後的校驗測試參數, 多次實測在0.2能通過時, 0.0-0.1也能100%通過

Max. error% 0.2-0.5 漢字辨識基本上不會產生錯字, 以這個閥值生成的字庫準確度及兼容性最高, 2.0以下值基本也不會產生錯字, 2.0-3.0之間的值偶尔會產生個別錯字, 5.0以上則很容易產生錯字 例如: 己-已, 未-末-朱

DFKai-SB、SimHei, 尤其是 DFKai-SB Bold, 在 Max. error% 0.2-0.5 生成的字庫時, 辨識相同的字會產生大量重複字, 例如:

在OCR六人行全套10季236集234條藍光台繁SUP字幕時, 各集字幕源的字型、字號、邊框都完全相同, 但如果Max. error% 設為 0.2-0.5, 辨識同一個字可能都要多次重複輸入, 並且這些字往往是些高頻字

六人行.Friends.S01-S10.‎1994-2003.BluRay (DFKai-SB, Bold, 68Px), 多次試驗後, 設定參數:
Image Pre-Proceeing/Binaray image compare thresshold 270,
No of pixels is space 46,
Max. error% 2.0,
Min. line height (split) 54

OCR測試多條DFKai-SB Bold藍光字幕, 發現但凡是這種字型都很麻煩, Max. error% 小於2.0時辨識率低, 重複率高; Max. error% 大於3.0時又比較容易產生字型相似的錯別字; 暫時沒有更好的辦法, 只能耐心慢慢積累字庫



3.最小行高 / Min. line height (split)

藍光中文字幕字號通常為58、68、70像素最常見, 多行字幕的行間距通常是10像素

通過圖1所示的6號位置的字幕高度值, 通常可預估字體大小, 選單行字幕圖像根據高度值進行判斷:

字幕高度值在58-62之間, 字體大小一般是58像素
字幕高度值在64-72之間, 字體大小一般是68像素

行高一般是字體大小減4-8像素, 比如:

58像素字體, 最小行高 Min. line height (split) 設為50/54
70像素字體, 最小行高 Min. line height (split) 設為60/65(沒有64選項)

通常最小行高值對OCR的準確率影響不大, 藍光中文字幕SUP的最小行高 Min. line height (split) 設在50-70之間均為穩定安全值, 大於這個值則可能出現如下圖所示的錯誤

圖3: 最小行高設置不當導致的OCR出錯




4.圖像前處理閥值 / Image Pre-Proceeing / Binaray image compare thresshold (Default 270)

通過圖1所示的右鍵選單的5號位置進入圖像前處理

圖4: 圖像前處理 (Image Pre-Proceeing), 圖像二值化閥值 (Binaray image compare thresshold)


圖像前處理可簡單理解為將字幕文字圖像反白、去邊框、去陰影底色,最後生成純白色文字圖像

字體顏色差別不影響OCR結果, 但邊框的粗細程度、陰影深淺可能會影響OCR的結果, 圖像前處理字幕文字反白後導致的字體邊緣毛邊極細小差異化, 通常微調圖像前處理閥值及最大容錯率來解決這類問題

通常每條字幕源的邊框、陰影都不相同, SE Binaray Image Compare OCR 通過這個設定來控制文字邊緣的邊框、陰影清除的精度, 默認值 270, 峯值 1-765, 建議值200-300之間

這個值直接影響字幕去掉邊框、陰影後的文字輪廓的粗細, 值越小文字筆畫越粗, 值越大則筆畫越細, 從而實現文字辨識

通常在實際使用時, 建議使用默認值270來訓練和積累字庫, 如果確定字幕已存匹配的字庫但無法正確OCR, 則可嘗試微調圖像前處理閥值以便減少收工輸入:

如果是細邊框, 設定80,100,170測試辨識
如果是粗邊框, 設定170,200測試辨識
如果是粗邊框帶陰影, 設定270測試辨識

某些情況下, 適當調節這個值可以更好的避免重複字的生成, 例如:

图5: Aquaman.2018.UHD&BluRay 台繁SUP



水行俠.Aquaman.2018.UHD 和 BluRay 台繁SUP的字型和字號完全相同, 都是DFKai-SB 70Px, 但由於兩條字幕源的邊框、陰影效果有細微差別 (字體顏色差別不影響文字處理結果), 因此OCR完UHD.TW.SUP後, 再次OCR BluRay.TW.SUP仍然無法一次性通過, 這時候適當調節一下這個參數即可:
水行俠.Aquaman.2018.UHD 設為 270 生成完整字幕檔,
水行俠.Aquaman.2018.BluRay 設為 170-200 可一次過OCR, 無需再輸入文字

另一種情況是, 當你確定字幕的字型和字號能匹配你已有的字庫檔, 但實際上又還是要重新逐個打字輸入時, 適當調節這個值去匹配你的字庫檔裡的文字圖像也能適當減少重複輸入文字, 例如:
2001太空漫遊.2001.A.Space.Odyssey.1968.UHD.CN 設為 170




Part.III 字型/字號/字庫(圖像資料庫)

圖6: 部分已OCR字幕影片一覽表, 對照參數含台繁/港繁/簡中的片名、介質、字型、是否粗體、字號對照、圖像前處理閥值/最大容錯率設定


註:
1.*號為已OCR字幕
2.列表字幕檔相關鏈接見下文 Part.V 已OCR字幕影片目錄


從上圖不難看出,

1.藍光中文字幕字號通常為58、68、70像素最常見, 偶爾有50、62、72像素, Netflix的SUP圖像字幕基本都是64像素 (註: 像素單位基於印刷排版標準的PostScript 72 DPI, 與SSA/ASS字幕格式中的Font Size規格相同, 但與Office Word/Excel中的磅值不同, 播放器的字號設定也不同, 68Px≈PotPlayer 16 / MPV Player 45.35)

圖7: 字體字號大小對照 (字號、磅、像素、毫米), 紅色數值部分為藍光SUP常見字體大小


2.粗體字型只在DFKai-SB(微軟華康標楷體)時有過

3.BluRay和UHD的SUP檔在字型及字號上並無差異, 無需區分建立字庫

4.藍光常見字型大致如下:

藍光台繁常見字型
DFKai-SB                     (微軟華康標楷體)
DFPKaiShuW3            (華康楷書體W3(P), 字型較細, 拉丁字母和阿拉伯數字不同)
DFPBiaoKaiShu          (華康標楷體, 拉丁字母和阿拉伯數字不同)
SimHei                        (黑體)
SimKai                         (楷體)
ARStdKai-Medium   (文鼎標準楷體M, 目測字型與華康楷書體W3(P)極相似, 實際兩種字體筆畫、拉丁字符及標點符號有細微差別, ARStdKai-Medium、ARStdKaiPro-Medium、ARStdKaiB5-Medium字體基本一樣)

藍光港繁常見字型
SimHei                         (黑體)
DFKai-SB                     (微軟華康標楷體)
DFPYuan-Medium   (華康中圓體(P))
DFPHei-Medium      (華康中黑體, 多見於港片)

藍光簡中常見字型
SimHei                        (黑體)
DFPHei-Medium      (華康中黑體)

其他字型
DFYuanStd-W5          (華康圓體W5, 偶爾見於日韓影片的台/港繁中, 例如: 愛誘慾.The.Intimate.2005.BluRay.TW)
MHeiC-Medium         (蒙纳中黑體, Netflix主要字型, 與MHeiM-C-B5HK-S60、MHeiC-Medium-Big5HKSCS字體相似度99%, 阿拉伯數字稍微有點不同, 未能確認100%匹配字體, 所以本文統稱為MHeiC-Medium)

暂未准确區分字型的字幕
美國隊長.Captain.America.The.First.Avenger.2011.BluRay.TW (近似黑體, 但筆畫、拉丁字符及標點符號有細微差別, 已作黑體入庫)
人魔.Hannibal.2001.BluRay.TW (同上, 近似黑體, 但筆畫、拉丁字符及標點符號有細微差別, 已作黑體入庫)

圖8: 常見字型、字號在Photoshop中1:1的比對確認, 各種字型的匹配以中文字體、拉丁字符、標點符號都能吻合為準, 點擊大圖可見字型比對清晰圖像




中文字型識別, 可通過在線字體識別網站能快速準確的辨識, 比如識字體網

字型和字號的採用習慣, 應該與發行公司也有一定規律, 但由於對發行方面缺乏足夠的認知, 暫無法分析總結

區分字型, 是為了更合理的建立字庫(圖像資料庫), 建議儘量以不同字型建立細分字庫, 這麼做的好處是:

1.準確率和效率更高, 錯誤率更低

2.便於糾錯、維護和擴展字庫

3.字庫檔不會過於臃腫龐大


當字庫檔(圖像資料庫)有一定數量的字元數據後:

1.OCR啟動時, 會自動匹配字幕檔首行的文字, 如果有匹配的字型字庫則會自動對應選定, 如果沒有匹配到字型字庫則默認選擇列表中的第一項字庫檔

2.字庫匯入時, 會自動過濾掉字庫已經存在的字元圖像, 只篩選列出目標字庫沒有的字元, 不必擔心匯入字庫的字元冗餘問題


中文字幕OCRer最大的痛點是, 藍光字幕字型和字號組合可以千變萬化, 一個字的字型不同, 需要被輸入; 字型相同, 字號不同, 也需要被重新輸入

關於這一點, 我也向軟體作者提出建言, 如果能通過已有的SRT檔快速匹配SUP檔並生成字庫, 就可以省去枯燥低效的打字輸入之苦, 希望將來能做到這一點

另外, 對於非官方標準SUP、自製SUP、SUP轉SUB的字幕, 建議單獨建立字庫或者直接無視, 這類圖像字幕基本上沒有共性, 對字庫積累沒有價值




Part.IV SE 用正規表示式(Regular Expression)來快速尋找和多重取代(Mutiple Replace)

幾乎每個OCRer在字幕OCR完成後的第一件事, 都會按照自己的喜好和習慣修訂字幕, 最常見的操作比如:
1.對話分隔符為空格, 標注為英文破折號
2.對話單行顯示, 處理為雙行顯示
3.各種標點符號的風格統一

這類操作大家通常直接選擇用CTRL+F或者CTRL+H來完成, 這裡推薦使用正規表示式(Regular Expression), 更準確、更高效的完成各種常見的尋找和多重取代(Mutiple Replace)操作

正規表示式是什麼, 這裡不做解釋了, Google一下很多, SE正規表示式用法也可從這裡(Multiple Replace)了解, 正規表示式語法可從這裡了解, 並且很多支持正則表達式的文本編輯器可通用, 比如Notepad++、UltraEdit等

列舉幾組常見的多重取代(Mutiple Replace)的正規表示式:


1.對話單行轉對話雙行

個人總結幾種常用格式可下載附件解壓後可直接匯入


對話以空格分隔的單行, 轉對話雙行, 並標注對話連接符(形如: ABCXYZ)
尋找內容: (.+)( {2,})(.+)
取代為: -$1\r\n-$3
說明:( {2,})表示英文空格出現2次以上, \r\n表示回車換行


如果是中文全形空格分隔的(形如: ABC XYZ)
尋找內容: (.+)( {1,})(.+)
取代為: -$1\r\n-$3
說明:( {1,})表示中文全形空格出現1次以上, \r\n表示回車換行

如果是對話後句以英文破折號表示的(形如: ABC -XYZ)
尋找內容: (.+)( {1,})-(.+)
取代為: -$1\r\n-$3


如果是對話前、後句都以英文破折號表示的(形如: -ABC -XYZ)
尋找內容: ^-(.+)( {1,})-(.+)
取代為: -$1\r\n-$3
說明: ^表示行开头, ^-表示以-开头, ( {1,})表示半形空格出現1次以上, \r\n表示回車換行


2.無用空格清除

有時候OCR中文字幕時, 中文標點符號前後會多出無效空格, 如果用Ctrl+H全部替換空格可能會錯將有效空格也清除掉了, 這時候用下面2個取代表達式來處理
尋找內容: ([、,。:;?!·…“”〝〞「」《》()]) +([^ \-])
取代為:$1$2

尋找內容: ([^ \-]) +([、,。:;?!·…“”〝〞「」《》()])
取代為:$1$2


直接清除所有中文字符間的所有空格, 但不會誤清除拉丁字符和數字間的空格
尋找內容: ([\u4E00-\u9FA5\uFF01-\uFF5E])( {1,})([\u4E00-\u9FA5\uFF01-\uFF5E])
或者, 尋找內容: ([^\x00-\xff])( {1,})([^\x00-\xff])
取代為: $1$3
說明: ([\u4E00-\u9FA5\uFF01-\uFF5E])匹配所有中文漢字及中文標點符號, ([^\x00-\xff])表示任意全形字符, 基本等效([\u4E00-\u9FA5\uFF01-\uFF5E]), 但寫法更簡潔



3.各種雙引號的寫法清理

雙引號左右兩邊都在同一行的情況
尋找內容: (〝|‘|"|"|')(.+?)(〞|’|"|"|')
取代為: “$2”


如果左右引號出現在不同行, 則分別建立左右兩項雙引號處理並同時啓用選定
尋找內容: (〝|‘|"|"|')
取代為:“

尋找內容: (〞|’|"|"|')
取代為: ”
說明: 由於英文引號、HBO全形中文雙引號左右兩邊都用同樣的符號, 不分左右, 則需要另建規則區別開來, 並人工尋找辨別


4.各種破折號連接符的寫法清理
歸納為如下常見的幾種, 適用於大部分情況
尋找內容: [—﹣-–]
取代為: -



5.各種刪節號的寫法清理
歸納為如下常見的幾種, 適用於大部分情況
尋找內容: (\. \. \.|\.\.\.\.\.\.|\.\.\.\.|\.\.\.|\.\.|...|···|……|,,,|--|┅|‥)
取代為: …



6.各種夾註號的寫法清理
尋找內容: (『|《|【|〔|〈|\<\<)(.+?)(』|》|】|〕|〉|\>\>)
取代為: 「$2」


7.各種人名間隔符清除
尋找內容: (•|.|‧|·|·|⸱|∙)
取代為:


8.中文全形拉丁字符
占雙字位元的中文全形拉丁字符轉為英文半形標準拉丁字符 (形如: ABC123?!%*/), 下載附件解壓後可直接匯入




9.繁體字校正
SubToSrt軟體中有一個Replace.sys檔, 用來轉換常見繁簡錯別字, 例如:
着名<=>著名、着作<=>著作、名着<=>名著、土着<=>土著、卓着<=>卓著、昭着<=>昭著、原着<=>原著、显着<=>显著

SE只要2項正規表示式即可達到同樣目的, 非常容易維護

尋找內容: (编|名|土|显|顯|遗|原|昭|卓)着
取代為: $1著

尋找內容: 着(称|名|书|述|作)
取代為: 著$1
說明: 「|」表示邏輯判斷的「或」的意思, 只需在括號內不斷追加詞條規則即可


10.Unicode不可見字符清除 (NetFlix)
NF字幕經常在行首帶有不可見字符, ‏ ‏&rlm; 、(\u200F)、Unicode Left-to-Right Embedding (\u202A)、Right-to-Left Embedding (\u202B)等, 例如: The.Red.Sea.Diving.Resort.2019.NF.Web-DL.TW

尋找內容: [\u200E-\u200F\u202A-\u202F]|&rlm;
取代為:





Part.V 已OCR字幕影片目錄、字庫檔分享

1.已OCR字幕影片目錄及鏈接



2.基於前述藍光常見字型, 目前已建字庫檔

中文繁/簡體(9個字庫, 共44777字元)
ARStdKai-Medium.db               (2225 字元, 微軟華康標楷體)
DFKai-SB, Bold.db                     (10942字元, 微軟華康標楷體(粗體))
DFKai-SB.db                              (4288 字元, 微軟華康標楷體)
DFPHei-Medium.db                  (2756 字元, 華康中黑體)
DFPKaiShuW3.db                        (1595 字元, 華康楷書體W3(P))
DFPYuan-Medium.db               (3013 字元, 華康中圓體(P))
[email protected]      (5750 字元, 蒙纳中黑體)
SimHei.db                                     (12838字元, 黑體)
SimKai.db                                     (1370 字元, 楷體)


英語/法語/葡萄牙語/土耳其語
Latin, Milt-Lang.db                     (9422 字元, 拉丁字符及阿拉伯數字(DVD/BluRay))


字庫檔 (Ver.20190731, 54199字元)


下載後解壓到 SubtitleEdit\Ocr\ 目錄即可, 或通過圖1所示的7號位置選擇匯入方式合併到其它字庫

切記: 內容覆蓋前請備份OCR目錄裡的.db字庫檔

-.db 為空字檔, 用於永遠排在第一選項, 以便OCR啟動時判斷是否有匹配的字型字庫



字幕檔的建立遵照以下標準:

1.全部採用官方標準SUP檔, 非官方標準SUP、自製SUP、SUP轉SUB、DVD的SUB檔的字幕, 不在上述字庫範圍內

2.所有字幕檔在OCR前都在Photoshop中進行了1:1比對確認字型及字號, 然後再輸入字庫, 儘量確保字型字庫不混淆

3.所有中文字庫檔以 Max. error% 0.2-0.5, Image Pre-Proceeing/Binaray image compare thresshold 270 (默認設定) 參數生成; 拉丁字符及阿拉伯數字檔(即英語、法語等檔)即以 Max. error% 0.0, Image Pre-Proceeing/Binaray image compare thresshold 270 參數生成, 儘可能確保字庫檔的正確率和可用性

4.儘量做到文字符號對應還原:
* 不做簡繁轉換, 這樣有利於OCR文字正確性
* 不做拉丁字符大小寫轉換
* 拉丁字符和數字均以半形格式輸入
* 標點符號按中英文半形/全形格式對應還原
* 斜體文字及符號按單個字元辨識, 而非連續輸入, 這樣有利於斜體文字OCR的正確辨識

5.文字及符號儘可能以單個字元進行識別, 除了如下情況:
* 港版有時候字幕中涉及名稱(人名地名)會有下劃線, 會導致無法截取單個文字, 例如:
   波希米亞狂想曲.Bohemian.Rhapsody.2018.UHD.HK
* 拉丁字符黏合導致程式無法識別分拆

6.如果可能, 用OCR字幕檔與他人OCR檔做比對, 並糾正錯別字, 儘量確保字庫無錯字




衆人拾柴火焰高, 最後, 歡迎認同並願意遵循上述標準的OCRer來共同維護和擴展字庫...

hk_aquarius 發表於 2019-7-31 09:01:18

謝謝你的文章, 很詳細, 全面.
學習中, 有點困難... 初步暫時全是空空的(如下圖)
有什麼先決條件嗎? 例如: 繁體中文Win10?



再次謝謝!

Fxe 發表於 2019-7-31 14:18:07

8.中文全碼拉丁字符

這個附件忘了傳?我來幫忙傳一下{:1_555:}

ETS 發表於 2019-7-31 14:25:14

hk_aquarius 發表於 2019-7-31 09:01 AM
謝謝你的文章, 很詳細, 全面.
學習中, 有點困難... 初步暫時全是空空的(如下圖)
有什麼先決條件嗎? 例如:...

1 W7 W10都可以
2 使用 Subtitle EditOCR 時 建議用在 SUP 檔
  雖然 SUB 檔也可以 但效果沒 SUP 檔好

Aray 發表於 2019-7-31 15:20:20

hk_aquarius 發表於 2019-7-31 09:01 AM
謝謝你的文章, 很詳細, 全面.
學習中, 有點困難... 初步暫時全是空空的(如下圖)
有什麼先決條件嗎? 例如:...

本文所提及的方法, 僅BluRay/UHD的SUP字幕檔通用,
從截圖看, 字幕為SUB檔, 字幕高度為34像素, 不適合上述規則,

不太明白您所說先決條件指什麼, 軟體對運作環境沒有特殊要求, 只要是Win系統都能使用

ethan 發表於 2019-7-31 18:02:20

本文最後由 ethan 於 2019-7-31 07:06 PM 編輯

順便請教個正規表示式寫法

FOX+的良醫莫非,兩季都是同行不同人對話用空格區分, 而其他對白都沒有空格
目前我要是想加-, 只會用一般取代法 "全形空格--->兩個半形空格-" 這樣
雖然能快速加上英文破折號, 但只有第二句XD
有正規表示式寫法能把句首也加上破折號的嗎? 謝謝

7F回覆的是有換行, 不換行的寫法是尋找内容不變, 取代為 -$1-$3, 提供給有需要的會員

Fxe 發表於 2019-7-31 18:51:49

本文最後由 Fxe 於 2019-7-31 08:01 PM 編輯

ethan 發表於 2019-7-31 06:02 PM
順便請教個正規表示式寫法

FOX+的良醫莫非,兩季都是同行不同人對話用空格區分, 而其他對白都沒有空格

尋找内容:(.+)( {2,})(.+)
取代為:-$1\r\n-$3

Fxe 發表於 2019-8-1 13:00:11

本文最後由 Fxe 於 2019-8-1 01:12 PM 編輯

我用這份字幕做實驗 野梨樹
使用以下這個正則式
([\u4E00-\u9FA5\uFF01-\uFF5E])( {1,})([\u4E00-\u9FA5\uFF01-\uFF5E])
$1,$3
第一次運行,替換455處,
漏了 1449行 再笑啊,爸 最好有這麼好笑

和2368行 好了啦,媽 別太誇張了

得重新二次運行多重替換,才能查找出來,如果想一次查找出來怎麽寫


Aray 發表於 2019-8-1 22:15:45

本文最後由 Aray 於 2019-8-1 10:57 PM 編輯

Fxe 發表於 2019-8-1 01:00 PM
我用這份字幕做實驗 野梨樹
使用以下這個正則式
([%u4E00-%u9FA5%uFF01-%uFF5E])( {1,})([%u4E00-%u9FA5%uF ...
([\u4E00-\u9FA5\uFF01-\uFF5E])( {1,})([\u4E00-\u9FA5\uFF01-\uFF5E])
$1,$2
這個方法不容易出錯,符合「一個一個來」解決的邏輯



有一種思路似乎可以一次性解決空格問題, 準確性有待日後檢驗:
( {1,})([\u4E00-\u9FA5\uFF01-\uFF5E])
,$2
表示中文字符前面只要帶1個以上的空格,則將空格轉為逗號「,」



另外,更新一下寫法:
([^\x00-\xff])( {1,})([^\x00-\xff])
$1,$3

( {1,})([^\x00-\xff])
,$2


其中, ([^\x00-\xff])表示任意全型字符, 基本等效([\u4E00-\u9FA5\uFF01-\uFF5E]), 但寫法更簡潔

Aray 發表於 2019-8-1 22:41:59

Fxe 發表於 2019-8-1 01:00 PM
我用這份字幕做實驗 野梨樹
使用以下這個正則式
([%u4E00-%u9FA5%uFF01-%uFF5E])( {1,})([%u4E00-%u9FA5%uF ...

剛才換了種思路, 直接更新在9F了, 似乎可以一次性解決中文字符間的空格轉逗號問題

colucolu003 發表於 2019-8-3 23:51:30

我是一個一個字輸入,這個教學太強大了,要好好的學習吸收一下。

Fxe 發表於 2019-8-28 15:08:59

有新的問題請教

現在下載到一份CC字幕,現在我想去除掉這些内容,我能用正則式處理嗎。

[嚴肅音樂]
[多人齊聲]
[小孩嬉鬧聲]

Aray 發表於 2019-8-28 17:29:20

本文最後由 Aray 於 2019-8-28 05:34 PM 編輯

Fxe 發表於 2019-8-28 03:08 PM
有新的問題請教

現在下載到一份CC字幕,現在我想去除掉這些内容,我能用正則式處理嗎。

兩種方式,

1. SE 選單 -> 工具 -> 「移除妨礙聽覺的文字」(快速鍵 Ctrl+Shift+H)




2.多重取代 正規表達式 (Ctrl+Alt+M)
Find: \[(.+?)\]
Replace with: $1



henry3721 發表於 2019-10-2 20:48:25

看來有點複雜但我會耐心學習並多作嘗試, 謝謝大大的指教。

zeroad 發表於 2019-10-17 13:19:28

樓主想請教如何設置合適的行高和空格像素尺寸,看了你的教學還是設不好

我OCR的是這個字幕
https://www.hd.club.tw/forum.php?mod=viewthread&tid=241107

豎排字幕,試了幾種參數,要麼空格多,要麼" ( " 和 "稍" 連在一起了
https://upload.cc/i1/2019/10/17/LPxncZ.png
就是第25行字幕
https://upload.cc/i1/2019/10/17/Jtm3xi.png

Aray 發表於 2019-10-17 15:27:01

本文最後由 Aray 於 2019-10-17 04:02 PM 編輯

zeroad 發表於 2019-10-17 01:19 PM
樓主想請教如何設置合適的行高和空格像素尺寸,看了你的教學還是設不好

我OCR的是這個字幕

曾多次看到過日本動漫有這種豎排字幕, 但我沒OCR過, 所以, 頂樓文中也沒有提及到這種情況

根據你提供的這份字幕, 我大致試了一下 (從字幕25-30行),
這種字幕是華康圓體, 72點大小左右, 因此:

1.行距嘗試58-62點, 但豎排仍然不行

2.行距最終嘗試35-42點, 大於或小於35-42點都無法正常識別, 豎排文字可區分豎形夾注號標點︵︶, 只碰到一處無法單字分拆識別, 即26行的"消息", 因為這裡橫排字幕和豎排字幕混排在一起了, 軟件無法區分



3.碰到同時兩列不同字數長度的豎排文字, 還會出現下圖這種情況, 更需要後期人工校對喔




一般豎排文字多是註解, 且相對少量, 可按上述方式嘗試, 即便是轉SRT後, 仍然需人工處理成橫排, 因此碰到上述無法分拆識別的情況, 個人建議直接略過, 然後單獨人工輸入, 不必糾結在這裡

jackyproma 發表於 2019-11-6 11:31:34

真是太厲害了,我用這軟體只有用到替換字元,簡轉繁,
還有就是校對時間而已~其他功能都沒有去了解~~
謝謝樓主這麼詳細的說明。

willkao2380 發表於 2019-11-6 17:56:15

教的好深入,要花很多時間學習,謝謝樓主

kevenbjx 發表於 2019-11-16 12:48:18

厉害厉害,虽然看的不是很懂,确实佩服楼主的无私分型!能不能出一期初级阶段的教程,万分感谢!

xiaochuan888 發表於 2019-12-1 03:08:18

非常棒的教程,學習了!之前對sup字幕OCR都是轉idx+sub後再用IdxSubOcr,錯誤率比較高,有時間嘗試下用樓主的方法~
頁: [1] 2 3 4
查看完整版本: Subtitle Edit 進階使用技巧和心得