Skip to content

Định nghĩa các trường CCCD ​

Mọi trường được trích xuất từ Căn cước công dân Việt Nam (CCCD — Căn cước công dân gắn chip) thông qua OCR, phân tích QR và phân tích MRZ, cùng định dạng chuẩn, nguồn dữ liệu, quy tắc kiểm tra hợp lệ và yêu cầu chuẩn hóa.

Mô hình dữ liệu ​

Pipeline trích xuất tổng hợp ba nguồn độc lập thành một tập dữ liệu thống nhất:

Thông tinMô tả
OCRNhận dạng ký tự quang học trên bề mặt in của thẻ.
QRPayload QR chính thức phân tách bằng dấu gạch đứng, được mã hóa trên thẻ.
MRZVùng đọc bằng máy (machine-readable zone) tuân theo chuẩn ICAO 9303.
Metadata ảnhBounding box của thẻ và các tham chiếu tiền xử lý được tạo ra trong quá trình trích xuất.
json
{
  "code": 0,
  "success": true,
  "data": {
    "image1": {},
    "image2": {},
    "status": "success",
    "request_id": "uuid",
    "card_information": []
  }
}

Trường định danh ​

TrườngKiểuMô tả
idstringSố định danh cá nhân 12 chữ số (Mã số định danh cá nhân). Định dạng ^[0-9]{12}$. Nguồn: OCR, QR, MRZ. Duy nhất cho mỗi công dân; mã hóa tỉnh, ký hiệu giới tính-thế kỷ và một chuỗi ngẫu nhiên. Checksum của MRZ là tùy chọn.
id_1stringSố CMND cũ gồm 9 chữ số. Định dạng ^[0-9]{9}$. Nguồn: chỉ từ QR. Tùy chọn — chỉ có nếu công dân từng có thẻ CMND cũ.
id_last_9string9 chữ số cuối của số CCCD đầy đủ. Định dạng ^[0-9]{9}$. Nguồn: MRZ, vốn yêu cầu dạng rút gọn.
genderstringNam hoặc Nữ. Nguồn: OCR, QR, MRZ. Ánh xạ MRZ M → Nam và F → Nữ.
dobstringNgày sinh. DD/MM/YYYY từ OCR/MRZ, DDMMYYYY từ QR. Phải cho ra một ngày ISO hợp lệ; chuyển đổi sang dạng chuẩn YYYY-MM-DD.
nationalitystringGiá trị cố định Việt Nam. Nguồn: OCR (mặt trước).

Trường họ tên ​

TrườngKiểuMô tả
namestringHọ tên đầy đủ theo pháp lý. Unicode. Nguồn: OCR, QR, MRZ. Viết hoa toàn bộ từ OCR, Title Case từ QR/MRZ — chuẩn hóa về Title Case.
last_namestringHọ, ví dụ NGUYỄN. Unicode. Nguồn: OCR/MRZ. Thành phần đầu tiên.
middle_namestringTên đệm, ví dụ VĂN. Unicode. Nguồn: OCR/MRZ. Không hoặc nhiều thành phần.
first_namestringTên, ví dụ A. Unicode. Nguồn: OCR/MRZ. Thành phần cuối cùng.

Bắt buộc phải chuẩn hóa tên: loại bỏ khoảng trắng thừa, chuyển sang Unicode NFC, và chuẩn hóa cách viết hoa theo quy tắc sản phẩm của bạn.

Trường địa chỉ ​

Địa chỉ Việt Nam có cấu trúc phân cấp, từ tỉnh xuống đến tổ/khu dân cư:

text
Cấp 1 → Cấp 2 → Cấp 3 → Cấp 4
Tỉnh → Huyện → Xã → Thôn/Tổ
TrườngKiểuMô tả
addressstringĐịa chỉ thường trú đầy đủ được in trên thẻ. Văn bản tự do. Nguồn: OCR. Dùng làm dự phòng khi không thể tái tạo các thành phần phân cấp.
address_level_1_(city)stringTỉnh hoặc thành phố trực thuộc trung ương, ví dụ TP. Hồ Chí Minh.
address_level_1_(city)_codestringMã hành chính cấp tỉnh, ví dụ 79.
address_level_2_(district)stringĐơn vị hành chính cấp huyện, ví dụ Quận 1.
address_level_2_(district)_codestringMã hành chính cấp huyện, ví dụ 760.
address_level_3_(ward)stringXã, phường hoặc thị trấn, ví dụ Phường Bến Nghé.
address_level_3_(ward)_codestringMã hành chính cấp xã, ví dụ 26740.
address_level_4stringĐơn vị hành chính nhỏ nhất — thôn hoặc tổ dân cư, ví dụ Tổ 1.
native_placestringQuê quán — nơi sinh đăng ký của công dân, không nhất thiết là nơi cư trú hiện tại. Thường có dạng <Ward/Commune>, <District>, <Province>. Nguồn: OCR hoặc QR.

