영국 여권은 영국 대상 온보딩 흐름에서 가장 자주 보게 되는 서류 중 하나입니다. 스스로를 “영국 여권의 유일한 발급 기관”이라고 소개하는 HM Passport Office는, 자신의 표현에 따르면 “영국 시민과 기타 영국 국적자에게 매년 600만 권이 넘는 여권을 발급하는 일”을 맡고 있습니다. 영국 고객을 확인하는 제품이라면 많은 여권을 읽게 됩니다.

이 글은 영국 여권에서 데이터를 꺼내 자체 시스템에 넣어야 하는 개발자를 위한 것입니다. 신원 정보 면에 무엇이 있는지, 기계 판독 영역(MRZ)이 어떻게 배치되어 있는지, 2026년에 만나게 될 디자인은 무엇인지, 그리고 API 호출 한 번이 무엇을 반환하는지를 다룹니다. 여권 자체에 관한 모든 서술은 GOV.UK 또는 ICAO에서 인용했으며, 인용한 곳에 링크를 달았습니다. 인용문의 원문은 영어이며, 한국어 번역은 저희가 했습니다.

이 글은 여권·신분증 OCR API doc.cheap의 블로그입니다. 제품에 관한 부분은 이 점을 감안하고 읽어 주세요.

신원 정보 면을 한눈에

HM Passport Office의 과거 여권 정보에 관한 지침이 현재의 여권 책자를 설명합니다. “2020년 3월 1일, 영국 series C 전자여권(파란색 전자여권)이 단계적으로 생산에 도입되었다.” 같은 페이지에 따르면 이 여권은 다음과 같습니다.

  • “책자 앞쪽에 내구성이 강한 폴리카보네이트 재질의 신원 정보 면이 있다”
  • “3페이지에 기재 사항(observations)이 인쇄되어 있다”
  • “책자 안에 신청인의 여권 사진이 3번 표시된다”
  • “신원 정보 면에 전자 칩이 내장되어 있다”

OCR에 이것이 의미하는 바는 하나입니다. 필요한 모든 것이 앞쪽 한 페이지에 있습니다. 그 페이지를 평평하게, 전체가 나오도록 촬영하면 인쇄된 항목, 얼굴 사진, 기계 판독 영역이 한 장의 이미지에 담깁니다. 칩도 같은 페이지 안에 있지만, 사진으로는 칩을 읽을 수 없습니다. 이미지가 주는 것은 인쇄된 페이지입니다.

기계 판독 영역

MRZ는 신원 정보 면 하단을 따라 늘어선 대문자, 숫자, < 채움 문자의 블록입니다. 같은 지침이 그 유래를 설명합니다. “신청인의 개인 정보는 여권 스캐너가 읽을 수 있는 문자로 변환된다. 이 문자들은 각각 44자로 된 2줄로 여권에 추가된다. 이 정보를 기계 판독 영역이라고 한다.”

44자 2줄은 ICAO Doc 9303의 여권 형식입니다. ICAO의 Doc 9303 페이지는 그 Part 4를 “기계 판독식 여권(MRP) 및 기타 TD3 크기 MRTD의 규격”이라고 부르며, 이것이 여권 레이아웃을 TD3라고 부르는 이유입니다. Part 5와 6은 신분증이 사용하는 더 작은 TD1과 TD2 크기를 다룹니다.

최초의 기계 판독식 영국 여권 책자를 설명하면서, 지침은 이 영역에 들어가는 내용을 나열합니다. 신청인의 이름, 여권 번호, 체크 디지트, 국적, 생년월일, 성별, 여권 만료일, 그리고 개인 식별 번호입니다. 체크 디지트는 이 항목들로부터 계산되므로, 잘못 읽힌 문자는 대개 맞지 않는 숫자로 드러납니다. 그래서 MRZ는 읽은 쪽을 믿지 않고도 직접 다시 확인할 수 있는, 페이지에서 유일한 부분입니다.

파서를 위한 실무 포인트가 두 가지 있습니다.

  • 발급일이 없습니다. 이 영역에는 발급일이 들어 있지 않습니다. 필요하다면 인쇄된 페이지에서 가져와야 합니다.
  • 국적이 항상 GBR인 것은 아닙니다. 이 영역의 국가 코드는 ISO가 아니라 ICAO Doc 9303을 따르며, 영국 국적의 구분마다 고유한 코드가 있습니다. doc.cheap의 응답 레퍼런스는 GBR 외에 다섯 가지 – GBD, GBN, GBO, GBP, GBS – 를 나열합니다. 따라서 GBR만 받아들이는 파서는 일부 영국 여권을 거부하게 됩니다.

