API OCR Paspor: Ekstrak Data dan MRZ dari Satu Foto
Unggah foto halaman data paspor, terima 16 field terstruktur beserta dua baris MRZ dalam satu respons JSON. Bayar Rp300 per scan, tanpa langganan dan tanpa biaya minimum bulanan.
{
"is_success": true,
"message": "Success",
"data": {
"passport_number": "X1234567",
"full_name": "JOHN DOE",
"nationality": "INDONESIA",
"date_of_birth": "01-01-1990",
"date_of_expiry": "01-01-2034",
"mrz_line2": "X1234567<7IDN9001011M3401011<<<2"
}
}
# Dipotong untuk ringkas. Objek data berisi 16 field.Dipercaya oleh bisnis di berbagai industri
Dari instansi pemerintah, teknologi, dan pendidikan sampai kesehatan dan telekomunikasi, mencakup 8 sektor industri di seluruh Indonesia.
Yang Dilakukan API OCR Paspor Ini
Daftar ini dibatasi pada yang benar-benar ada di kontrak API. Batasannya kami sebutkan terbuka di bagian berikutnya.
Enam belas field sekali panggil
Nomor paspor, nama lengkap, surname dan given names, kewarganegaraan, tanggal lahir, jenis kelamin, tempat lahir, tanggal terbit, tanggal kedaluwarsa, kantor penerbit, dan nomor registrasi keluar dalam satu respons JSON.
Dua baris MRZ mentah
Machine Readable Zone di bagian bawah halaman data dikembalikan apa adanya sebagai mrz_line1 dan mrz_line2, siap Anda validasi sendiri kalau butuh pemeriksaan checksum.
MRZ dipakai saat teks berbeda
Kalau teks cetak dan MRZ tidak sepakat, nilai dari MRZ yang dipakai. MRZ dicetak mesin dan lebih tahan terhadap foto miring, pantulan, dan cetakan yang pudar.
Format keluaran yang konsisten
Tanggal selalu DD-MM-YYYY dan jenis kelamin selalu M atau F, jadi Anda tidak perlu menormalkan sendiri sebelum menyimpan ke basis data.
Satu endpoint, multipart biasa
POST satu file ke /ocr/passport-extract. Tidak ada antrean, tidak ada polling, tidak ada webhook yang harus disiapkan lebih dulu.
API key yang sama
Header x-api-co-id yang sama dengan OCR KTP, OCR SIM, Face Matching, dan seluruh produk lain. Satu akun, satu saldo, satu tagihan.
Yang Belum Bisa, dan Kenapa
Lebih baik Anda tahu batasnya sekarang daripada setelah integrasi berjalan di produksi.
Bukan pemeriksa keaslian
Endpoint ini membaca isi halaman data, bukan menilai dokumennya asli atau palsu. Responsnya tidak memuat verdict keaslian. Untuk itu pasangkan dengan Passive Liveness dan Face Matching.
Hanya halaman data
Halaman visa, stempel imigrasi, dan sampul tidak dibaca. Yang dibutuhkan adalah halaman berfoto yang memuat biodata beserta dua baris MRZ di bawahnya.
Gambar saja, bukan PDF
JPG, JPEG, dan PNG sampai 5 MB. Hasil pindai berformat PDF perlu diubah dulu jadi gambar sebelum dikirim.
Tidak membaca chip e-paspor
Yang dibaca adalah apa yang tercetak di halaman data beserta MRZ-nya. Chip NFC pada e-paspor memerlukan perangkat dan protokol berbeda, di luar cakupan endpoint ini.
Cakupan negara belum dinyatakan
Dokumentasi resminya belum memuat daftar negara penerbit yang didukung, dan contoh yang dipublikasikan memakai paspor Indonesia. Tanyakan lebih dulu kalau Anda butuh paspor terbitan negara lain.
Tanpa kuota gratis
Produk ini murni bayar per pemakaian, tidak ada jatah scan gratis bulanan. Saldo poin dipotong per permintaan yang berhasil diproses.
Satu POST, Satu Berkas
Cara Memakai API OCR Paspor
Daftar di dashboard lalu buat API key. Key yang sama berlaku untuk seluruh produk Api.co.id.
Satu POST multipart dengan field file berisi JPG atau PNG sampai 5 MB.
Respons JSON berisi objek data dengan seluruh field terstruktur beserta dua baris MRZ.
Kalau butuh memastikan pemiliknya, teruskan ke Face Matching dan Passive Liveness dengan key yang sama.
curl -X POST "https://use.api.co.id/ocr/passport-extract" \ -H "x-api-co-id: YOUR_API_KEY" \ -F "[email protected]"
import requests r = requests.post( "https://use.api.co.id/ocr/passport-extract", headers={"x-api-co-id": "YOUR_API_KEY"}, files={"file": open("paspor.jpg", "rb")}, ) data = r.json()["data"] print(data["passport_number"], data["date_of_expiry"])
const form = new FormData(); form.append("file", fs.createReadStream("paspor.jpg")); const res = await fetch( "https://use.api.co.id/ocr/passport-extract", { method: "POST", headers: { "x-api-co-id": key }, body: form } ); const { data } = await res.json();
{
"is_success": true,
"message": "Success",
"data": {
"passport_type": "P",
"country_code": "IDN",
"passport_number": "X1234567",
"surname": "DOE",
"given_names": "JOHN",
"sex": "M",
"place_of_birth": "JAKARTA",
"issuing_office": "JAKARTA PUSAT"
}
}
# Delapan field lain dipotong agar ringkas.Enam Belas Field pada Objek Data
Kolom sumber menunjukkan dari mana nilainya dibaca. Ketika keduanya berbeda, MRZ yang dipakai.
| Field | Isi | Sumber |
|---|---|---|
passport_type | Jenis paspor, misalnya P untuk paspor biasa | MRZ |
country_code | Kode negara penerbit tiga huruf | MRZ |
passport_number | Nomor paspor | MRZ dan cetak |
full_name | Nama lengkap sesuai halaman data | Cetak |
surname | Nama keluarga | MRZ |
given_names | Nama depan dan tengah | MRZ |
nationality | Kewarganegaraan | MRZ dan cetak |
date_of_birth | Tanggal lahir, format DD-MM-YYYY | MRZ dan cetak |
sex | Jenis kelamin, M atau F | MRZ |
place_of_birth | Tempat lahir | Cetak |
date_of_issue | Tanggal terbit, format DD-MM-YYYY | Cetak |
date_of_expiry | Tanggal kedaluwarsa, format DD-MM-YYYY | MRZ dan cetak |
issuing_office | Kantor imigrasi penerbit | Cetak |
registration_number | Nomor registrasi | Cetak |
mrz_line1 | Baris pertama MRZ, apa adanya | MRZ |
mrz_line2 | Baris kedua MRZ, apa adanya | MRZ |
Tanggal dikembalikan dalam format DD-MM-YYYY dan jenis kelamin sebagai M atau F, jadi tidak perlu dinormalkan lagi sebelum disimpan.
Rp300 per Scan, Tanpa Langganan
Saldo poin dipotong per permintaan yang berhasil diproses. Tidak ada biaya bulanan, tidak ada biaya minimum, dan tidak ada kuota gratis untuk produk ini.
Pertanyaan Umum API OCR Paspor
Data apa saja yang dikembalikan API ini?
Enam belas field: jenis paspor, kode negara, nomor paspor, nama lengkap, surname, given names, kewarganegaraan, tanggal lahir, jenis kelamin, tempat lahir, tanggal terbit, tanggal kedaluwarsa, kantor penerbit, nomor registrasi, serta dua baris MRZ mentah. Semuanya dalam satu objek data di respons JSON.
Format dan ukuran file apa yang didukung?
JPG, JPEG, dan PNG, maksimal 5 MB per file. Dikirim sebagai multipart form data pada field bernama file. PDF belum didukung, jadi hasil pindai berformat PDF perlu Anda ubah dulu menjadi gambar.
Halaman paspor mana yang harus difoto?
Halaman data, yaitu halaman berfoto yang memuat biodata dan dua baris MRZ di bagian bawahnya. Halaman visa, halaman stempel imigrasi, dan sampul tidak dibaca karena tidak memuat field yang diekstrak.
Apa itu MRZ dan kenapa diutamakan?
MRZ adalah Machine Readable Zone, dua baris karakter di bagian bawah halaman data yang memang dirancang untuk dibaca mesin. Karena dicetak dalam font dan posisi baku, MRZ lebih tahan terhadap foto miring, pantulan cahaya, dan cetakan yang memudar dibanding teks biasa. Itu sebabnya ketika teks cetak dan MRZ berbeda, nilai MRZ yang dipakai.
Apakah API ini memeriksa keaslian paspor?
Tidak. API ini membaca dan menstrukturkan isi halaman data, bukan menilai dokumennya asli atau palsu, dan responsnya tidak memuat verdict keaslian. Untuk memastikan orang di depan kamera adalah pemilik paspornya, pasangkan dengan Passive Liveness Detection dan Face Matching.
Apakah paspor negara lain bisa dibaca?
Dokumentasi resminya belum menyatakan daftar negara yang didukung, dan contoh respons yang dipublikasikan memakai paspor Indonesia. Kalau kebutuhan Anda mencakup paspor terbitan negara lain, tanyakan lebih dulu ke tim kami sebelum mengintegrasikan.
Berapa biayanya dan apakah ada paket gratis?
Rp300 per scan, dipotong dari saldo poin, dan tidak ada biaya bulanan. Tidak ada kuota gratis untuk produk ini. Saldo dipotong untuk permintaan yang berhasil diproses, sehingga file rusak yang ditolak sistem tidak menagih.
Apakah bisa membaca chip pada e-paspor?
Belum. API ini menerima gambar dan membaca apa yang tercetak di halaman data beserta MRZ-nya. Membaca chip NFC pada e-paspor memerlukan perangkat dan protokol yang berbeda, dan itu di luar cakupan endpoint ini.
Baca Paspor Pertama Anda Hari Ini
Daftar, terbitkan API key, lalu kirim satu foto halaman data. Dokumentasi memuat koleksi Postman dan spesifikasi OpenAPI supaya permintaan pertama jalan tanpa menulis kode.