Trường cấp phát thẻ ​

TrườngKiểuMô tả
issue_datestringNgày cấp thẻ. DD/MM/YYYY từ OCR, DDMMYYYY từ QR. Chuẩn hóa về ISO YYYY-MM-DD.
expiry_datestringNgày thẻ hết hạn — 20 năm kể từ ngày cấp đối với độ tuổi 14–59, không hết hạn trên 60 tuổi. Định dạng DD/MM/YYYY. Phải muộn hơn ngày cấp.
issue_placestringCơ quan cấp thẻ, ví dụ CỤC TRƯỞNG CỤC CẢNH SÁT QUẢN LÝ HÀNH CHÍNH VỀ TRẬT TỰ XÃ HỘI.
issue_place_codestringID cơ quan cấp thẻ đã mã hóa. Định dạng ^[0-9]{4}$, ví dụ 7740 cho cơ quan quản lý hành chính công an quốc gia.
signaturestringChữ ký của cán bộ cấp thẻ, ở mặt sau thẻ.

Trường metadata thẻ ​

TrườngKiểuMô tả
card_typestringPhiên bản/loại thẻ dùng cho xử lý OCR, ví dụ vn.cccd_new.
card_labelstringLoại thẻ mặt trước hoặc mặt sau dùng cho engine OCR, ví dụ vn.cccd_new.front, vn.cccd_new.back.

Trường mã QR ​

Payload QR chính thức là một chuỗi phân tách bằng dấu gạch đứng:

text
<CCCD>|<Legacy_ID>|<Name>|<DOB>|<Gender>|<Native_Place>|<Issue_Date>

Ví dụ:

text
001xxxxxxxxx|xxxxxxxxx|Nguyễn Văn A|12121990|Nam|Tổ 1, Phường Bến Nghé, Quận 1, TP. Hồ Chí Minh|01012021
TrườngKiểuMô tả
idstringVị trí 1 — số CCCD, 12 chữ số.
id_1stringVị trí 2 — số CMND cũ, 9 chữ số. Tùy chọn.
namestringVị trí 3 — họ tên đầy đủ. Unicode.
dobstringVị trí 4 — ngày sinh, DDMMYYYY.
genderstringVị trí 5 — Nam hoặc Nữ.
native_placestringVị trí 6 — quê quán. Văn bản tự do.
issue_datestringVị trí 7 — ngày cấp, DDMMYYYY.

Trường MRZ ​

MRZ tuân theo chuẩn ICAO 9303 dành cho thẻ định danh:

text
IDVNMxxxxxxxxxx001xxxxxxxxx<<x9012123M3012121VNM<<<<<<<<<<<xNGUYEN<<VAN<A<<<<<<<<<<<<<<<<<
TrườngKiểuMô tả
document_typestringLoại document — ID.
country_codestringQuốc gia cấp — VNM.
idstringSố CCCD.
id_last_9string9 chữ số cuối của số CCCD.
dobstringNgày sinh, YYMMDD.
genderstringM hoặc F.
expiry_datestringNgày hết hạn, YYMMDD.
namestringHọ tên theo dạng LAST<<MIDDLE<FIRST.

Metadata ảnh ​

TrườngKiểuMô tả
card_boxobjectBounding box của thẻ trong ảnh đầu vào, dùng để hiệu chỉnh phối cảnh, cắt và căn chỉnh.
transformed_image_idstringID tham chiếu nội bộ cho ảnh đã được xử lý và chuẩn hóa.
json
{
  "top_left": { "x": 44, "y": 309 },
  "top_right": { "x": 734, "y": 309 },
  "bottom_left": { "x": 44, "y": 758 },
  "bottom_right": { "x": 734, "y": 758 }
}

Chỉ số độ tin cậy ​

TrườngKiểuMô tả
confidence_scorefloatXác suất từ 0 đến 1 cho thấy OCR đã đọc đúng trường này.
confidence_verdictstringNhãn tùy chọn — SURE cho độ chắc chắn cao, rỗng cho một lần đọc bình thường.
digit_confidence_scoresfloat[]Xác suất theo từng chữ số, dùng cho các trường dạng số như mã ID.

