MRZジェネレーター

正しいチェックディジットを備えた、有効なパスポートの機械読み取りゾーン(ICAO 9303 TD3)を作成します。テスト用データの作成に使ってください。出力は合成データであり、実在の個人データを決して含めてはいけません。

生成されたMRZ

P<GRCPARADEIGMA<<ELENI<SOFIA<<<<<<<<<<<<<<<<
AM73045184GRC9403084F3203101PN48291630<<<<72

機械読み取りゾーンとは

機械読み取りゾーン(MRZ)は、パスポートや身分証明書の下部にある固定幅の数行からなるブロックで、ICAO Doc 9303で標準化されています。書類番号、発行国、氏名、国籍、生年月日、性別、有効期限をそれぞれ決まった位置に記録し、読み取りを検証するためのチェックディジットを備えています。

上のチェックディジットの計算方法

  1. チェックディジットが保護するフィールドを取り出します。書類番号、生年月日、有効期限、個人番号、または複合チェックディジットの範囲全体です。
  2. 各文字に値を割り当てます。数字はその数値のまま、英字はアルファベット順の位置に9を足した値(A = 10、Z = 35)、埋め文字<は0です。
  3. 各値に、位置ごとの重みを掛けます。重みは先頭の文字の7から始まり、フィールド全体で7, 3, 1の順に繰り返します。
  4. 積をすべて足し合わせます。
  5. その合計を10で割った余り、つまり合計の一の位がチェックディジットです。

見本のパスポート番号AM7304518(誰のものでもない架空の書類)で計算すると、次のようになります。

見本の書類番号で、7-3-1の重み付けを1文字ずつ計算した例
文字重み
A10770
M22366
7717
33721
0030
4414
55735
1133
8818
合計と、10で割った余り214 → 4

上のフォームで書類番号にAM7304518を入力すると、生成されたゾーンでその後ろに続く桁は4になります。同じ計算を、同じコードが実行しています。

複合チェックディジット

もう1つの桁が、ゾーンのほぼ全体をまとめて保護します。それが複合チェックディジットです。計算方法は同じで、どの桁にも保護されないフィールドを除いた範囲が対象です。TD1ではこの範囲が2行にまたがり、自作のパーサーがよく間違えるのはこの部分です。各フィールドの桁はすべて合っているのに複合チェックディジットだけが合わないゾーンは、部分ごとには正しく書き写されたものの、組み立てを誤っています。

チェックディジットが保護しないもの

氏名を保護するチェックディジットはなく、発行国を保護するものもありません。どちらかを読み違えても計算は合ったままなので、誤りに気づけません。だからこそ、書類の印字面も読み取って2つの結果を照合すれば、チェックディジットでは見つけられない誤りを検出できます。

よくある質問

MRZとは何ですか?

機械読み取りゾーン(MRZ)は、パスポートや身分証明書の下部にある固定幅の数行からなるブロックで、ICAO Doc 9303で標準化されています。書類番号、発行国、氏名、国籍、生年月日、性別、有効期限をそれぞれ決まった位置に記録し、読み取りを検証するためのチェックディジットを備えています。

このツールはどのフォーマットに対応していますか?

このジェネレーターが作成するのはTD3(パスポートの44文字×2行)で、複合チェックディジットを含むすべてのチェックディジットを、入力した値から計算します。フォーマットの解説ページでは、TD1とTD2についても、それぞれの具体例とあわせて説明しています。

入力したデータは保存されますか?

いいえ。ゾーンはご自身のブラウザで動くコードが作成し、ページの外に出ることはありません。何もアップロードされず、入力値を含むリクエストも一切送信されません。このページは静的ファイルで、読み込み後に行う唯一のリクエストは、ページ上部に表示するサービスのお知らせがあるかどうかの問い合わせです。それでも、値は架空のものを使ってください。生成したゾーンはテスト用データのためのもので、実在の個人データを入れるべきではありません。

次に読むページ

  • MRZパーサー – ゾーンを貼り付けると、すべてのチェックディジットが再計算される様子を確認できます。
  • TD1・TD2・TD3 – 3つのフォーマットそれぞれの行数と文字数、そして標準のどこで定義されているか。
  • 書類全体を読み取る – 符号化された面に加えて印字面も、1回のリクエストで、アカウントなしで。
  • 国別のパスポートOCR – このAPIが読み取る発行国の一覧。国ごとに見本のゾーンがあります。