국가 신분증은 작은 여권이 아닙니다. 신분증에는 고유한 기계 판독 영역(MRZ)이 있는데, 사진이 있는 앞면이 아니라 뒷면에 있고, 44자 2줄이 아니라 30자 3줄로 이루어집니다. ICAO는 이 배치를 TD1이라고 부르며, 유럽연합에서는 더 이상 선택 사항이 아닙니다. 회원국이 자국민에게 발급하는 모든 신분증은 이 영역을 갖춰야 하고, 작동하는 영역이 없는 카드는 정해진 날짜까지 효력을 잃습니다.

이 글은 두 가지 1차 자료를 나란히 놓고 봅니다. 첫째는 ICAO Doc 9303 제5부로, TD1의 각 문자가 어디에 들어가는지를 정의합니다. 둘째는 EU 법, 즉 Reg. (EU) 2019/1157과 이사회 Reg. (EU) 2025/1208로, 회원국 신분증에 TD1 영역을 의무화합니다. 아래 표의 모든 행은 이 문서들에서 인용하고 링크를 달았으므로 그대로 출처로 쓸 수 있습니다. 이 문서들만으로 말할 수 없는 국가는 표에서 뺐습니다.

이 글은 여권과 신분증을 모두 읽고 MRZ 검증 숫자를 서버에서 다시 확인하는 여권·신분증 OCR API, doc.cheap의 블로그입니다. 아래 내용은 doc.cheap에 의존하지 않습니다.

TD1 카드란

ICAO Doc 9303은 기계 판독식 여행 문서의 국제 표준입니다. 여러 부로 나뉘어 있고, 그중 세 부가 세 가지 MRZ 크기를 다룹니다. 제4부는 여권과 그 밖의 TD3 크기 문서를, 제5부는 "TD1 크기 기계 판독식 공용 여행 문서"를, 제6부는 TD2 크기를 다룹니다.

제5부(제8판, 2021년)는 카드의 물리적 크기를 ISO/IEC 7810의 ID-1 크기, 즉 은행 카드와 같은 85.60 × 53.98 mm로 정합니다. 그리고 영역을 뒷면에 둡니다. "MRZ는 TD1의 뒷면에 위치한다." 실제로 신분증 판독이 실패하는 경우 대부분은 이 한 문장으로 설명됩니다. 카드 앞면 사진에는 얼굴, 이름, 번호가 있지만 검증할 영역은 없습니다.

세 가지 MRZ 형식 비교:

형식 줄 × 문자 수 정의 문서 대표 문서
TD1 3 × 30 Doc 9303 제5부 국가 신분증, 체류 허가증
TD2 2 × 36 Doc 9303 제6부 일부 구형 카드와 여행 문서
TD3 2 × 44 Doc 9303 제4부 책자형 여권

MRZ 형식 페이지에서 세 가지 배치를 나란히 볼 수 있습니다.

90자를 필드별로 보기

다음은 ICAO가 직접 제시하는 가상의 TD1 견본으로, 발급자는 "Utopia"(UTO, 견본에만 존재하는 코드)입니다.

I<UTOD231458907<<<<<<<<<<<<<<<
7408122F1204159UTO<<<<<<<<<<<6
ERIKSSON<<ANNA<MARIA<<<<<<<<<<

제5부 §4.2.2가 모든 위치를 정의합니다. 위치는 ICAO 방식대로 1부터 셉니다.

줄 위치 필드 견본 값
1 1–2 문서 코드. 첫 문자는 A, C, I 중 하나 I<
1 3–5 발급 국가 또는 기관 UTO
1 6–14 문서 번호 D23145890
1 15 문서 번호의 검증 숫자 7
1 16–30 발급자용 선택 데이터 채움 문자
2 1–6 생년월일, YYMMDD 740812
2 7 생년월일의 검증 숫자 2
2 8 성별: F, M 또는 < F
2 9–14 만료일, YYMMDD 120415
2 15 만료일의 검증 숫자 9
2 16–18 국적 UTO
2 19–29 발급자용 선택 데이터 채움 문자
2 30 1줄과 2줄 전체에 대한 복합 검증 숫자 6
3 1–30 이름: 주 식별자, <<, 보조 식별자 ERIKSSON<<ANNA<MARIA

