Parser MRZ dan kalkulator check digit
Tempelkan zona baca mesin (MRZ) dari paspor, kartu identitas, atau visa: TD3, TD2, atau TD1. Formatnya dikenali, setiap kolom dibacakan, dan setiap check digit ICAO 9303 dihitung ulang lalu dibandingkan dengan yang tercetak. Semuanya berjalan di browser Anda; tidak ada yang keluar dari halaman ini.
Apa itu zona baca mesin
Zona baca mesin (MRZ) adalah blok baris berlebar tetap di bagian bawah paspor atau kartu identitas, yang distandarkan oleh ICAO Doc 9303. Zona ini mengodekan nomor dokumen, negara penerbit, nama, kewarganegaraan, tanggal lahir, jenis kelamin, dan tanggal kedaluwarsa, masing-masing pada posisi tetap, dengan check digit yang memverifikasi hasil pembacaan.
Letak setiap kolom di TD1, TD2, dan TD3
Posisi dihitung mulai dari 1 pada setiap baris, sesuai penomoran ICAO 9303. Setiap check digit terletak tepat setelah kolom yang dilindunginya; digit komposit adalah karakter terakhir pada barisnya.
| Kolom | TD3 (paspor) | TD2 | TD1 (kartu identitas) |
|---|---|---|---|
| Kode dokumen | baris 1, 1–2 | baris 1, 1–2 | baris 1, 1–2 |
| Negara penerbit | baris 1, 3–5 | baris 1, 3–5 | baris 1, 3–5 |
| Nama | baris 1, 6–44 | baris 1, 6–36 | baris 3, 1–30 |
| Nomor dokumen | baris 2, 1–9 | baris 2, 1–9 | baris 1, 6–14 |
| check digit-nya | baris 2, 10 | baris 2, 10 | baris 1, 15 |
| Kewarganegaraan | baris 2, 11–13 | baris 2, 11–13 | baris 2, 16–18 |
| Tanggal lahir | baris 2, 14–19 | baris 2, 14–19 | baris 2, 1–6 |
| check digit-nya | baris 2, 20 | baris 2, 20 | baris 2, 7 |
| Jenis kelamin | baris 2, 21 | baris 2, 21 | baris 2, 8 |
| Tanggal kedaluwarsa | baris 2, 22–27 | baris 2, 22–27 | baris 2, 9–14 |
| check digit-nya | baris 2, 28 | baris 2, 28 | baris 2, 15 |
| Nomor pribadi | baris 2, 29–42 | – | – |
| check digit-nya | baris 2, 43 | – | – |
| Check digit komposit | baris 2, 44 | baris 2, 36 | baris 2, 30 |
Cara menghitung check digit
- Ambil kolom yang dilindungi oleh digit tersebut: nomor dokumen, tanggal lahir, tanggal kedaluwarsa, nomor pribadi, atau seluruh rentang digit komposit.
- Beri setiap karakter nilainya: angka bernilai sesuai angkanya, huruf bernilai urutannya dalam alfabet ditambah sembilan (A = 10, Z = 35), dan karakter pengisi < bernilai nol.
- Kalikan setiap nilai dengan bobot posisinya. Bobot berulang 7, 3, 1 di sepanjang kolom, dimulai dengan 7 pada karakter pertama.
- Jumlahkan semua hasil kalinya.
- Check digit adalah jumlah itu modulo 10, yaitu angka terakhir dari totalnya.
Berikut perhitungannya pada nomor paspor spesimen AM7304518, sebuah dokumen fiktif yang bukan milik siapa pun:
| Karakter | Nilai | Bobot | Hasil kali |
|---|---|---|---|
| A | 10 | 7 | 70 |
| M | 22 | 3 | 66 |
| 7 | 7 | 1 | 7 |
| 3 | 3 | 7 | 21 |
| 0 | 0 | 3 | 0 |
| 4 | 4 | 1 | 4 |
| 5 | 5 | 7 | 35 |
| 1 | 1 | 3 | 3 |
| 8 | 8 | 1 | 8 |
| Jumlah, lalu modulo 10 | 214 → 4 | ||
Jadi, digit yang tercetak setelah AM7304518 di zona itu adalah 4. Muat contoh TD3 di atas, dan parser akan menghitung ulang angka yang sama di depan Anda.
Digit komposit
Satu digit lagi mencakup hampir seluruh zona sekaligus: digit komposit. Cara menghitungnya sama, pada rentang yang melewati kolom-kolom yang tidak dilindungi digit apa pun, dan pada TD1 rentang itu membentang di dua baris, bagian yang paling sering salah pada parser buatan sendiri. Zona yang semua digit kolomnya lolos tetapi digit kompositnya gagal telah disalin dengan benar per bagian, lalu disusun dengan salah.
Yang tidak dicakup oleh digit
Tidak ada check digit yang mencakup nama, dan tidak ada yang mencakup negara penerbit. Salah baca pada salah satunya tidak terdeteksi: aritmetikanya tetap cocok. Karena itulah membaca juga sisi cetak dokumen, lalu membandingkan kedua hasil bacaan, menangkap apa yang tidak bisa ditangkap oleh digit.
Pertanyaan yang sering diajukan
Apa itu MRZ?
Zona baca mesin (MRZ) adalah blok baris berlebar tetap di bagian bawah paspor atau kartu identitas, yang distandarkan oleh ICAO Doc 9303. Zona ini mengodekan nomor dokumen, negara penerbit, nama, kewarganegaraan, tanggal lahir, jenis kelamin, dan tanggal kedaluwarsa, masing-masing pada posisi tetap, dengan check digit yang memverifikasi hasil pembacaan.
Format apa saja yang didukung alat ini?
Ketiga format ICAO 9303: TD3, dua baris 44 karakter pada paspor; TD2, dua baris 36 karakter; dan TD1, tiga baris 30 karakter pada kartu identitas atau izin tinggal. Alat ini juga membaca dua format visa, MRV-A dan MRV-B, yang tidak memiliki digit komposit. Format dikenali dari jumlah baris dan panjangnya, lalu setiap check digit yang dimiliki format itu dihitung ulang.
Mengapa check digit bisa gagal?
Hampir selalu karena satu karakter di kolom yang dilindunginya salah dibaca atau salah ketik: huruf O yang tertukar dengan angka 0, huruf B dengan angka 8, atau karakter pengisi yang hilang di akhir baris. Tabel menampilkan digit yang tercetak di zona di samping digit hasil perhitungan dari data, beserta kolom yang dicakup digit itu. Jika digit kolom lolos tetapi digit komposit gagal, periksa karakter di antara kolom-kolom: digit komposit juga mencakup digit-digit kolom itu sendiri.
Apakah alat ini bisa membaca zona dari foto?
Tidak. Halaman ini membaca teks yang Anda tempelkan, dan tidak ada yang keluar dari browser Anda. Membaca zona dan halaman cetak dari foto adalah tugas API pengenalan: satu panggilan HTTP dengan gambarnya, dan kolom-kolomnya kembali sebagai JSON dengan check digit yang sama yang sudah diverifikasi.
Apakah Anda menyimpan data saya?
Tidak. Zona yang Anda tempelkan diurai oleh kode yang berjalan di browser Anda sendiri: tidak ada yang diunggah, dan tidak ada permintaan yang membawanya. Halaman ini adalah file statis, dan satu-satunya permintaan yang dibuatnya setelah dimuat adalah untuk menanyakan apakah ada pemberitahuan layanan yang perlu ditampilkan di bagian atas, sebuah panggilan yang tidak membawa apa pun yang Anda ketik. API pengenalan adalah hal terpisah yang harus Anda panggil dengan sengaja.
Langkah selanjutnya
- Generator MRZ – buat zona yang valid dengan check digit yang benar untuk data uji.
- TD1, TD2, dan TD3 – tiga format, jumlah baris dan karakter masing-masing, serta di bagian mana standar mendefinisikannya.
- Baca seluruh dokumen – sisi cetak sekaligus sisi yang dikodekan, dalam satu permintaan dan tanpa akun.
- OCR paspor per negara – negara-negara penerbit yang dibaca API ini, masing-masing dengan zona spesimennya sendiri.