Ngưỡng chấp nhận tối thiểu được khuyến nghị:

TrườngKiểuMô tả
Trường quan trọngid, name, dob>= 0.90
Trường thứ cấpaddress, signature>= 0.80

Thứ tự ưu tiên và quy tắc gộp trường ​

Khi cùng một trường đến từ nhiều nguồn, hãy ưu tiên theo thứ tự sau — đáng tin cậy nhất đến ít tin cậy nhất:

  1. QR — được mã hóa ngay từ lúc cấp thẻ, không chịu lỗi nhận dạng.
  2. MRZ — đọc bằng máy và được bảo vệ bằng checksum.
  3. OCR — nhận dạng bề mặt in, dễ sai sót nhất.
text
if QR.dob is valid: use QR
else if MRZ.dob is valid: use MRZ
else use OCR

Việc tái tạo địa chỉ theo cùng logic dự phòng:

text
address = join(level_4, level_3, level_2, level_1)
if OCR.address exists and structured parts fail: fallback to OCR.address

Yêu cầu xử lý lỗi ​

TrườngKiểuMô tả
CARD_NOT_DETECTEDstringKhông tìm thấy thẻ trong ảnh. Hành vi: yêu cầu quét lại.
QR_PARSE_ERRORstringKhông thể phân tích mã QR. Hành vi: tiếp tục với OCR/MRZ.
INCOMPLETE_DATAstringThiếu một trường quan trọng (id, name, dob). Hành vi: cho trích xuất thất bại.
LOW_CONFIDENCEstringMột trường có điểm số dưới ngưỡng. Hành vi: trả về một nhãn cảnh báo.

Quy tắc chuẩn hóa đầu ra ​

  • Mọi ngày tháng → YYYY-MM-DD
  • Họ tên → Title Case
  • Các thành phần địa chỉ → Title Case
  • Chuẩn hóa Unicode → NFC
  • Loại bỏ khoảng trắng lặp và các bất nhất về dấu câu

Schema database được đề xuất ​

TrườngKiểuMô tả
idVARCHAR(12)Khóa chính — số CCCD.
id_legacyVARCHAR(9)Số CMND cũ. Cho phép null.
full_nameTEXTHọ tên đầy đủ theo pháp lý.
last_nameTEXTHọ.
middle_nameTEXTTên đệm.
first_nameTEXTTên.
genderENUM('Male','Female')Giới tính đã chuẩn hóa.
dobDATENgày sinh.
nationalityTEXTQuốc tịch.
native_placeTEXTNơi sinh đăng ký.
addressTEXTChuỗi địa chỉ dự phòng.
wardTEXTTên xã cấp 3.
ward_codeVARCHAR(10)Mã hành chính cấp 3.
districtTEXTTên huyện cấp 2.
district_codeVARCHAR(10)Mã hành chính cấp 2.
provinceTEXTTên tỉnh cấp 1.
province_codeVARCHAR(10)Mã hành chính cấp 1.
issue_dateDATENgày cấp thẻ.
expiry_dateDATENgày hết hạn thẻ.
issue_placeTEXTCơ quan cấp thẻ.
issue_place_codeVARCHAR(10)Mã cơ quan cấp thẻ.
signatureTEXTChữ ký của cán bộ cấp thẻ.
confidence_overallFLOATĐộ tin cậy tổng hợp của quá trình trích xuất.

WARNING

Mọi cột ở trên đều là dữ liệu cá nhân theo quy định bảo vệ dữ liệu của Việt Nam, và face_image từ chip là dữ liệu sinh trắc học. Hãy mã hóa khi lưu trữ, giới hạn quyền đọc cho các bên gọi có lý do nghiệp vụ, và áp dụng chính sách lưu giữ dữ liệu — không giữ hồ sơ định danh lâu hơn thời gian mối quan hệ yêu cầu.

Đề xuất kiểm tra hợp lệ bổ sung ​

  • Tra cứu mã tỉnh, huyện và xã với cơ sở dữ liệu hành chính Việt Nam.
  • Kiểm tra tính nhất quán của ngày tháng — ngày sinh phải trước hoặc bằng ngày cấp thẻ.
  • Đối chiếu chéo giới tính giữa MRZ và QR.

Bước tiếp theo ​

  • Đọc NFC — API trả về các trường này từ chip
  • Tổng quan — toàn bộ vòng đời giao dịch

Developers