データマトリックス

「Wikipedia フリー百科事典」というテキストをエンコードしたデータ マトリックス コードの例

データマトリックスは、白黒の「セル」またはドットが正方形または長方形のパターン(マトリックスとも呼ばれます)に配置された2次元コードです。エンコードされる情報は、テキストまたは数値データです。通常のデータサイズは、数バイトから最大1556バイトです。エンコードされたデータの長さは、マトリックス内のセルの数によって異なります。エラー訂正コードは、信頼性を高めるためによく使用されます。1つまたは複数のセルが破損して読み取り不能になった場合でも、メッセージは読み取ることができます。データマトリックスシンボルには、最大2,335文字の英数字を保存できます。

データマトリックスシンボルは長方形で、通常は正方形で、ビットを表す正方形の「セル」で構成されています。使用されるコーディングに応じて、「明るい」セルは0、「暗い」セルは1、またはその逆を表します。すべてのデータマトリックスは、「L」字型の隣接する2つの実線の境界線(「ファインダーパターン」と呼ばれる)と、交互に並ぶ暗い「セル」またはモジュール(「タイミングパターン」と呼ばれる)で構成される2つの境界線で構成されています。これらの境界線内には、情報をエンコードするセルの行と列があります。ファインダーパターンはシンボルの位置と方向を示すために使用され、タイミングパターンはシンボルの行と列の数をカウントします。シンボルにエンコードされるデータが増えるほど、セル(行と列)の数が増加します。各コードは一意です。シンボルのサイズは、新しいバージョンのECC 200では10×10から144×144まで、古いバージョンのECC 000 – 140では9×9から49×49まであります。

アプリケーション

Mini PCIカード上のデータ マトリックス。シリアル番号 15C06E115AZC72983004 がエンコードされています。

データマトリックスの最も一般的な用途は小型アイテムのマーキングです。これは、2 または 3 mm 2 (0.003 または 0.005 平方インチ)で読み取り可能なシンボルに 50 文字をエンコードできることと、コードの読み取りが 20% のコントラスト比で済むことが理由です。[ 1 ] データマトリックスは拡張可能で、商用アプリケーションでは 300 マイクロメートル (0.012 インチ) ほどの小さな画像 (600 マイクロメートル (0.024 インチ) のシリコンデバイスにレーザーエッチング) から 1 メートル (3 フィート) 四方ほどの大きさの画像 (貨車の屋根にペイント)までが存在します。マーキングと読み取りシステムの忠実度が唯一の制限です。米国電子工業会(EIA) は小型電子部品のラベル付けにデータマトリックスを使用することを推奨しています。[ 2 ]

データマトリックスコードは、ラベルや手紙などの印刷媒体で一般的になりつつあります。このコードはバーコードリーダーで素早く読み取ることができるため、例えば荷物が受取人に発送された時など、媒体を追跡することが可能です。

表面のマーキング

工業工学の用途では、データマトリックスコードを部品に直接マーキングすることで、データマトリックスにエンコードされたデータによって、目的の部品のみが識別されることが保証されます。部品へのコードのマーキングは様々な方法で行えますが、航空宇宙産業では、産業用インクジェット、ドットピーンマーキング、レーザーマーキング、電解化学エッチング(ECE)などが一般的です。これらの方法により、部品の寿命まで持続する永久的なマーキングが得られます。

部品にマーキングされると、生産ライン沿いに設置されたリーダーカメラ、および生産完了後に技術者が使用するカメラでデータマトリックスをデコードし、関連情報を読み取ることができます。これには、製造日、シリアル番号、その他メーカーが指定した関連情報が含まれます。これらのリーダーカメラは、生産ラインにおける部品の動きを追跡したり、在庫を確認したりするためにも使用できます。

