日本のパスポートに対応したOCR API

日本のパスポートの写真を送ると、同じHTTPレスポンスで構造化データが返ります。解析済みの機械読み取りゾーン(MRZ)、検証済みのICAO 9303チェックディジット、抽出済みの視覚フィールドです。インストールするSDKも、ポーリングするキューもありません。

日本のパスポートを認識する

日本のパスポートはICAO 9303規格に準拠しています。データページの下部、人が読む視覚検査ゾーンの下に、44文字×2行の機械読み取りゾーン(フォーマットTD3)が印字されています。最初の5文字はP<JPNで、書類コードに続いて、発行国がISO 3166-1 alpha-3コードJPNで示されます。APIは両方のゾーンを読み取り、MRZのチェックディジットを照合し、すべてのキーを含む1つの形式のレスポンスを返します。

日本は、alpha-2のリストではJP、ゾーンではJPNです。この場合、長いコードは短いコードの後ろにNを付けたものです。ただしこれはこの組み合わせに限った話で、規則ではありません。一方からもう一方を導き出すと、当てはまらない最初の国でバグになります。

日本が発行する機械読み取りゾーン

9303はゾーンのレイアウトを3種類定めており、APIはそのすべてを読み取れます。以下では、架空の所持人(実在しない人物で、paradeigmaはギリシャ語でという意味です)を各レイアウトで示し、発行国はJPNとしています。チェックディジットはすべて、手で入力したものではなく隣の文字から計算したものなので、このページのゾーンはどれも検証を通ります。

TD3 – 日本のパスポート

44文字×2行。国籍JPN 発行国と国籍はどちらもJPNです。パスポートは、それを発行した国の国籍を証明するものだからです。

P<JPNPARADEIGMA<<ELENI<SOFIA<<<<<<<<<<<<<<<<
AM73045184JPN9403084F3203101PN48291630<<<<72

TD2 – 日本が発行する渡航文書

36文字×2行。国籍GRC JPNがGRC国籍の人に発行したものなので、2つのコードは異なります。ここでは氏名欄が、パスポートの39文字ではなく31文字です。

I<JPNPARADEIGMA<<ELENI<SOFIA<<<<<<<<
TR61850420GRC9403084F2911043<<<<<<<2

TD1 – 日本が発行する身分証明書または在留許可証

30文字×3行。国籍GRC 30文字×3行で、氏名は独立した1行に入ります。書類コードはIDです。9303 Part 5は1文字目をA、C、Iのいずれかに定め、2文字目は発行国に委ねています。

IDJPNAK472913<4PN48291630<<<<<
9403084F3405204GRC<<<<<<<<<<<9
PARADEIGMA<<ELENI<SOFIA<<<<<<<

発行国を保護するチェックディジットはありません。3つのレイアウトのいずれでも、計算の対象は書類番号、日付、任意データで、誰が書類を発行したかを示す3文字は対象外です。すべての桁が正しいゾーンであっても、日本が発行したことの証明にはなりません。それを証明するのは、視覚ゾーンと書類自体のセキュリティ機能です。

返ってくるフィールド

認識された日本のパスポートは、どれも同じ構造化フィールドを返します。読み取れなかった値はnullになり、キーが省略されることはありません。

  • 姓と名
  • 生年月日と性別
  • 書類番号と個人番号
  • 国籍と発行国(JPN)
  • 発行日と有効期限、残り日数
  • MRZの判定と、読み取り元の行

呼び出してみる

公開サンドボックスに対して実行してください。登録不要で、本物の認識が、限られた件数の書類まで無料で、IPごとに1時間あたり10リクエストまで利用できます。日本のパスポートの認識を続けるには、サンドボックスキーをご自身の本番用キーに置き換えてください。

curl -X POST https://api.doc.cheap/v1/scans \
  -H "Authorization: Bearer sk_sandbox_public" \
  -H "Content-Type: application/json" \
  -d "{\"image\": \"$(base64 < document.jpg | tr -d '\n')\"}"

ドキュメントの参照先

このページでは日本に固有の内容を扱っています。それ以外のことはすべて、以下の4つのページ(英語)にまとめています。

  • パスポートを認識する

    上の呼び出しを実際の書類で、curl、JavaScript、Pythonで実行する方法と、レスポンスの各キーの説明。

  • MRZと視覚ゾーン

    書類が同じデータを2回印字する理由、両者が食い違うときにどちらを信じるか、チェックディジットで証明できることとできないこと。

  • フィールドの言語と文字体系

    MRZはラテン文字への翻字であり、視覚ゾーンはそうではありません。どの読み取り結果が元の文字体系を保持するか、言語識別子がどの言語に対応するか。

  • エラー

    APIが返しうるすべてのエラーコードを1つの表に。原因、再試行で解決しうるか、その呼び出しが課金されたかどうか。

日本のパスポートの認識を始める

最初の呼び出しが成功するまで60秒以内、書類1件あたり1¢、書類の画像は保存されません。

お支払いいただくのは、実際に認識できた書類の分だけです。

写真がぼやけている、フレーム内に書類がない、種類が不明、といった場合はどれも無料です。失敗したスキャンに料金がかかることはありません。