2012-12-29 31 views
2

我有將從圖像來識別爲多個以下限制:如何確定6位+ 1位的最大糾錯/檢測方法?

  • 6位數字數據
  • 1位錯誤校正
  • 的前6位數字不能被改變(它們必須是人類可讀)
  • 校驗位必須保持一個數字

目前基於校驗和糾錯機制,使得第7位是最後掏它的前6位數字的總和。

E.g.

123456 => 1234561 
999999 => 9999994 
472912 => 4729125 
219274 => 2192745 

如何確定數量和類型的錯誤,該方案可以檢測/糾正,並在那裏將提供更好的錯誤檢測的方案? (對於我的用例,錯誤檢測比糾錯更重要)。

回答

2

你可以試試Luhn,你的描述稍微複雜一點,但它會符合你的要求。

副本從維基百科粘貼:

的Luhn算法將檢測到任何單個位錯誤,以及 幾乎相鄰數字的所有轉置。然而, 不會檢測兩位數字序列09到90的轉換(或者反之亦然 )。它將檢測到10個可能的雙胞胎錯誤中的7個(它不會檢測到22×55,33×66或44×77的 )。

其他更復雜的校驗碼 算法(如Verhoeff算法和Damm算法)可以檢測到更多的轉錄錯誤。 Luhn mod N算法是支持非數字字符串的 擴展。

由於該算法 上從右至左的方式和零位數字操作 影響的結果,只有當他們造成的位置偏移,零填充 數字的字符串的開頭並不影響計算。 因此,填充特定位數的系統(例如,通過 將1234轉換爲00)可以在填充之前或之後執行Luhn驗證 並獲得相同的結果。

將0到奇數長度的數字前置0可使您將左側的編號從右到左處理,而不是從右到左處理,使奇數位數加倍。

算法出現在美國專利中用於計算校驗和的手持式機械設備 。因此需要簡單地使用 。該設備通過機械手段獲得了mod 10總和。 替代數字,即雙重結果和減少 程序的結果不是機械生成的。相反,這些數字是 標記在機器的身體排列順序。