無料で使えるパスポートOCR API
これは、アカウントを作る前から呼び出せる無料のパスポートOCR APIです。ドキュメントには公開サンドボックスキーが記載されており、このキーでIPアドレスごとに10回、本物の認識を実行できます。登録もクレジットカードも、営業担当との打ち合わせも必要ありません。登録すると、さらに20クレジットがアカウントに付与されます。その後は、認識できた書類1件につき1セント、どの処理量でも定額です。パスポート、身分証明書、渡航文書の写真またはスキャン画像を送ると、所持人、書類、見つかったすべてのフィールド、そしてチェックディジットを検証済みの機械読み取りゾーン(MRZ)を含む構造化JSONが返ります。失敗したスキャンには料金がかかりません。
アカウントなしで最初の認識を実行する
ドキュメントからキーをコピーして、画像をPOSTするだけです。連携作業はこれですべてです。
IMG=$(base64 -i passport.jpg | tr -d '\n')
curl -s https://api.doc.cheap/v1/scans \
-H "Authorization: Bearer sk_sandbox_public" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: first-call-1" \
-d '{"image":"'"$IMG"'","options":{"mode":"full"}}' sk_sandbox_public は公開サンドボックスキーです。意図的に公開しているもので、秘密情報ではなく、リクエスト数の制限があります。Idempotency-Key を付けると、再試行したリクエストが二重に課金されることはありません。キューを再実行する日に、これが効いてきます。
返ってくるもの
レスポンスの形式は1つだけで、8つのグループからなり、すべてのキーが常に含まれます。フィールド一覧ではすべてのキーとその型を確認でき、APIリファレンス(英語)が契約そのものです。
{
"meta": { "schema_version": "1.0", "status": "recognized", "billed": true,
"confidence": "high",
"timing": { "upload_ms": 118, "processing_ms": 684, "total_ms": 826 } },
"document": { "kind": "passport", "country": "GRC", "country_name": "Greece",
"number": "AM7304518", "series": null,
"issue_date": "2022-03-10", "expiry_date": "2032-03-10",
"is_expired": false, "days_remaining": 2001 },
"holder": { "given_names": "ELENI SOFIA", "surname": "PARADEIGMA",
"birth_date": "1994-03-08", "sex": "F", "nationality": "GRC" },
"mrz": { "status": "passed", "reason": null, "lines": ["…", "…"] },
"fields": [ "…" ], "images": { "…": null },
"quality": { "overall": "pass" },
"authenticity": { "overall": "not_checked", "checks": [] }
} - meta.status は次の5つの文字列のいずれかです:recognized、no_document_found、unreadable、unsupported_document、rejected。
- 日付は常にISO-8601形式です。値がない場合はnullになり、キー自体が省略されることはありません。
- meta.billed はすべてのレスポンスに含まれ、その呼び出しに料金がかかったかどうかを示します。
- fields[] には書類に含まれるすべてのフィールドが入ります。符号化されたゾーンと印字されたゾーンから別々に読み取り、それぞれに信頼度が付くため、2つの読み取り結果を比較できます。独自の文字体系で書かれた値は、ラテン文字への翻字と並べて、言語タグ付きで返ります。
例に登場する所持人は合成した見本です。架空の人物で、架空の値に対して実際のチェックディジット計算を適用しています。この人物のゾーンはMRZフォーマットのページで解説しています。
無料分を使い切った後の料金
書類1件あたり1¢。定額で、すべてのアカウントに、どの処理量でも同じ料金です。
処理量にかかわらず料金は1つだけです。段階制も、問い合わせが必要な価格表も、交渉もありません。1クレジットは1セントで、1セントは認識できた書類1件です。
課金されるのは認識できた書類だけです。 課金されるのは、正しく認識できた書類だけです。書類が見つからない、画像を読み取れない、種類を判定できないスキャンは、その判定結果を返すだけで料金はかかりません。
- ✓ 公開サンドボックスキーを使えば、アカウントなしで送信元アドレスごとに10件の書類を無料で認識できます。リクエストは結果にかかわらず1時間あたり最大10件です。
- ✓ 登録すると20件分の無料枠が残高に付与されます。
画像はどう扱われるか
サンドボックスキーでは何も保存しません。画像はディスクに書き込まれることはなく、リクエストの処理中だけメモリ上に置かれます。結果も保存されません。ご自身の live キーでは、あとで読み直せるよう結果が保持されます。期間はリクエストで指定した retain_hours、指定がなければアカウントの保存期間設定で、変更するまでは1年(8760時間)です。
何も保存したくない場合は retain_hours: 0 を送ってください。保存される結果も、後から取り出すものもありません。呼び出しごとに選べます。
写真を読み取れない場合
レスポンスがそのことを伝え、料金はかかりません。meta.status でケースを区別でき、3つのいずれの場合も meta.billed は false です。
no_document_found– フレーム内に書類らしきものがない.unreadable– 書類は見つかったが読み取れない(反射、ぼやけ、解像度).unsupported_document– 読み取れたが、その種類には対応していない.
すべてのレスポンスに処理時間の内訳が含まれます。リアルタイムの中央値は、ここで約束するのではなく稼働状況ページで公開しています。
キーがまったく不要な無料ツール
- MRZパーサー – TD1、TD2、TD3のゾーンを貼り付けると、すべてのフィールドとチェックディジットを確認できます。ブラウザ内で動作します。
- MRZジェネレーター – テスト用に有効なゾーンを作成できます。
- 書類フィールド一覧 – APIが返すフィールドの一覧を確認できます。
コードからではなくアシスタントから呼び出したい場合は、MCPサーバーが同じ認識機能を3つのツールとして提供しています。
よくある質問
パスポートOCRとは何ですか?
パスポートOCRとは、写真やスキャン画像からパスポートのデータページを機械で読み取ることです。対象は2つに分かれます。機械読み取りゾーン(MRZ)はページ下部にある44文字×2行で、機械で読み取るために設計された書体で印字され、チェックディジットで保護されています。視覚ゾーンは人が読むために印字されたすべての部分で、同じ氏名、番号、日付に加えて、出生地、発行機関、顔写真など、MRZには含まれない情報もあります。前者だけを読むほうが簡単ですが、得られる情報は少なくなります。両方を読めば、2つを突き合わせることができます。
無料のパスポートOCR APIはありますか?
はい、制限の範囲内であります。このAPIはドキュメントでサンドボックスキーを公開しており、アカウントもカードもなしで、IPアドレスごとに10回の本物の認識を実行できます。登録するとさらに20クレジットが加わり、支払いの前に合計30件の書類を処理できます。オフラインでは、オープンソースのPassportEyeライブラリとtesseractを使えば、ご自身のマシン上で機械読み取りゾーンを無料で読み取れます。ただし印字面は読み取れず、スマートフォンで撮った写真での精度は、ご自身で行う画像の前処理に完全に左右されます。「大量処理でもずっと無料」というサービスは、当社を含め、この分野のどこにも存在しません。
パスポートOCR APIの料金はいくらですか?
当社では書類1件あたり$0.01、どの処理量でも定額で、認識に失敗した場合は無料です。他社の公開価格は課金単位が異なります。ページ単位で課金する事業者もあれば、当社のように書類単位で課金する事業者もあるため、数字を比べる前に単位をそろえてください。各社の料金ページで確認し、リンクを付けた数字は比較ページに掲載しています。
パスポートの画像は保存されますか?
いいえ。画像はディスクに書き込まれることはなく、リクエストの処理中だけメモリ上に存在し、レスポンスを送信した時点で消えます。サンドボックスキーでは結果も保存されません。live キーでは、指定した retain_hours の間、指定がなければアカウントの保存期間設定(変更するまでは1年、8760時間)の間だけ保持され、retain_hours: 0 なら何も保持されません。ここには書類の保管庫がありません。それが「ユーザーのパスポートはどうなるのか」という問いへの端的な答えです。
写真が読み取れない場合はどうなりますか?
レスポンスは返り、料金はかかりません。レスポンスには meta.status(書類は見つかったが読み取れなかった場合はunreadable、フレーム内に書類らしきものがなかった場合は no_document_found)と、false の meta.billed が含まれます。quality グループには画像そのものについての判定が入ります。ゾーンに光が反射しないように撮り直し、データページがフレームいっぱいに収まるようにして、ゾーンの解像度をおよそ300 DPI以上に保ってください。