如上圖中加框的最後一字就是檢核碼!它是由正確的前面10碼英數字經過固定的公式算出來的一個0-9的數字,作用是檢查前面十碼的辨識結果是不是有錯誤,如果有錯誤就有「很大的機率」算出來的答案不會剛好是1!
大家設想一下,前面英數字可能的組合非常多,但是不管怎麼算檢核碼答案卻只有0-9的十個可能,所以如果有兩個以上的錯字是有可能錯上加錯卻負負得正算出正確的檢核碼的!只是通常很少錯到兩字以上,即使有,也很難剛好碰上十分之一的機率歪打正著!所以不要以為檢核碼是保證嚴密的機制,錯的答案也可能算出正確檢核碼的!
但是基本上我們還是應該相信檢核碼,如果發現檢核碼不對那就一定是有錯誤!如果你在辨識過程發現有錯,又不想直接放棄,可以做些甚麼補救呢?如上就是一個非常有趣也很有意義的案例!檢核碼前面的那個字用人眼怎麼看都比較像是一個0!正常辨識程序也幾乎一定會說是0!
但是算出來的檢核碼卻不是1,我們最合理的假設就是前面十個字有「一個」錯了!最可能的嫌犯就是字形磨損所以符合度一定較低的那個0,我就可以「作弊」,嘗試錯誤去改那個字的辨識結果然後重算檢核碼,結果是0不對但是改成6就對了!回頭看就發現原來是正常的6字中間的橫線被磨損了!
這樣猜字有價值嗎?當然有!因為你放棄就確定是失敗,這樣合理的推理猜測正確的機率是很高的!只是我們必須知道這個過程有很多出錯的可能,譬如我們估計是哪個字有錯的標準如果不當選錯嫌犯,譬如選到其他數字如4,嘗試錯誤之後也一定可以湊出合格的檢核碼,但是那個答案當然是錯的!甚至有時候會發現辨識可信度最低的是檢核碼本身!其他字看起來都很正常,也可以直接嘗試修改檢核碼的!
所以如果我不太確定疑犯是誰時通常是不會勉強做這種處理的!寧可修改其他前處理參數,重做一次二值化讓字元更清楚一點再辨識一次!總之,這只是可能的糾正辨識結果的手段之一!不能濫用的!
限會員,要發表迴響,請先登入