使用深度學習辨識含有注音的中文字

張家銘
5 min readSep 20, 2022

傳統方法面臨的困境

在 OCR 技術發展迅速的年代,已經被廣泛應用許多產業中,例如:

製造業:數位管辨識、螢幕讀數辨識、包裝生產日期辨識、PCB 文字辨識、電錶辨識
金融業:表單辨識、發票辨識、印章辨識、身分證辨識、合同比對
交通業:車牌辨識、駕照辨識、快遞單辨識
教育業:手寫辨識、公式辨識
醫療業:化驗單辨識

而 OCR (Optical Character Recognition) 辨識的基本流程如 圖一 所示,其中包含了 Text detection, Text recognition, Text spotting:

  • Text detection: 偵測文字在影像中的哪個位置
  • Text recognition: 將偵測後的結果拿來辨識是什麼文字
  • Text spotting: 將 detection 和 recognition 整合到一個 End-to-End 的網路中來進行文字辨識
圖一,OCR 辨識的基本流程

若使用 OCR 技術辨識含有複雜背景、圖案、旁註注音的國字時,會讓辨識的正確率降低許多,尤其是有旁註注音的情形,辨識後會生成出大量亂碼,嚴重影響 OCR 文字辨識結果的可用性,如 圖二 所示

圖二,使用一般的 OCR 辨識會辨識出大量亂碼

因此我參考了 PP-OCR 的 Text spotting 流程,在文字偵測和文字辨識中加入了能夠擷取文字的影像分割模型 (U-2-Net),期望能去除複雜背景、圖案、注音,保留下乾淨的文字,進而達到辨識率高的目的。

場域應用情景

透過使用文字偵測模型 (DB), 文字擷取模型 (U-2-Net) 和 文字辨識模型 (SVTR) 來讓影像中的旁註注音文字轉換成可編輯的文字,而模型皆能適用於竪排文字和橫排文字的辨識,如 圖三圖四 所示。

圖三,竪排文字的辨識
圖四,橫排文字的辨識

採用模型介紹

A. 文字偵測模型:Differentiable Binarization (DB) [1]

DB 基於分割的文字偵測模型,最終的二值化圖是針對每一個像素點進行自適應二值化,二值化閾值會由網路學習得到,進而得到文字偵測的結果,如 圖五 所示。

圖五,Differentiable Binarization (DB)

B. 文字擷取模型:U-2-Net [2]

U-2-Net 使用了 Residual U-blocks 的巢狀網路,藉由不同尺度不同感受野的混合,進而捕捉來自更多不同尺度的全局訊息,使用這種結構可以從頭訓練網路而不需要依賴於影像分類的骨幹網路,例如 VGG, ResNet, … 等。

圖六 所示,使用 U-2-Net 可以去除複雜背景、圖案、旁註注音,並成功擷取出乾淨的文字,進一步讓文字辨識模型更好的辨識文字。

圖六,U-2-Net 推論結果

C. 文字辨識模型:Single Visual model for scene Text Recognition (SVTR) [3]

近年來 Transformer 在影像任務上取得不菲的成績,而 SVTR 就是一個使用 Transformers 結構的模型,他能更加有效的挖掘文字影像的上下文訊息,從而提昇文字辨識的能力,雖然提昇了辨識準確率,但是卻犧牲了推論速度,因此使用多種優化策略來讓辨識模型提高準確率和加速,其中之一就是使用較輕量化的 SVTR_Tiny,如 圖七 所示。

圖七,SVTR-Tiny architecture

Reference

[1] Real-time scene text detection with differentiable binarization (Liao, Minghui, et al., 2019) [Paper]
[2] U2-Net: Going deeper with nested U-structure for salient object detection (Qin, Xuebin, et al., 2020) [Paper]
[3] SVTR: Scene Text Recognition with a Single Visual Model (Du, Yongkun, et al., 2022) [Paper]

--

--