---
# System prepended metadata

title: T-brain 中鋼字元辨識 v2

---

# T-brain 中鋼字元辨識 v2

## 流程

```mermaid
graph LR;

B["偵測字串"] --> C["檢驗正反"] --> D["偵測字元"] --> E[字元辨識]

```

## [字串偵測器](https://drive.google.com/drive/folders/1Tgjf5hhweaskIzBm8MsZgj9XRvtD-XkA?usp=sharing)
1. 目標：訓練字串偵測器。
2. 步驟：共有兩個步驟，每個步驟會使用一個 $.ipynb$ 檔案來完成。
   + $train\_string\_detector$: 我們會使用主辦單位提供的訓練圖片與 **BBOX** 資料訓練字串偵測模型。
   + $test\_string\_detector$: 我們會使用訓練好的字串偵測模型對圖片進行預測，之後還會對圖片進行一些後處理。



## [正反辨識器](https://drive.google.com/drive/folders/1kG40KBAmmZtUk2d85CAH5UsEEOVPMmrg?usp=sharing)
1. 目標：訓練正反辨識器。
2. 步驟：共有兩個步驟，每個步驟會使用一個 $.ipynb$ 檔案來完成。
   + $label\_pn\_image$: 由於主辦單位未提供圖片正反的訊息，因此我們對圖片進行人工標註，使用自製自動化標籤系統。
   + $train\_pn\_classifier$: 我們將標註的正反樣本放入模型進行訓練。


## [字元偵測](https://drive.google.com/drive/folders/1PjxAFKQxscqZsRj-fMZgOi1rddWpIK9K?usp=sharing)
1. 目標：訓練字元偵測器。
2. 步驟：共有兩個步驟，每個步驟會使用一個 $.ipynb$ 檔案來完成。
   + $train\_char\_detector$: 我們標註 250 張圖片，並訓練　YOLOv3 模型。
   + $test\_char\_detector$: 測試 YOLOv3　模型。


## [字元辨識](https://drive.google.com/drive/folders/1dQJAb8CZIZpHuMzYBUES0tRcS2vHcM0J?usp=sharing)
1. 目標：訓練字元辨識器。
2. 步驟：共有三個步驟，每個步驟會使用一個 $.ipynb$ 檔案來完成
   + $data\_analysis$: 對主辦單位提供的資料作分析，發現訓練與測試資料都沒有出現字元 $I, O$。另外，**kJl=zQJisK79JdFLeCsDEUH_lfFIyxd.jpg** 這筆資料的標籤為空字串，因此，後續不會將該筆資料納入考量。
   + $preprocess\_char\_classifier$: 這個步驟會將原始圖片的每個字元進行提取，並放入相對應的資料夾中。提取字元的規則詳見下圖。
   ```mermaid
   graph TB;
   A[提取字串] --> B[字元偵測] --"BBOX數量與字串長度不合" --> C1["增加圖片對比度，字元偵測"] --"BBOX數量與字串長度不合"--> D1[將圖片 copy 到 'error_image' 資料夾]
   B --"BBOX數量與字串長度相同"--> C2["提取字元"]
   C1 --"BBOX數量與字串長度相同"--> D2["提取字元"]

   ```
   + $train\_char\_classifier$: 這個步驟會使用上個步驟產生的資料來訓練字元辨識器，每個類別我們會挑出 300 張照片放入模型，當中有 10% 的資料作為驗證集，另外，**C, B, J, D, E** 類資料不足 300 張，會使用 $augment\_data$ 函數將資料補滿 300 張。