Hộ chiếu Anh là một trong những giấy tờ mà quy trình onboarding tại Vương quốc Anh gặp nhiều nhất. Cơ quan phụ trách là HM Passport Office, nơi tự mô tả mình là "đơn vị duy nhất cấp hộ chiếu Vương quốc Anh" và, theo chính lời họ, chịu trách nhiệm "cấp hơn 6 triệu hộ chiếu mỗi năm cho công dân Anh và những người mang quốc tịch Anh khác". Nếu sản phẩm của bạn kiểm tra khách hàng ở Vương quốc Anh, bạn sẽ phải đọc rất nhiều hộ chiếu loại này.
Bài viết này dành cho các lập trình viên cần lấy dữ liệu từ hộ chiếu Anh đưa vào hệ thống của mình. Bài viết trình bày trang dữ liệu có gì, vùng đọc máy được bố trí ra sao, bạn sẽ gặp những mẫu nào trong năm 2026 và một lệnh gọi API trả về những gì. Mọi nhận định về bản thân hộ chiếu đều được trích từ GOV.UK hoặc ICAO, có đường dẫn ngay tại chỗ; bản gốc bằng tiếng Anh, bản dịch là của chúng tôi.
Đây là blog của doc.cheap, một API OCR hộ chiếu và giấy tờ tùy thân. Hãy đọc phần nói về sản phẩm với điều đó trong đầu.
Trang dữ liệu trong một hình
Hướng dẫn về thông tin hộ chiếu qua các thời kỳ của chính HM Passport Office mô tả cuốn hộ chiếu hiện hành. "Ngày 1 tháng 3 năm 2020, hộ chiếu điện tử series C của Vương quốc Anh (hộ chiếu điện tử màu xanh) được đưa dần vào sản xuất." Theo cùng trang đó, hộ chiếu này:
- "có trang thông tin cá nhân bằng polycarbonate bền chắc ở phía trước cuốn hộ chiếu"
- "có các ghi chú được in ở trang 3"
- "hiển thị ảnh hộ chiếu của khách hàng 3 lần trong cuốn hộ chiếu"
- "có chip điện tử được gắn bên trong trang thông tin cá nhân"
Với OCR, điều này có một ý nghĩa: mọi thứ bạn cần đều nằm trên một trang ở phía trước. Chụp trang đó phẳng và trọn vẹn, bạn có các trường in, ảnh chân dung và vùng đọc máy trong cùng một ảnh. Chip nằm trong chính trang đó, nhưng một bức ảnh không thể đọc chip; thứ một bức ảnh cho bạn là trang in.
Vùng đọc máy
MRZ là khối chữ in hoa, chữ số và ký tự đệm < chạy dọc mép dưới của trang dữ liệu. Cùng hướng dẫn đó giải thích nguồn gốc của nó: "Thông tin cá nhân của khách hàng được chuyển thành các ký tự mà máy quét hộ chiếu có thể đọc được. Các ký tự được thêm vào hộ chiếu thành 2 dòng, mỗi dòng 44 ký tự. Thông tin này được gọi là vùng đọc máy."
Hai dòng 44 ký tự là định dạng hộ chiếu của ICAO Doc 9303. Trang ICAO về Doc 9303 đặt tên Phần 4 là "Đặc tả cho Hộ chiếu đọc máy (MRP) và các MRTD khác cỡ TD3", vì thế bố cục hộ chiếu được gọi là TD3. Phần 5 và 6 đề cập các cỡ nhỏ hơn TD1 và TD2, loại mà thẻ căn cước sử dụng.
Khi mô tả những cuốn hộ chiếu Anh đọc máy đầu tiên, hướng dẫn liệt kê nội dung của vùng này: tên khách hàng, số hộ chiếu, chữ số kiểm tra, quốc tịch, ngày sinh, giới tính, ngày hết hạn hộ chiếu và một mã số nhận dạng cá nhân. Chữ số kiểm tra được tính trên các trường đó, nên một ký tự bị đọc sai thường lộ ra thành một chữ số không khớp. Điều đó khiến MRZ là phần duy nhất trên trang mà bạn có thể tự kiểm tra lại, không cần tin vào bên đã đọc nó.
Hai điểm thực tế cho bộ phân tích (parser):
- Không có ngày cấp. Vùng này không chứa ngày cấp. Nếu cần, bạn phải lấy nó từ trang in.
- Quốc tịch không phải lúc nào cũng là
GBR. Mã quốc gia trong vùng này theo ICAO Doc 9303 chứ không theo ISO, và các hạng quốc tịch Anh có mã riêng. Tài liệu tham chiếu phản hồi của doc.cheap liệt kê năm mã ngoàiGBR–GBD,GBN,GBO,GBPvàGBS– nên một parser chỉ chấp nhậnGBRsẽ từ chối một số hộ chiếu Anh.
Những mẫu bạn sẽ gặp
Có nhiều hơn một mẫu hộ chiếu Anh cùng còn hiệu lực, vì vậy đừng xây dựng một bước kiểm tra chỉ chờ đợi một kiểu dáng.
- Cuốn màu xanh năm 2020. Hộ chiếu điện tử series C mô tả ở trên.
- Mẫu mới từ tháng 12 năm 2025. GOV.UK thông báo rằng "Những hộ chiếu Anh đầu tiên mang Quốc huy của Đức vua Charles III sẽ được cấp từ tháng 12 trong khuôn khổ một thiết kế được làm mới", và gọi đó là "thiết kế hoàn toàn mới đầu tiên kể từ năm 2020".
- Các cuốn cũ vẫn còn hạn. Cùng thông báo đó viết: "Hộ chiếu được cấp với Quốc huy của Nữ hoàng Elizabeth II vẫn có hiệu lực cho đến ngày hết hạn."
Thời hạn hiệu lực cũng có một cái bẫy. Trước tháng 10 năm 2018, khi gia hạn có thể cộng dồn thời gian còn lại của cuốn cũ: hướng dẫn đưa ví dụ một người lớn gia hạn khi còn 7 tháng và nhận được hộ chiếu "có hiệu lực 10 năm 7 tháng". Từ tháng 10 năm 2018, hộ chiếu gia hạn nhận "không quá: 10 năm hiệu lực (đối với người lớn), 5 năm hiệu lực (đối với trẻ em)". Vì vậy hãy đọc ngày hết hạn trên giấy tờ; đừng tính nó từ ngày cấp.
Đọc bằng một lệnh gọi API
doc.cheap đọc hộ chiếu từ một ảnh: một POST /v1/scans với ảnh được mã hóa base64 trong body JSON. Khóa sandbox công khai sk_sandbox_public dùng được mà không cần tài khoản. Hãy dùng ảnh mẫu (specimen) với khóa này, đừng bao giờ dùng hộ chiếu thật, vì các lần quét bằng khóa công khai được lưu trong một năm.
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')\",
\"options\": {\"expect_country\": \"GBR\", \"return_portrait\": false}}"
expect_country truyền nơi cấp làm gợi ý khi bạn đã biết trước, còn return_portrait: false giữ khuôn mặt của người mang hộ chiếu ngoài phản hồi. Những phần quan trọng của câu trả lời với hộ chiếu Anh trông như sau, với giá trị bịa ra:
{
"document": {
"kind": "passport",
"issuing_state": "GBR",
"issuing_state_detail": { "code": "GBR", "alpha3": "GBR", "alpha2": "GB", "category": "iso" },
"number": "000000000",
"issue_date": "2025-12-01",
"expiry_date": "2035-12-01",
"is_expired": false
},
"holder": {
"surname": "SPECIMEN",
"given_names": "ANGELA ZOE",
"birth_date": "1990-01-01",
"nationality": "GBR"
},
"mrz": { "status": "passed", "reason": null },
"authenticity": { "overall": "not_checked", "checks": [] }
}
Những gì cần đọc từ đó:
mrz.statuslàpassed,failedhoặcabsent.passednghĩa là mọi chữ số kiểm tra đều hợp lệ và không có gì trong vùng này mâu thuẫn với trang in. Khi làfailed,mrz.reasonnêu tên trường, để bạn biết có nên yêu cầu ảnh mới hay không.mrz.textchứa toàn bộ vùng dưới dạng một chuỗi nếu bạn muốn tự tính lại các chữ số; hướng dẫn kiểm tra MRZ đi qua từng bước.document.issue_datelấy từ trang in, vì vùng đọc máy không có ngày cấp.holder.nationality_detailgiữ nguyênGBDvà các mã Anh khác như được ghi, vớicategorylàbritish_nationalityvàalpha3làGBR, để bạn có thể phân loại theo quốc gia mà không mất hạng quốc tịch.
Trang OCR hộ chiếu Anh gom các thông tin này vào một chỗ, kèm đường dẫn tới GOV.UK và ICAO.
Những gì OCR không cho bạn biết
Đọc hộ chiếu và xác minh hộ chiếu là hai việc khác nhau. doc.cheap đọc những gì được in và đối chiếu MRZ với chính nó cũng như với vùng hiển thị. Dịch vụ không kiểm tra giấy tờ có phải thật hay không: trong kịch bản chỉ nhận dạng, authenticity.overall là not_checked, và dịch vụ không đọc chip. Nếu quy trình của bạn cần đối chiếu khuôn mặt, kiểm tra người thật (liveness) hay kiểm tra tính xác thực, đó là các bước riêng với công cụ được xây dựng cho việc đó.
Dùng thử
Khóa sandbox công khai không cần tài khoản. Khi đăng ký, bạn nhận 100 lượt nhận dạng miễn phí mỗi tháng trên khóa của riêng mình, đủ để xây dựng và thử nghiệm toàn bộ quy trình. Nếu bạn đang chọn nhà cung cấp, bảng so sánh API OCR hộ chiếu đặt các mức giá đã công bố cạnh nhau, và trang OCR hộ chiếu Anh là nơi bắt đầu với giấy tờ của Anh.
Một câu hỏi cho bạn: phần nào của hộ chiếu Anh khiến parser của bạn gặp nhiều rắc rối nhất – mã quốc tịch, quy tắc thời hạn cũ hay điều gì khác? Hãy cho chúng tôi biết trong phần bình luận bên dưới.