여기에는 여권과 달라서 TD3용으로 작성된 파서가 걸려 넘어지는 점이 세 가지 있습니다.

  • 이름이 맨 앞이 아니라 맨 끝에 있습니다. 여권에서는 이름이 1줄에 있습니다. TD1 카드에서는 3줄 전체를 차지하고, 긴 이름은 30자에 맞게 잘립니다.
  • 국적과 발급 국가가 서로 다른 줄에 있습니다. 1줄에는 발급자가, 2줄에는 소지자의 국적이 들어갑니다. 대부분의 카드에서는 같은 코드지만, 파서가 이를 전제해서는 안 됩니다.
  • 복합 검증 숫자는 두 줄에 걸쳐 있습니다. 1줄과 2줄의 데이터를 함께 다루므로, 한 줄씩 검사하는 검증기로는 계산할 수 없습니다.

모든 검증 숫자는 여권과 같은 7-3-1 가중치를 씁니다. MRZ 파서는 계산한 각 숫자를 인쇄된 숫자 옆에 보여 줍니다.

EU 법이 요구하는 것

신분증에 관한 EU 규칙은 처음에 Reg. (EU) 2019/1157로 정해졌고 2021년 8월 2일부터 적용되었습니다. 같은 규칙이 같은 날짜 그대로 2025년 6월 12일의 이사회 Reg. (EU) 2025/1208에 담겼고, 이는 2025년 6월 20일 관보에 게재되었습니다. 표는 2025년 문서를 인용합니다.

규칙 문서 내용 조항
형식 신분증은 "ID-1 형식으로 제작되어야 하며 기계 판독 영역(MRZ)을 포함해야 한다"고 하며, ICAO 문서 9303을 따른다 제3조(1)
데이터 카드의 데이터 요소는 ICAO 문서 9303 제5부를 따른다 제3조(2)
칩 얼굴 이미지와 지문 두 개를 담은 저장 매체 제3조(5)
구형 카드, 일반 제3조를 충족하지 않는 카드는 "만료 시 또는 2031년 8월 3일 중 이른 시점에 효력을 잃는다" 제5조(1)
작동하는 MRZ가 없는 구형 카드 ICAO 제2부의 최소 보안 기준을 갖추지 않았거나 "작동하는 MRZ"가 없는 카드는 "만료 시 또는 2026년 8월 3일 중 이른 시점에" 효력을 잃는다 제5조(2)(a)
70세 이상 소지자 2021년 8월 2일 기준 70세 이상인 사람의 카드로서 제2부 최소 보안 기준과 작동하는 MRZ를 갖춘 카드는 만료될 때까지 유효하다 제5조(2)(b)

신분증 처리 흐름을 만드는 사람에게 실무적인 의미는 이렇습니다. 2026년 8월 3일부터, 회원국이 자국민에게 발급했고 이 규칙에 따라 여전히 유효한 신분증에는 TD1 기계 판독 영역이 있습니다. 그 이전에는 작동하는 영역이 없는 구형 카드도 유효할 수 있었기 때문에, MRZ를 필수로 요구하는 검사가 합법적인 카드를 거부할 수 있었습니다. 이것은 문서의 요약이며 법률 자문이 아닙니다.

이 규칙이 적용되는 국가

2025년 문서는 스스로 적용 범위의 경계를 밝힙니다. 문서 자체가 뒷받침하는 행은 다음과 같습니다.

구분 이사회 Reg. (EU) 2025/1208에서의 지위 문서 내 위치
신분증을 발급하는 회원국 구속됨: 카드는 제3조를 따르고, 구형 카드는 제5조에 따라 단계적으로 폐지 제3조 및 제5조
국가 신분증이 없는 회원국 도입 의무 없음: 이 문서는 "국내법에 규정되어 있지 않은 경우 … 회원국에 신분증 도입을 요구하지 않는다" 전문(9)
덴마크 "채택에 참여하지 않으며" "이에 구속되지 않고 그 적용 대상도 아니다" 전문(47)
아일랜드 "2024년 10월 18일자 서한으로 참여 의사를" 통지 전문(48)
아일랜드 여권 카드 적용 범위 밖: 제5부 여행 문서 중 "발급 회원국에서 신원 확인 목적으로 쓰이지 않는 것, 예를 들어 아일랜드가 발급하는 여권 카드" 전문(12)