만나게 될 디자인

유효한 영국 여권 디자인은 동시에 여러 개가 있습니다. 그러니 한 가지 모양만 기대하는 검사는 만들지 마세요.

  • 2020년의 파란색 책자. 위에서 설명한 series C 전자여권입니다.
  • 2025년 12월부터의 새 디자인. GOV.UK는 “찰스 3세 국왕 폐하의 문장이 들어간 최초의 영국 여권이 새롭게 단장한 디자인의 일환으로 12월부터 발급된다”고 발표했으며, 이를 “2020년 이후 처음으로 완전히 새로운 디자인”이라고 불렀습니다.
  • 아직 유효한 예전 책자. 같은 발표에는 “엘리자베스 2세 여왕의 문장이 들어간 채 발급된 여권은 만료일까지 유효하다”고 되어 있습니다.

유효 기간에도 함정이 있습니다. 2018년 10월 이전에는 갱신할 때 예전 책자의 남은 기간을 이월할 수 있었습니다. 지침은 7개월이 남은 상태에서 갱신한 성인이 “10년 7개월 동안 유효한” 여권을 받은 예를 듭니다. 2018년 10월 이후 갱신된 여권은 “최대 10년의 유효 기간(성인), 5년의 유효 기간(아동)”입니다. 그러니 만료일은 서류에서 읽으세요. 발급일로부터 계산하지 마세요.

API 호출 한 번으로 읽기

doc.cheap는 이미지 한 장으로 여권을 읽습니다. 사진을 base64로 인코딩해 JSON 본문에 담고 POST /v1/scans를 한 번 보내면 됩니다. 공개 샌드박스 키 sk_sandbox_public은 계정 없이 사용할 수 있습니다. 이 키에는 견본 이미지를 사용하고 실제 여권은 절대 사용하지 마세요. 공개 키로 한 스캔은 1년 동안 보관되기 때문입니다.

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는 발급국을 이미 알고 있을 때 힌트로 전달하고, return_portrait: false는 소지인의 얼굴을 응답에서 제외합니다. 영국 여권에서 중요한 응답 부분은 가상의 값으로 보면 다음과 같습니다.

{
  "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": [] }
}

여기서 읽어야 할 것:

  • mrz.status 는 passed, failed, absent 중 하나입니다. passed는 모든 체크 디지트가 검증되었고 영역 안의 어떤 내용도 인쇄된 페이지와 모순되지 않는다는 뜻입니다. failed일 때는 mrz.reason이 해당 항목을 알려 주므로, 사진을 다시 요청해야 하는지 판단할 수 있습니다. mrz.text에는 영역 전체가 하나의 문자열로 들어 있어 체크 디지트를 직접 다시 계산할 수 있습니다. 방법은 MRZ 검사 가이드에서 안내합니다.
  • document.issue_date 는 영역에 발급일이 없으므로 인쇄된 페이지에서 가져옵니다.
  • holder.nationality_detail 은 GBD를 비롯한 영국 코드를 적힌 그대로 유지하고, category를 british_nationality로, alpha3를 GBR로 설정합니다. 그래서 구분을 잃지 않고 국가를 키로 사용할 수 있습니다.

영국 여권 OCR 페이지에는 같은 사실이 GOV.UK와 ICAO 링크와 함께 한곳에 정리되어 있습니다.

OCR이 알려 주지 않는 것

여권을 읽는 일과 검증하는 일은 서로 다른 작업입니다. doc.cheap는 인쇄된 내용을 읽고, MRZ를 그 자체와, 그리고 육안 판독 영역과 대조합니다. 서류가 진본인지는 확인하지 않습니다. 인식 전용 시나리오에서 authenticity.overall은 not_checked이며, 칩도 읽지 않습니다. 흐름에 얼굴 대조, 라이브니스 확인, 진위 확인이 필요하다면, 그것들은 전용 도구로 하는 별도의 단계입니다.

직접 해 보기

공개 샌드박스 키는 계정이 필요 없습니다. 가입하면 자신의 키로 매달 100회의 무료 인식을 사용할 수 있으며, 전체 흐름을 구축하고 테스트하기에 충분합니다. 제공업체를 고르고 있다면 여권 OCR API 비교에서 공개된 가격을 나란히 볼 수 있고, 영국 서류라면 영국 여권 OCR 페이지에서 시작하면 됩니다.

질문 하나 드립니다. 영국 여권의 어느 부분이 여러분의 파서를 가장 괴롭혔나요 – 국적 코드, 예전 유효 기간 규칙, 아니면 다른 무언가인가요? 아래 댓글로 알려 주세요.