イントロダクション
MRZ(Machine Readable Zone、機械可読領域)は、パスポート、ビザ、身分証明書などの旅行文書にある特定の領域を指します。この領域に記載された情報は、機械によって迅速に読み取ることができます。MRZ は国際民間航空機関(ICAO)の第 9303 号文書に基づいて設計および生成され、国境検査の迅速化と情報処理の精度向上に使用されます。
興味のある読者は、第 9303 号文書を参照できます。
MRZ が何かを知らない人も多いかもしれませんが、通常、手元にあるパスポートには MRZ 区画があり、このような形をしています。赤枠の部分です:
パスポート以外にも、特定の国の身分証明書、運転免許証、ビザなどの証明書にも MRZ 区画があります。
MRZ 区画にはいくつかの顕著な特徴があります:
- 固定された構造:異なる種類の MRZ には異なる構造があり、各フィールドの意味も固定されています。
- 文字エリアがクリーン:MRZ の背景は単色で、文字は黒色で、文字間に一定の間隔があります。
- 分類が簡単:MRZ 区画の文字は数字と大文字英字のみで、候補となる文字は全部で 37 文字です。
MRZ の構造は、証明書の種類によって異なります。主に以下のいくつかの種類があります:
- TD1(身分証明書など):3 行、各行 30 文字で、合計 90 文字。
- TD2(パスポートカードなど):2 行、各行 36 文字で、合計 72 文字。
- TD3(パスポートなど):2 行、各行 44 文字で、合計 88 文字。
- MRVA(ビザタイプ A):2 行、各行 44 文字で、合計 88 文字。
- MRVB(ビザタイプ B):2 行、各行 36 文字で、合計 72 文字。
構造の紹介
MRZ の構造については、著名な MRZ 解析の GitHub プロジェクトArg0s1080/mrzを参考にします:
上の図から、各 MRZ 区画の意味が明確に分かります:
- Type:証明書の種類(パスポート、身分証明書、ビザなど)
- Country Code:発行国コード
- Surname:姓
- Given Names:名前
- Document Number:証明書番号
- National:国籍
- Date of Birth:生年月日
- Date of Expiry:有効期限
- Optional:オプションのフィールド
文字認識
今回のテーマは「MRZ 文字認識」であり、これはあまり一般的ではない分野で、研究論文も少ないです。しかし、問題を分解すると、これは OCR(光学式文字認識)の問題であり、いくつかの OCR モデルを微調整すれば問題が解決することがわかります。
しかし、それは無駄です!とても無駄です!
OCR モデルは、通常、数字、大文字、記号などのさまざまな文字タイプを認識するように設計されています。予測対象が数千種類の文字クラスをカバーしているため、これらのモデルは複雑で計算リソースも多く必要です。
このようなモデルをそのまま MRZ 認識に適用するのは、あまりプロフェッショナルとは言えませんよね?
したがって、MRZ の特徴に特化したモデルを新たに設計する必要があります。専用のモデルを使用することで、余計な文字タイプを処理する必要がなくなり、計算リソースを節約し、認識速度と精度を向上させることができます。
二段階認識
専用のモデルを設計するため、MRZ 認識を 2 段階に分けることができます:
- 領域検出:軽量のモデルを使用して、画像内の MRZ 区画を検出します。
- 文字認識:軽量のモデルを使用して、画像内の MRZ 区画の文字を認識します。
実際にやってみた結果、MRZ 検出モデルを半月で完成させ、その後 MRZ 認識モデルを 1 ヶ月で完成させました。全体のパフォーマンスはかなり良好で、自己準備したテストセット(約 300 枚の MRZ 証明書)で、全画像精度は 97.02%、ANLS は 99.97%に達しました。
全画像精度と ANLS はモデルのパフォーマンスを評価するための指標です。これらの指標の詳細については、別の章: モデル評価を参照してください。
1 組の MRZ 区画の最小文字数は 72 文字、最大文字数は 90 文字です。
実験の結果、全画像精度 95%を目指す場合、ANLS の数値は少なくとも 99.95%程度にする必要があります。実際には、これは簡単なことではありません。
この方法での唯一の欠点は・・・
とても退屈
どう見ても、「順風満帆」にこの課題をクリアしたことは、公務的にやったことに過ぎません。
お客様からの要求が来たので、手順通りに完了しただけです。そのため、納品後はこの解決策を放り出し、新しい解決策を考え始めました。
もし二段階認識を使わないなら、単段階認識しかありません!
元の画像から MRZ 区画の文字を直接認識しなければなりません。
単段階認識
そして、私たちはさらに 3 ヶ月をかけて、単段階の MRZ 認識モデルを完成させました。結果は期待外れで、全画像精度は約 40%、ANLS は 97%でした。
正直、予想以上に時間がかかり、少し損をした気分です。この問題は想像以上に難しいものでした。何度も「もういいか」と思いました。二段階解決策は退屈でしたが、少なくとも精度が高かったので、わざわざ自分から難題に挑戦する必要はなかったのではないかと。
単段階モデルの難しさにはいくつかの要因があります:
- 全画像範囲の検索のサイズとスケールが不一致。
- 方向が不安定な MRZ 区画。
- 詳細な認識を強化するために計算量が爆発的に増加。
この前提の下で、モデルはモバイル端末アプリケーションの要求に応えるために軽量でなければならず、さまざまな要因が収束を難しくし、結果として精度が低くなりました。
技術的な詳細については、後の章で説明します:モデル設計。
結局のところ、開発過程で何度も落胆しましたが、段階的な成果として一つの段階を終えることができました。既に費やした時間とお金は戻らないので、この解決策をオープンソースとして公開し、みんなと共有しようと思いました。
単段階解決策は、私たちが考える完全体に向けた「途中段階」の成果に過ぎません。理想的には、より堅牢で精度の高いモデルを開発し、さらに多くのアプリケーションシーンに対応できるようにしたいと考えています。
私たちは今後、さらに多くの論文を読んで、モデルのパフォーマンスを継続的に改善していく予定です。
遊び場
このモデルをウェブページに組み込んでおり、遊び場で試すことができます。
使用中にバグを見つけた場合は、悪用を避けるため、私たちにプライベートで通知してください。迅速に対応します。
最後に
このプロジェクトで私たちは次の機能を完成させました:
- 合成データセットの有効性を確認しました。
- MRZ 領域の検出と認識の二段階解決策を完成させました。
- MRZ 検出と認識を統合し、単段階認識モデルを完成させました。
- すべての形式の MRZ ファイルを統合し、統一された解析インターフェースを提供しました。
このテーマに興味がある場合は、ぜひテストしてみてください。フィードバックをお待ちしています。
また、ご提案があれば、お気軽にお知らせください。交流を楽しみにしています。