携帯電話でデータマトリックスコードを読み取る(Wikipedia の旧Semacode プロジェクト

データマトリックスコードは、1Dバーコードなどのオープンソースコードと同様に、専用のモバイルアプリケーションをダウンロードすることで携帯電話で読み取ることができます。多くのモバイルデバイスはデータマトリックスコードを含む2Dコードを読み取ることができますが、[ 3 ] モバイルアクセスとインタラクションを可能にするためにデコードを拡張しているデバイスはほとんどありません。これにより、コードは安全かつメディアをまたいで使用できます。例えば、追跡、偽造防止、電子政府、銀行ソリューションなどです。

食品業界

データマトリックスコードは、食品業界の自動コーディングシステムで使用され、食品の包装や日付の誤記を防止します。コードは食品メーカーのデータベースに社内で保管され、原材料のバリエーションなど、個々の製品に関連付けられます。製品ごとに固有のコードがプリンタに提供されます。2Dデータマトリックスを最適なスキャン位置に配置するために、ラベルアートワークが必要です。白地に黒のコードについては、印刷品質に問題がない限りテストは不要ですが、すべてのカラーバリエーションは製造前にテストを行い、読み取り可能であることを確認する必要があります。

美術

2006年5月、ドイツのコンピュータプログラマー、ベルント・ホプフェンゲルトナーは、小麦畑に(ミステリーサークルに似た形で)巨大なデータマトリックスを作成しました。メッセージは「Hello, World!」でした。[ 4 ]

技術仕様

テキスト「Wikipedia」をエンコードしたデータ マトリックス コードの例。データ (緑)、パディング (黄色)、エラー訂正 (赤)、ファインダーとタイミング (マゼンタ)、未使用 (オレンジ) を示すために色分けされています。

データマトリックスシンボルは、周囲のファインダパターンとタイミングパターン内に配置されたモジュールで構成されています。ASCII文字セット全体(拡張子を含む)から最大3,116文字をエンコードできます。シンボルは規則的な配列に配置されたモジュールを含むデータ領域で構成されています。大きなシンボルには複数の領域が含まれます。各データ領域はファインダパターンで区切られ、その四辺すべてがクワイエットゾーン境界(マージン)で囲まれています。(注:モジュールは円形または正方形で、規格では特定の形状は定義されていません。例えば、ドットピーニングされたセルは一般的に円形です。)

データマトリックス ECC 200

データマトリックスの新しいバージョンであるECC 200は、リード・ソロモン符号を用いてエラーと消失を回復します。ECC 200では、シンボルが30%の損傷を受けた場合でも、マトリックスを正確に特定できると仮定すれば、エンコードされたデータ文字列全体を通常の方法で再構築できます。データマトリックスのエラー率は、スキャンされた1000万文字あたり1文字未満です。[ 5 ]

シンボルは偶数行と偶数列で構成されます。ほとんどのシンボルは正方形で、サイズは10×10から144×144です。ただし、一部のシンボルは長方形で、サイズは8×18から16×48です(偶数のみ)。ECC 200エラー訂正を使用するすべてのシンボルは、右上隅のモジュールが背景色と同じであることで識別できます(バイナリ0)。

ECC 200 シンボルを以前の標準と区別する追加機能は次のとおりです。

  • 逆読み記号(暗い背景に明るい画像)
  • 文字セットの仕様(拡張チャネル解釈経由)
  • 長方形のシンボル
  • 構造化追加(最大 16 個のシンボルをリンクして、より大量のデータをエンコードする)

[ 6 ]

データマトリックスECC 000~140

データマトリックスの旧バージョンには、ECC 000、ECC 050、ECC 080、ECC 100、ECC 140があります。ECC 200のようなリード・ソロモン符号ではなく、ECC 000~140では畳み込みベースの誤り訂正を使用します。各バージョンで提供される誤り訂正の量は異なり、ECC 000では全く誤り訂正が提供されず、ECC 140が最も多く提供されます。デコード時の誤り検出のため、これらのバージョンはECC 000の場合でも、ビットパターンに対して巡回冗長検査(CRC)をエンコードします。追加の対策として、コード内の各ビットの配置は、仕様に含まれるビット配置テーブルによって決定されます。これらの古いバージョンは常に奇数のモジュールを持ち、9 × 9 から 49 × 49 までのサイズで作成できます。ECC 000 から 140 までのエラー訂正を使用するすべてのシンボルは、右上隅のモジュールが背景色と反転していることで認識できます (バイナリ 1)。

ISO/IEC 16022 によれば、「ECC 000~140 は、単一の当事者がシンボルの生成と読み取りの両方を制御し、全体的なシステム パフォーマンスに責任を負う、クローズド アプリケーションでのみ使用する必要があります。」

標準

Data Matrix は、RVSI/ Acuity CiMatrixに合併されたInternational Data Matrix, Inc. (ID Matrix)によって発明されました。RVSI /Acuity CiMatrix は、2005 年 10 月にSiemens AG、2008 年 9 月に Microscan Systems、2017 年に Omron に買収されました。Data Matrix は現在、いくつかのISO / IEC規格でカバーされており、多くのアプリケーションでパブリック ドメインになっています。つまり、ライセンスやロイヤリティなしで使用できます。

  • ISO/IEC 16022:2024—データマトリックスバーコードシンボル仕様[ 7 ]
  • ISO/IEC 15415—2D印刷品質規格
  • ISO/IEC 15418:2016—シンボルデータ形式のセマンティクス(GS1アプリケーション識別子およびASC MH10データ識別子とメンテナンス)
  • ISO/IEC 15424:2008—データキャリア識別子(シンボル識別子を含む)[異なるバーコードの種類を区別するためのID]
  • ISO/IEC 15434:2006 - 大容量 ADC メディアの構文 (スキャナーからソフトウェアなどに転送されるデータの形式)
  • ISO/IEC 15459—一意の識別子

エラー訂正

データマトリックスコードは、有限体(またはGF(28 )上のリード・ソロモン誤り訂正法を使用します。有限体 の要素は8ビットのバイトとして符号化されます。標準の数値を持つバイトは、を満たす原始元となる体の要素を符号化します。原始多項式は で、多項式数301に対応し、初期根 = 1 で生成多項式を取得します。リード・ソロモンコードでは、コードが追加する誤り訂正バイトの数に応じて、 上の異なる生成多項式が使用されます。追加されるバイト数は、生成多項式の次数に等しくなります。 F256{\displaystyle \mathbb {F} _{256}}b7b6b5b4b3b2b1b0{\displaystyle b_{7}b_{6}b_{5}b_{4}b_{3}b_{2}b_{1}b_{0}}07b2{\displaystyle \textstyle \sum _{i=0}^{7}b_{i}2^{i}}07bα{\displaystyle \textstyle \sum _{i=0}^{7}b_{i}\alpha ^{i}}αF256{\displaystyle \alpha \in \mathbb {F} _{256}}α8+α5+α3+α2+1=0{\displaystyle \alpha ^{8}+\alpha ^{5}+\alpha ^{3}+\alpha ^{2}+1=0}x8+x5+x3+x2+1{\displaystyle x^{8}+x^{5}+x^{3}+x^{2}+1}F256{\displaystyle \mathbb {F} _{256}}

例えば、10×10シンボルには3つのデータバイトと5つの誤り訂正バイトがあります。生成多項式は次のように得られます。 g(x)=(x+α)(x+α2)(x+α3)(x+α4)(x+α5){\displaystyle g(x)=(x+\alpha )(x+\alpha ^{2})(x+\alpha ^{3})(x+\alpha ^{4})(x+\alpha ^{5})}

これにより 、 g(x)=x5+α235x4+α207x3+α210x2+α244x+α15{\displaystyle g(x)=x^{5}+\alpha ^{235}x^{4}+\alpha ^{207}x^{3}+\alpha ^{210}x^{2}+\alpha ^{244}x+\alpha ^{15}}

または小数係数の場合: 。 g(x)=x5+62x4+111x3+15x2+48x+228{\displaystyle g(x)=x^{5}+62x^{4}+111x^{3}+15x^{2}+48x+228}

エンコーディング

産業用データマトリックスコードリーダー

エンコード処理についてはISO/IEC規格16022:2006に記載されている。[ 8 ] データマトリックスのECC-200バリアントをエンコードおよびデコードするためのオープンソースソフトウェアが公開されている。[ 9 ] [ 10 ]

以下の図は、データマトリックスシンボル内のメッセージデータの配置を示しています。メッセージは「Wikipedia」で、左上隅付近から始まるやや複雑な斜めのパターンで配置されています。最初の「W」のように一部の文字は2つに分割されており、3番目の「i」は通常のL字型配置ではなく「コーナーパターン2」になっています。また、メッセージ終了コード(「End」と表示)、パディング(P)バイトとエラー訂正(E)バイト、そして4つの未使用スペース(X)モジュールも示されています。

シンボルのサイズは16×16(データ領域は14×14)で、12バイトのデータバイト(「End」とパディングを含む)と12バイトのエラー訂正バイトで構成されます。(255,243,6)リードソロモン符号(略して(24,12,6))が用いられます。この符号は最大6バイトのエラーまたは消失を訂正できます。

エラー訂正バイトを取得するには、次の手順を実行できます。

(24,12,6)コードに指定される生成多項式は、次の通りです。 これは、小数係数の行列の形式でも表すことができます。 g(x)=x12+242x11+100x10+178x9+97x8+213x7+142x6+42x5+61x4+91x3+158x2+153x+41{\displaystyle g(x)=x^{12}+242x^{11}+100x^{10}+178x^{9}+97x^{8}+213x^{7}+142x^{6}+42x^{5}+61x^{4}+91x^{3}+158x^{2}+153x+41}

[1 242 100 178 97 213 142 42 61 91 158 153 41]

12 バイト長のメッセージ「Wikipedia」は、10 進係数で「End」、P1、P2 を含み、次のようになります (ASCII 値を使用した計算方法については下の図を参照)。

[ 88 106 108 106 113 102 101 106 98 129 251 147 ]

リード・ソロモン体系符号化の手順を使用すると、多項式除算後の剰余の形式で得られる 12 個のエラー訂正バイト (10 進数で E1 から E12) は次のようになります。

[ 104 216 88 39 233 202 71 217 26 92 25 232 ]

これらのエラー訂正バイトは元のメッセージに追加されます。結果として得られるコード化メッセージは24バイトで、以下の形式になります。

[ウィキペディア「終了」 P1 P2 E1 E2 E3 E4 E5 E6 E7 E8 E9 E10 E11 E12 ]

または小数係数の場合:

[ 88 106 108 106 113 102 101 106 98 129 251 147 104 216 88 39 233 202 71 217 26 92 25 232 ]

16進係数では次のようになります。

[ 58 6A 6C 6A 71 66 65 6A 62 81 FB 93 68 D8 58 27 E9 CA 47 D9 1A 5C 19 E8 ]

複数のエンコードモードは、異なる種類のメッセージを格納するために使用されます。デフォルトのモードでは、8ビットのコードワードごとに1つのASCII文字が格納されます。モードを切り替えるための制御コードが以下に示すように用意されています。

コードワードコードワード16進数解釈
00未使用
1~1281-80ASCIIデータ(ASCII値+1)
12981メッセージ終了
130~22982-e5数字のペア00~99
230e6C40エンコード を開始
231e7Base 256エンコードの 開始
232e8FNC1
233e9構造化された追加。メッセージを複数のシンボルに分割できます。
234eaリーダープログラミング
235eb次の文字の 上位ビットを設定する
236ec05 マクロ
237エド06 マクロ
238eeANSI X12エンコード を開始する
239エフテキストエンコードの 開始
240f0EDIFACTエンコード を開始する
241f1拡張チャネル解釈コード
242~255f2-ff未使用

テキストモード

C40、テキスト、X12モードは、テキストメッセージの保存においてよりコンパクトなサイズを実現できます。これらのモードはDEC Radix-50に似ており、0~39の範囲の文字コードを使用します。これらのコード3つを組み合わせることで、最大40 3 =64000の数値が生成されます。この数値は、以下のように2バイト(最大値65536)にパックされます。

V = C1×1600 + C2×40 + C3 + 1
B1 = 床(V/256)
B2 = V mod 256

B1の結果の値は0~250の範囲になります。特別な値254はASCIIエンコードモードに戻るために使用されます。

文字コードの解釈は以下の表に示されています。C40モードとテキストモードには、それぞれ4つのセットがあります。セット0はデフォルトであり、次の文字に一時的に別のセットを選択するコードが含まれています。唯一の違いは、大文字と小文字が逆になっていることです。C40は主に大文字で、セット3には小文字が含まれます。テキストモードではその逆になります。ASCII制御コードを含むセット1と句読点記号を含むセット2は、C40モードとテキストモードで同じです。

コードセット0セット1セット2セット3X12
C40文章C40文章
0セット1ヌル!`CR
1セット2SOH1つの*
2セット3STX#bB>
3空間ETX$cC空間
40終了時刻%dD0
51ENQeE1
62確認'fF2
73ベルグラムG3
84学士hH4
95HT*5
106LF+jJ6
117VTK7
128FFlL8
139CRメートルM9
141つのそれで/n
15BbSI:oB
16CcDLE;pPC
17DdDC1<q質問D
18EeDC2rRE
19FfDC3>sSF
20GグラムDC4?tTG
21Hhナク@あなたあなたH
22シン[vV
23JjETB\WJ
24Kできる]×XK
25LlEM^yはいL
26Mメートルサブ_zZM
27nESCFNC1{
28oFS|
29PpGS}P
30質問qRS抑制する質問
31Rr私たち削除R
32SsS
33TtT
34あなたあなたあなた
35VvV
36WW
37X×X
38はいyはい
39ZzZ

EDIFACTモード

EDIFACTモードでは、1文字あたり6ビットを使用し、4文字を3バイトに圧縮します。数字、大文字、および多くの句読点を格納できますが、小文字はサポートされていません。

コード意味
0~30ASCIIコード64~94
31ASCIIモードに戻る
32~63ASCIIコード32~63

ベース256モード

Base 256モードのデータは、長さインジケータで始まり、その後にデータバイト数が続きます。1から249までの長さは1バイトとしてエンコードされ、それより長い長さは2バイトとして保存されます。

L1 = 床(長さ / 250)+ 249、L2 = 長さ mod 250

コード化されたメッセージには長いゼロ列が含まれることは避けるべきです。なぜなら、それらはデータマトリックスシンボル内で大きな空白領域となり、スキャナーの同期が失われる可能性があるからです。(このため、デフォルトのASCIIエンコードではゼロは使用されません。)この可能性を低減するために、長さとデータバイトは疑似乱数R(n)を追加することで隠蔽されます。ここで、nはバイトストリーム内の位置です。

R(n) = (149 × n) mod 255 + 1

特許問題

2007年11月に米国特許5,612,524号[ 11 ]が失効する前に、知的財産会社アカシア・テクノロジーズは、データマトリックスがその特許内容の一部で保護されていると主張しました。特許権者であるアカシアは、データマトリックスのユーザーに連絡を取り、特許に関連するライセンス料を要求したとされています。

2次元バーコード機器の大手メーカーであるコグネックス社は、アカシア社が顧客にライセンス料を要求して連絡してきたという情報を受け、2006年3月13日に確認判決を求める訴状を提出した。2008年5月19日、ミネソタ州連邦地方裁判所のジョアン・N・エリクセン判事はコグネックスに有利な判決を下した。 [ 12 ]この判決は、2次元シンボルコードの読み取り・キャプチャシステムに関する特許を主張する524特許は、特許取得における被告の 不公正な行為により無効かつ執行不能であるとの判断を示した。

この判決は特許の有効期限が切れた後に下されたものの、2007 年 11 月以前の Data Matrix の使用に基づく特許侵害の申し立ては排除されました。

ドイツ特許出願 DE 4107020 は 1991 年に出願され、1992 年に公開されました。この特許は上記の米国特許出願では引用されておらず、それらの特許出願を無効にする可能性があります。

参照

参考文献

  1. ^ 「データマトリックスバーコード」 。2017年9月14日時点のオリジナルよりアーカイブ。
  2. ^ Stevenson, Rick (2005年12月). 「PCBへのレーザーマーキングマトリックスコード」(PDF) .プリント回路設計・製造. 2007年5月31日閲覧.
  3. ^ Stefan, V. (2012). データベースを備えたモバイルアプリケーション開発における2Dコードの活用. Valahian Journal of Economic Studies, 3 (2), 105-114. https://econpapers.repec.org/article/vlhjournl/v_3a3_3ay_3a2012_3ai_3a2_3ap_3a105-114.htmより取得
  4. ^ 「ドイツ人男性が小麦畑に「Hello World」をプログラム」 arstechnica.com 2007年6月11日. 2017年2月22日閲覧
  5. ^ 「データマトリックスとPDF417データ整合性テスト」(PDF) . idautomation.com . 2019年8月20日時点のオリジナル(PDF)からアーカイブ。 2019年8月20日閲覧
  6. ^ Engin, Thomas. 「QRコードスキャナーオンライン」 . 2022年2月27日閲覧
  7. ^ 「ISO/IEC 16022:2024」
  8. ^この規格の ISO 電子商取引ページhttp://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=44230
  9. ^ 「GitHub – zxing/zxing: 公式ZXing(「Zebra Crossing」)プロジェクトホーム」 . google.com . 2017年2月22日閲覧
  10. ^ "libdmtx Home" . sourceforge.net . 2017年2月22日閲覧
  11. ^ US 5612524、サンタンセルモ、カール、サンタンセルモ、ロバート、フーパー、デビッドC.、「識別シンボルシステムおよび方向付け機構を備えた方法」、1997年3月18日発行、1997年3月18日発行 
  12. ^ 「CognexがAcacia特許524号を無効に、次は?ビジネス上の名誉毀損で訴訟」 Groklaw 2008年6月23日。2010年5月5日時点のオリジナルよりアーカイブ。