EAN-13チェックディジットの仕組み
すべてのEAN-13バーコードの13桁目は、選んで決めるものではなく、計算で求められます。ここでは計算式、完全な計算例、そしてなぜ重要なのかを解説します。
EAN-13バーコードは13桁の数字をエンコードします。最初の12桁は商品を識別し(GS1プレフィックス、事業者コード、商品コード)、13桁目はチェックディジット、すなわち他の12桁から計算される1桁の数字です。その唯一の役割はエラーを検出することです。1桁でも入力ミスや読み取りミスがあると、チェックディジットが一致しなくなり、スキャンが拒否されます。
計算式をわかりやすく
12桁のデータ桁を左から右に読み進めます。
- 奇数位置(1桁目、3桁目、5桁目…)の数字を1倍します。
- 偶数位置(2桁目、4桁目、6桁目…)の数字を3倍します。
- すべての結果を足し合わせて合計を求めます。
- チェックディジットは、その合計を次の10の倍数に達させるために加える必要のある数です。式で表すと、check = (10 − (sum mod 10)) mod 10 となります。
最後の「mod 10」は、あるエッジケースで重要になります。合計がすでに10の倍数である場合、チェックディジットは10ではなく0になります。
計算例
12桁のデータ桁400638133393を例にとります。それぞれの重みとともに並べます。
| 数字 | 4 | 0 | 0 | 6 | 3 | 8 | 1 | 3 | 3 | 3 | 9 | 3 |
| 重み | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 | 1 | 3 |
| 積 | 4 | 0 | 0 | 18 | 3 | 24 | 1 | 9 | 3 | 9 | 9 | 9 |
積の合計は4 + 0 + 0 + 18 + 3 + 24 + 1 + 9 + 3 + 9 + 9 + 9 = 89です。89を超える次の10の倍数は90で、90 − 89 = 1となります。したがってチェックディジットは1で、完全なEAN-13は4006381333931になります。
スキャナーがチェックディジットに依存する理由
スキャナーはEAN-13を読み取るとき、最初の12桁に対してまさにこの計算を繰り返し、その結果を13桁目と比較します。一致しない場合、読み取りは破棄されます。この1桁の追加により、1桁の入力ミスの大多数と多くの桁の入れ替えミスを検出できます。レジで誤った商品をスキャンしてしまうことに対する、低コストな保険です。
同じ計算がUPC、EAN-8、GTIN-14を支えています
EAN-13の方法は実際にはGS1モジュロ10アルゴリズムであり、このファミリー全体で共有されています。UPC-A(11桁のデータ桁)、EAN-8(7桁のデータ桁)、GTIN-14 / ITF-14(13桁のデータ桁)はすべて、右から交互に3と1の重みを使用します。変わるのは長さだけで、ロジックは同一です。