第三章 統一發票對獎系統演算法
3.6 數字辨識
3.6.1 正規化
透過攝影機所看到的數字大小會隨著取像的角度和遠近而有所不同,但是一 般的分類器分類的方式都是將訓練過後的樣本與原圖的特徵進行比對,為了統一 比對的標準,所有數字辨識的圖片都必需先統一大小規格,這個動作就叫做正規 化,這裡我們使用最鄰近法[21],將原始的單一數字圖片統一縮放到規格為寬 8 高14 的新圖片,最鄰近法的原理是計算新的坐標點對應回原始坐標的位置,將 原始坐標的值拷背到新的坐標上,這個方法可以使正規化後的圖片保持二值化,
不需要另外在把灰階圖片轉回二值化圖片,轉換的公式如式(3.37)、式(3.38)所示
。
_ *
o 8
Num w
x = x (3.37)
_ *
o 14
Num h
y = y (3.38)
(x,y)代表新的坐標位置,(xo,yo)代表原始的坐標點位置,Num_w 為切割 完的單一數字圖片寬(式 3.39),Num_h 為切割完的單一數字高(式 3.40)。
_ [ ]Num w i =Invoice num rigin i. _ [ ][3]−Invoice num rigin i. _ [ ][2] (3.39) _ [ ]Num h i =Invoice num rigin i. _ [ ][1]−Invoice num rigin i. _ [ ][0] (3.40)
圖片的坐標皆為整數,如果計算出來的坐標值不為整數的話,則四捨五入找 出最接近的整數值,如原始圖片6(寬)*12(高),新坐標(4,3)使用式 3.39、式 3.40 算出來的結果為(5.33,3.5),對應的坐標就是(5,4),圖 3-46 所示。
圖3-46 正規化對應示意圖
3.6.2 辨識特徵擷取
一個好的辨識特徵會大大的提升辨識的精準度,提供辨識所需的詳細圖片資 訊,常見的色彩強度值只包含點陣圖資訊,為了提高每個點的可靠度,詳細的圖 片資訊也包含了點與點之間的向量關係,本文使用Distance Transform[33]來得到 數字圖像黑點的向量分佈情形。
Distance Transform 翻成中文是距離轉換的意思,他將圖片轉換每個位置為 離黑點最近的歐基里德距離,上下左右四個鄰近方向距離設為 Da,左上、左下
Dc+Da Dc+Da
圖3-47 Da、Db、Dc示意圖
distance transform 必需使用二值化圖像進行轉換,圖片的每個位置會對應到
直到找到為止 距離=d1+d2+…+dn
像素為黑點
3.6.3 圖片分類
在經過一連串的前處理後,發票數字只剩少許的傾斜,加上原本就有的固定 字型與只有十種變化的特性,因此,本文的圖片分類使用系統複雜度低,速度較 快的樣版比對,但是畢竟是透過光學鏡頭所取得的圖片,少許的扭曲與傾斜,甚 至是字元破碎都會令前處理完的圖片與樣本有部份的差異,所以單一種的樣版比 對正確率相當有限,因此本文使用最小距離法、最大相似度法與區域比對法,組 合成一個階段式的分類器來分類10 種類型的圖片,先用一個方法做第一層分類
,再將容易錯誤的字元進行第二階段的檢查。
3.6.3.1 樣版取樣法
有效的樣版會直接影響辨識的正確率,所以如何取一個有效的樣版是樣版比 對的第一個重要工作,為了增加單一樣版的可靠度,所以取樣版的方式是採用統 計的方法,先手動將樣版的素材進行分類,每個數字各取 Numpattern張人眼可清 楚辨識的正規化二值化數字圖片,對一系列的同樣數字的圖片進行統計(i,j) 位置黑點出現的機率,接著將黑點的張數除以總數 Numpattern得到指定位置黑點 出現的機率Pblack n, ( , )i j (會在之後的最大相似度中使用),越接近 1 表示為黑點的 機率越高,越接近0 表白點的機率越高,將 0~1,轉換為圖片的強度值 0~255 可 以得到如圖3-49 等 10 張灰度值樣版,放大八倍的灰階圖像如圖 3-50。
圖3-49 原始大小的灰階樣版
圖3-50 放大 8 倍的灰階圖像
圖中顏色越深的表示越可能為黑色,顏色越淺的表示越可能為白色,使用 150 進行二值化可以得到圖 3-51,放大八倍的結果圖 3-52。
圖3-51 原始大小的二值化樣版
圖3-52 放大 8 倍的二值化樣版
不同的樣版比對法使用的樣版也會有所不同,依此類推,如果使用的特徵為 Distance Transform,就必需先將取樣圖像轉為 distance Transform 的表示方法,
如圖3-53 所示。
圖 3-53 數字圖片 7 的 distance transform 轉換結果
每一個數字取Numpattern張樣本計算出每個位置的distance transform 平均,
就可以得到十個distance transform 的樣版。
3.6.3.2 最小距離法
最小距離法[51]為比較樣本與測試圖片每個位置的差異,如果差異越小,表 示兩張圖片越接近,其演算法為計算出樣版圖片與測試圖片相同位置的強度差,
如圖3-54 所示,然後將所有位置差值進行加總得到 dn式(3.41)。
一 =
測試 樣版 相異點數=24
圖3-54 樣版圖片與測試圖片相異情形分佈示意圖
1 1 0 0
( , ) ( , )
M N
n n
x y
d f x y g x y
− −
= =
=
∑∑
− (3.41)對應到數字辨識,其中 f 為測試圖片,g 為樣版圖片,x、y 為圖像座標(原 點在左上角),n 為樣版數字的號碼 0-9,共有 10 個,M 為寬,N 為高。每張圖 片對應到一個樣版會有一個dn,對十個數字進行比對,可得到10 個 dn,dn最小
的圖片就是比對的結果(式 3.42)。
arg(min( ))resultmatch = di (3.42)
最小距離法原本使用強度差來當做差異的比較參數,可是強度差容易受到數 字傾斜或是不同粗細的字體所帶來的影響,在此之前我們有提到使用不同的特徵 會影響辨識的結果,所以本文改用包含較完整資訊的 distance transform 圖像做 為比較的參數,如此一來就可以大幅增加辨識可靠度。
black n black n
i j
white n black n
P = −P (3.44)
white n white n
i j
Similarity =α Similarity +β Similarity (3.46) 換句話說就是如果在測試樣本在指定位置為黑點時,就將黑點的相似度放大
α 倍,為白點時,將白點的相似度放大 β 倍,最後將所有的位置加總起來,就可 以得到相似度的值,如果相似度越大,十個數字樣版共可得到十個相似度,其比 對出來的相似度越大,就表示與該樣版越接近,比對的結果就是最大相似度的樣 版,越有可能是對應的英文字器或數字(式 3.47)。
arg(max(resultmatch = Similarityn)),..n=0~ 9 (3.47)
3.6.3.4 階段式樣版比對法
文獻常用搭配不同比對方法來提升正確率的方式[51],來改善單一方法的樣 版比對法正確率有限的缺限(見 4.7 節),為了提升辨識的效果,本文使用前兩節 的技術,實作出一套適用於統一發票自動對獎的階段式樣版比對法,用以達到系 統高辨識率的目標。發票的數字除了1 以外皆有一定的寬度,正規化後的 1 會產 生嚴重的形變套到分類器反而會造成誤判,所以系統一開始先將正規化前寬高比 小於1/3 數字過濾出來,並直接將辨識結果指定為數字 1,雖然此舉可以過濾出 大部份的數字1,但是仍有少數的 1 寬度較寬,仍需透過分類器分類,接下來使 用最大相似度法將測試圖像分為十類,並將容易混淆數字進行分類,進行二次分 類,流程圖如圖3-55。
最大相似度法
distance 區域性 transform 最小距離法
單一數字圖像 第一次 錯別字清單 辨識結果
比對結果
圖3-55 階段式樣版比對法流程圖
因為容易混淆的數字必定有一些部份的相似度相當高,所以在第二次的辨識 裡使用distance transform 的最小距離法進行二次辨識,這裡只取有鑑別度的區塊 樣版進行處理,容易混淆的數字與關鍵區塊如表3-4。
表3-4 易混淆字與關鍵樣版對應
數字 1 2 3 4 5 6 7 8 9 0 容易錯誤的數
字
X X X X 3,6 5 2,3 0,6,9 3,8 6,8 比對的樣版 X X X X
輸出 1 2 3 4 區域distance transform 特徵比對最小值
3.7 發票對獎方法
財政部所公佈的統一發票領獎以兩個月為一期,每逢單月的二十五日,開出 前兩個月份統一發票的中獎號碼(例如三月二十五日是開出一月至二月份的統一 發票中獎號碼),開獎日之次月六日起開始發獎(例如三月二十五日開獎,開始發 獎的日期是在四月六日),領取獎金的有效期間為三個月之內,逾期即不能發給
,對獎的金額與規定如表3-5 所示。
表3-5 統一發票獎金與規定
如上表所示,統一發票對獎的數字分為三種類型。
z 特獎號碼:共八碼,八碼全中得特獎。
z 頭獎號碼:共八碼,八碼全中得頭獎,未七碼到未三碼相同分別對應二 獎到六獎。
z 增開六獎號碼:共三碼,三碼全中得六獎。
獎項 說明 獎金(元)
特獎 同期統一發票收執聯 8 位數號碼與特獎號碼相同者 200 萬
頭獎 同期統一發票收執聯 8 位數號碼與頭獎號碼相同者 20 萬
二獎 同期統一發票收執聯末 7 位數號碼與頭獎中獎號碼末 7 位相同者 4 萬 三獎 同期統一發票收執聯末 6 位數號碼與頭獎中獎號碼末 6 位相同者 1 萬 四獎 同期統一發票收執聯末 5 位數號碼與頭獎中獎號碼末 5 位相同者 4 千 五獎 同期統一發票收執聯末 4 位數號碼與頭獎中獎號碼末 4 位相同者 1 千 六獎 同期統一發票收執聯末 3 位數號碼與頭獎中獎號碼末 3 位相同者 2 百
增開六獎 同期統一發票收執聯末 3 位數號碼與增開六獎號碼相同者 2 百
1、統一發票收執聯未依規定載明金額者,不得領獎 。
2、統一發票買受人為政府機關、公營事業、公立學校、部隊及營業人者,不得領獎 。 3、中四獎以上者,依規定應由發獎單位扣繳 20 ﹪所得稅款 。
4、中獎之統一發票,每張按其最高中獎獎別限領 1 個獎金 。
發票中獎的最低標準為末三碼完全相同,由於數字辨識的精準度為 98.63%
Match=8 中獎
沒中獎
讀取頭獎號碼
Match=3i=3
Match=3
Match=2 可能中獎
沒中獎
3.7.1 對獎清單格式
本系統的對獎檔案放置於win_number 資料夾內,裡面有六個數字檔案,分別 代表對獎的第一個月份,如1.txt 代表 1-2 月,11.txt 代表 11-12 月,依此類推,
special{
66899280 64915026 44740300 }
head{
52130630 30020819 42448849 }
special{
66899280 64915026 44740300 }
head{
52130630 30020819 42448849 }
第四章 實驗結果與分析
4.1 不同角度
在每個象限各取三張不同角度的發票,使用自動偵測,灰階化並旋轉的結果 如圖 4-2,圖中右邊方向進入的發票角度為正,由下往上依續為 0 到 180 度,左 邊進入的發票角度為負,由下往上依續為 0 到-180 度,由於旋轉前與旋轉後都是 一樣大小的 320x240 圖片,再經過旋轉後,圖像外圍部份會有小部份失真的情 況,使背景有淺色的線條或是邊緣變形(例:30 度角的圖片)的情況,但是數字區 沒有扭曲的情形,所以這些小失真不會影響後續的辨識。
0
90 -90
±180
圖 4-2 發票旋轉後的對應情形
4.2 不同公司行號
不同公司的發票也不一樣,再經過第一層 ROI 的設定後,各商家在發票上 方的圖樣都會被去除,只保留數字區與浮水印的區域,由此可知,不同商家上方 的圖樣不會影響後續的辨識,如圖 4-3 所示。
圖 4-3 不同公司行號的前處理效果
4.3 不同高度
發票數字高度為 4mm,但是相對於發票上緣的距離卻不是固定的,會隨著 發票機的切斷點或是不同商家發票上的 logo 高度和印刷的數字高度而有所變
發票數字高度為 4mm,但是相對於發票上緣的距離卻不是固定的,會隨著 發票機的切斷點或是不同商家發票上的 logo 高度和印刷的數字高度而有所變