여기서 두 가지 결론이 나옵니다. MRZ가 있는 TD1 카드라고 해서 그 문서가 국가 신분증이라는 증거는 아닙니다. 아일랜드 여권 카드도 제5부 문서이지만 법은 이를 따로 다룹니다. 그리고 어떤 나라에 국가 신분증이 없다는 것은 법의 공백이 아닙니다. 법은 애초에 그것을 요구하지 않기 때문입니다.

특정 국가의 카드는 견본 자체가 기준이 됩니다. 이사회 사무국은 진본 문서의 이미지를 공개하며, Reg. (EU) 2020/493은 이를 "PRADO로 알려진, 진본 여행 및 신분 문서의 온라인 공개 등록부"라고 부릅니다. 주소는 consilium.europa.eu/prado입니다. 각 항목에는 카드의 양면이 실려 있어, 해당 발급자가 영역을 어디에 두는지, 선택 데이터 필드에 무엇을 넣는지 확인할 수 있습니다.

신분증 업로드 흐름에 주는 의미

  • 뒷면을 요청하세요. 영역은 정의상 뒷면에 있으므로, 앞면만 요청하는 흐름은 검증할 MRZ를 얻지 못합니다.
  • 세 줄을 예상하고, 모양으로 판별하세요. 30자 3줄이면 TD1, 36자 2줄이면 TD2, 44자 2줄이면 TD3입니다. 필드를 읽기 전에 형식부터 판별하세요.
  • 문서 코드를 하드코딩하지 마세요. 제5부는 첫 문자로 A, C, I를 허용하므로, I만 검사하면 유효한 카드를 거부하게 됩니다.
  • 선택 데이터 필드는 발급자가 정의한다고 보세요. 제5부는 그 내용을 발급 국가에 맡기므로, 하나의 고정 필드가 아니라 발급자별로 파싱하세요.
  • MRZ 통과는 일관성이지 진위가 아닙니다. 검증 숫자는 영역이 올바르게 읽혔다는 것을 증명할 뿐, 카드가 진짜라는 것을 증명하지는 않습니다.

doc.cheap이 TD1 카드를 처리하는 방식

API는 호출 한 번에 이미지 한 장을 받으므로, 카드의 양면은 같은 reference를 공유하는 두 번의 호출이 됩니다. 이 흐름은 신분증 인식 가이드(영문)에서 다룹니다. 뒷면은 보통 mrz.status: passed를 반환하고, 영역이 없는 앞면은 오류 대신 mrz.status: absent를 반환합니다. 영역을 읽으면 mrz.lines에 인쇄된 그대로의 줄(TD1 카드는 3줄, TD3 여권은 2줄)이 담기므로, 검증 숫자를 직접 다시 계산할 수 있습니다. 서버는 TD1 숫자를 제5부 §4.2.4의 위치에 따라 검사합니다. document.country 필드에는 세 글자 발급자 코드가 들어갑니다.

같은 국가의 여권에 대해서는 국가별 여권 OCR이 TD3 쪽을 다룹니다. 호스팅형 API를 비교하고 있다면, 여권 OCR API 비교에서 공개 가격과 각 서비스가 실패한 스캔에도 요금을 부과하는지를 확인할 수 있습니다. doc.cheap에는 매월 100건의 무료 인식이 포함됩니다.

위의 모든 법적 서술은 링크된 EUR-Lex 문서와 ICAO Doc 9303 제5부에서 인용했으며, doc.cheap에 관한 모든 서술은 코드와 대조해 확인했습니다.

질문 하나 드립니다: 여러분의 신분증 처리 흐름은 카드 뒷면을 요청하나요? 앞면만 업로드되면 어떻게 처리하시나요? 아래 댓글로 알려 주세요.