여권 MRZ 검사숫자 계산기
여권 등 MRZ(기계판독영역)의 검사숫자를 ICAO Doc 9303 표준(가중치 7·3·1)으로 계산·검증합니다. 필드 하나만 계산하거나, 여권(TD3) 둘째 줄 44자 전체를 검증할 수 있습니다.
여권 하단 두 줄 중 둘째 줄을 그대로 붙여넣으세요
전체 검사숫자
모두 일치
여권번호L898902C3 → 6(일치)
국적UTO
생년월일(YYMMDD)740812 → 2(일치)
성별여(F)
만료일(YYMMDD)120415 → 9(일치)
개인번호ZE184226B<<<<< → 1(일치)
종합 검사숫자L898902C3674081221204159ZE184226B<<<<<1 → 0(일치)
여권 등 신원확인용 문서의 MRZ(기계판독영역)는 각 필드 끝에 검사숫자를 붙여 OCR·스캔 오류를 잡습니다. 계산 방식은 ICAO Doc 9303 표준으로, 문자를 숫자로 바꾼 뒤("<"=0, 0-9=0-9, A-Z=10-35) 자리마다 가중치 7·3·1을 반복해 곱하고 더한 값을 10으로 나눈 나머지입니다. 여권 둘째 줄의 종합 검사숫자(맨 끝자리)는 여권번호·생년월일·만료일· 개인번호와 각각의 검사숫자를 모두 이어붙여 다시 계산합니다.
이 계산기는 TD3(여권, 2줄 44자) 형식만 다룹니다. 주민등록증 등에 쓰이는 TD1(3줄 30자)·TD2(2줄 36자)는 필드 위치가 달라 이 계산식을 그대로 적용할 수 없습니다. 입력값은 서버로 전송되지 않고 브라우저 안에서만 계산됩니다.
사용 방법
- 1"필드 하나"에서 여권번호·생년월일(YYMMDD)처럼 검사숫자를 붙이려는 값을 입력하면 검사숫자가 나옵니다.
- 2"여권(TD3) 둘째 줄"에서 여권 하단 두 줄 중 둘째 줄(44자)을 그대로 붙여넣으면 필드별 검사숫자가 전부 일치하는지 확인합니다.
- 3불일치하는 필드가 있으면 어느 자리가 틀렸는지 바로 알 수 있습니다.
자주 묻는 질문
문자를 숫자로 바꾼 뒤(빈 자리 "<"=0, 0~9=0~9, A~Z=10~35) 자리마다 가중치 7·3·1을 순서대로 반복해 곱하고 모두 더한 값을 10으로 나눈 나머지가 검사숫자입니다. ICAO Doc 9303(국제민간항공기구의 여행증명서 표준) 방식입니다.
여권번호+그 검사숫자, 생년월일+그 검사숫자, 만료일+그 검사숫자+개인번호+그 검사숫자를 전부 이어붙인 문자열(39자)에 같은 가중치 7·3·1을 계속 순환시켜 다시 계산한 값입니다. 개별 필드는 맞아도 이 종합 검사숫자가 틀리면 어딘가 자리가 밀렸거나 잘못 옮겨 적었다는 뜻입니다.
가장 흔한 원인은 오타나 OCR 오독으로 글자 하나가 잘못 옮겨진 경우입니다. 특히 숫자 0과 문자 O, 숫자 1과 문자 I는 손으로 옮겨 적을 때 흔히 헷갈립니다. 어느 필드가 불일치하는지 표에서 바로 확인해 그 부분부터 다시 확인하세요.
안 됩니다. 이 계산기는 여권에 쓰이는 TD3(2줄 44자) 형식만 다룹니다. 국가별 신분증에 흔한 TD1(3줄 30자)·TD2(2줄 36자)는 검사숫자가 들어가는 필드 위치가 달라 이 계산식을 그대로 쓸 수 없습니다.
알아두면 좋은 점
- ICAO Doc 9303 Part 3의 검사숫자 알고리즘을 구현했습니다. 이 환경 네트워크 정책상 icao.int 원문을 직접 열람하지 못해, GitHub의 독립 구현(icodeforlove/mrz-fast)의 알고리즘을 대조했고, 그 알고리즘으로 계산한 값이 ICAO Doc 9303 Part 4의 공식 예제(여권번호 L898902C3, Anna Maria Eriksson — 여러 문헌에 널리 인용되는 표준 예제)의 검사숫자와 정확히 일치함을 확인했습니다(2026-09-11).
- TD3(여권, 2줄 44자) 형식만 다룹니다. TD1·TD2 등 다른 문서 형식은 필드 위치가 달라 지원하지 않습니다.
- 입력값은 서버로 전송되지 않고 브라우저 안에서만 계산됩니다.
함께 보면 좋은 도구
마지막 검증: 2026년 9월 11일 · 결과는 참고용 추정치입니다.