Trình phân tích MRZ và tính chữ số kiểm tra
Dán vùng đọc máy (MRZ) của hộ chiếu, thẻ căn cước hoặc thị thực – TD3, TD2 hoặc TD1. Định dạng được tự nhận diện, từng trường được đọc ra, và mọi chữ số kiểm tra (check digit) ICAO 9303 được tính lại rồi so với chữ số được in. Mọi thứ chạy trong trình duyệt của bạn; không có gì rời khỏi trang.
Vùng đọc máy là gì
Vùng đọc máy (MRZ) là khối dòng độ rộng cố định ở cuối hộ chiếu hoặc thẻ căn cước, theo chuẩn ICAO Doc 9303. Nó mã hóa số giấy tờ, nước cấp, họ tên, quốc tịch, ngày sinh, giới tính, hạn dùng ở vị trí cố định, kèm chữ số kiểm tra để xác minh.
Vị trí của từng trường trong TD1, TD2 và TD3
Vị trí được đếm từ 1 trên mỗi dòng, theo cách ICAO 9303 đánh số. Mỗi chữ số kiểm tra đứng ngay sau trường mà nó bảo vệ; chữ số tổng hợp là ký tự cuối cùng của dòng chứa nó.
| Trường | TD3 (hộ chiếu) | TD2 | TD1 (thẻ căn cước) |
|---|---|---|---|
| Mã giấy tờ | dòng 1, 1–2 | dòng 1, 1–2 | dòng 1, 1–2 |
| Quốc gia cấp | dòng 1, 3–5 | dòng 1, 3–5 | dòng 1, 3–5 |
| Họ tên | dòng 1, 6–44 | dòng 1, 6–36 | dòng 3, 1–30 |
| Số giấy tờ | dòng 2, 1–9 | dòng 2, 1–9 | dòng 1, 6–14 |
| chữ số kiểm tra của trường | dòng 2, 10 | dòng 2, 10 | dòng 1, 15 |
| Quốc tịch | dòng 2, 11–13 | dòng 2, 11–13 | dòng 2, 16–18 |
| Ngày sinh | dòng 2, 14–19 | dòng 2, 14–19 | dòng 2, 1–6 |
| chữ số kiểm tra của trường | dòng 2, 20 | dòng 2, 20 | dòng 2, 7 |
| Giới tính | dòng 2, 21 | dòng 2, 21 | dòng 2, 8 |
| Ngày hết hạn | dòng 2, 22–27 | dòng 2, 22–27 | dòng 2, 9–14 |
| chữ số kiểm tra của trường | dòng 2, 28 | dòng 2, 28 | dòng 2, 15 |
| Số cá nhân | dòng 2, 29–42 | – | – |
| chữ số kiểm tra của trường | dòng 2, 43 | – | – |
| Chữ số kiểm tra tổng hợp | dòng 2, 44 | dòng 2, 36 | dòng 2, 30 |
Cách tính một chữ số kiểm tra
- Lấy trường mà chữ số kiểm tra bảo vệ: số giấy tờ, ngày sinh, ngày hết hạn, số cá nhân, hoặc toàn bộ phạm vi của chữ số tổng hợp.
- Gán giá trị cho từng ký tự: chữ số giữ nguyên giá trị của nó, chữ cái bằng thứ tự trong bảng chữ cái cộng chín (A = 10, Z = 35), còn ký tự đệm < bằng không.
- Nhân mỗi giá trị với trọng số theo vị trí. Trọng số lặp lại 7, 3, 1 dọc theo trường, bắt đầu bằng 7 ở ký tự đầu tiên.
- Cộng tất cả các tích lại.
- Chữ số kiểm tra là tổng đó modulo 10, tức chữ số cuối cùng của tổng.
Cách tính áp dụng trên số hộ chiếu của mẫu, AM7304518, một giấy tờ bịa ra và không thuộc về ai:
| Ký tự | Giá trị | Trọng số | Tích |
|---|---|---|---|
| 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 |
| Tổng, rồi modulo 10 | 214 → 4 | ||
Vậy chữ số được in sau AM7304518 trong vùng đó là 4. Tải ví dụ TD3 ở trên và trình phân tích sẽ tính lại đúng con số này ngay trước mắt bạn.
Chữ số kiểm tra tổng hợp
Còn một chữ số nữa bao phủ gần như cả vùng cùng lúc: chữ số tổng hợp. Nó được tính theo cùng một cách, trên một phạm vi bỏ qua các trường không có chữ số nào bảo vệ – và ở TD1 phạm vi đó trải trên hai dòng, chính là chỗ một trình phân tích tự viết thường sai. Một vùng có mọi chữ số của từng trường đều đúng nhưng chữ số tổng hợp lại sai là vùng đã được chép đúng từng phần nhưng ghép lại sai.
Những gì các chữ số không bao phủ
Không chữ số kiểm tra nào bao phủ họ tên, và cũng không chữ số nào bao phủ quốc gia cấp. Một lỗi đọc ở một trong hai trường này sẽ không lộ ra: phép tính vẫn khớp. Vì vậy, đọc thêm mặt in của giấy tờ và so sánh hai kết quả đọc sẽ phát hiện được điều mà các chữ số không thể.
Câu hỏi thường gặp
MRZ là gì?
Vùng đọc máy (MRZ) là khối dòng độ rộng cố định ở cuối hộ chiếu hoặc thẻ căn cước, theo chuẩn ICAO Doc 9303. Nó mã hóa số giấy tờ, nước cấp, họ tên, quốc tịch, ngày sinh, giới tính, hạn dùng ở vị trí cố định, kèm chữ số kiểm tra để xác minh.
Công cụ này hỗ trợ những định dạng nào?
Cả ba bố cục ICAO 9303: TD3, hai dòng 44 ký tự trên hộ chiếu; TD2, hai dòng 36 ký tự; và TD1, ba dòng 30 ký tự trên thẻ căn cước hoặc thẻ cư trú. Công cụ cũng đọc hai bố cục thị thực MRV-A và MRV-B, vốn không có chữ số tổng hợp. Định dạng được nhận diện từ số dòng và độ dài của chúng, và mọi chữ số kiểm tra mà định dạng đó có đều được tính lại.
Vì sao một chữ số kiểm tra bị sai?
Gần như luôn vì một ký tự trong trường mà nó bảo vệ đã bị đọc sai hoặc gõ sai: chữ O thay cho số 0, chữ B thay cho số 8, một ký tự đệm bị mất ở cuối dòng. Bảng hiển thị chữ số mà vùng in bên cạnh chữ số tính từ dữ liệu, cùng trường mà chữ số đó bao phủ. Khi chữ số của một trường đúng mà chữ số tổng hợp sai, hãy xem các ký tự nằm giữa các trường – chữ số tổng hợp cũng bao phủ chính các chữ số của từng trường.
Công cụ có đọc được vùng này từ ảnh chụp không?
Không. Trang này đọc văn bản bạn dán vào, và không có gì rời khỏi trình duyệt của bạn. Đọc vùng MRZ và trang in từ ảnh chụp là việc của API nhận dạng: một lệnh gọi HTTP kèm ảnh, và các trường trả về dạng JSON với chính những chữ số kiểm tra này đã được xác minh.
Các bạn có lưu dữ liệu nào của tôi không?
Không. Vùng bạn dán được phân tích bằng mã chạy trong chính trình duyệt của bạn: không có gì được tải lên, và không có yêu cầu nào mang theo nó. Trang này là một tệp tĩnh, và yêu cầu duy nhất nó gửi sau khi tải xong là hỏi xem có thông báo dịch vụ nào cần hiển thị ở đầu trang không – một lệnh gọi không mang theo bất cứ thứ gì bạn đã gõ. API nhận dạng là một thứ riêng mà bạn phải chủ động gọi.
Đọc tiếp ở đâu
- Trình tạo MRZ – tạo một vùng hợp lệ với chữ số kiểm tra đúng cho dữ liệu kiểm thử.
- TD1, TD2 và TD3 – ba bố cục, số dòng và số ký tự của mỗi bố cục, và nơi tiêu chuẩn định nghĩa từng bố cục.
- Đọc toàn bộ giấy tờ – cả mặt in lẫn phần mã hóa, trong một yêu cầu và không cần tài khoản.
- OCR hộ chiếu theo quốc gia – các quốc gia cấp mà API này đọc được, mỗi nước có vùng mẫu riêng.