데이터 추출
텍스트 덩어리가 아니라 구조화된 필드를 반환하는 OCR 신분증 스캔 API.
ShieldID는 정부 발급 신분증을 이름, 생년월일, 문서 번호, 만료일, 주소 등 필드별 구조화 데이터로 변환하며, 각 필드에는 출처와 개별 판정이 함께 제공됩니다. 하나의 세션에서 문서 데이터 추출 API와 문서 검증 API를 함께 이용할 수 있습니다.
반환되는 내용
문서에 실제로 있는 필드를 구조화하여 제공합니다.
모든 문서에 모든 필드가 있는 것은 아닙니다. ShieldID는 문서에 있는 내용을 반환하고, 없는 내용은 없다고 표시합니다.
- 성명
- 인쇄된 대로, 그리고 문서에 바코드나 MRZ가 있는 경우 그곳에 인코딩된 대로 제공합니다.
- 생년월일
- 인쇄된 면에서 읽고 바코드 및 MRZ와 교차 확인합니다.
- 문서 번호
- 면허 번호 또는 여권 번호이며, 발급 기관의 형식이 허용하는 경우 내부 일관성을 확인해요.
- 만료일
- 인쇄된 면과 바코드 또는 MRZ에서 읽습니다.
- 주소
- 인쇄된 면과 바코드(있는 경우)에서 읽으며, 별도로 업로드한 주소 문서와 비교할 수 있습니다.
- 성별
- 문서에 인쇄되거나 인코딩되어 있는 경우에 읽습니다.
- 발급 관할
- 문서에 인식 가능한 바코드 발급 기관 코드가 있는 경우, 해당 코드로 식별되며 제공 여부는 문서에 따라 다릅니다.
세 가지 출처, 하나의 비교
바코드, MRZ, 인쇄된 앞면을 의도적으로 각각 읽으며, 우연히 뒤섞이지 않습니다.
모든 필드는 출처가 명시됩니다. 두 출처가 서로 다르면 두 값의 평균을 내지 않고 결과에 플래그로 표시합니다.
PDF417 바코드
북미 운전면허증 또는 ID 카드의 뒷면은 구조화된 AAMVA 필드로 디코딩됩니다. 문서에 바코드가 있으면 바코드의 필드가 인쇄된 앞면보다 우선합니다.
여권 MRZ
기계 판독 영역을 찾아 읽고, 영역에 내장된 ICAO 체크 디지트 공식으로 검증합니다. 최소 유효성 점수를 기준으로 MRZ에서 읽은 필드를 신뢰할지 판단합니다. 자체 체크섬 검증에 실패한 영역은 더 깨끗한 출처의 값을 덮어쓸 수 없습니다.
앞면의 구조화 OCR 및 전체 페이지 OCR
인쇄된 면은 문서 고유의 레이아웃이 인식되면 그 레이아웃을 이용해 읽고, 그렇지 않으면 전체 페이지 OCR로 전환하여 낯선 문서에서도 읽을 수 있는 필드를 얻습니다.
충돌은 평균 내지 않고 플래그로 표시합니다
앞면, 바코드, MRZ 사이에 이름이나 생년월일이 일치하지 않으면 결과에 불일치로 보고됩니다. 파이프라인은 임의로 하나를 선택하고 불일치를 숨기지 않습니다.
MRZ 체크섬 검증
기계 판독 영역은 신뢰하기 전에 스스로 계산이 맞는지 확인해야 합니다.
여권의 ICAO 기계 판독 영역에는 설계상 체크 디지트가 포함되어 있습니다. ShieldID는 MRZ에서 읽은 필드를 신뢰하기 전에 이를 검증합니다.
전용 감지기가 MRZ를 찾고, 판독기가 문자를 추출하며, 영역 자체의 체크섬 공식에 따라 유효성 점수가 매겨집니다. 최소 유효성 점수를 넘긴 필드만 최우선 순위로 신뢰하며, 판독 상태가 좋지 않은 영역은 깨끗한 것처럼 그대로 통과시키지 않고 그에 맞게 처리합니다.
바코드 우선 순위
출처가 겹칠 때는 가장 신뢰할 수 있는 출처가 우선합니다.
같은 필드가 바코드, MRZ, 인쇄된 앞면에 모두 나타날 수 있습니다. ShieldID는 항상 일관된 순서로 이를 해결합니다.
- PDF417 바코드
- 체크섬을 통과한 여권 MRZ
- 인쇄된 앞면의 구조화 판독
- 전체 페이지 OCR 대체 수단
주소 증빙 문서
두 번째 문서를 업로드하면 간단한 주소 비교 결과를 받을 수 있습니다.
인증에 주소 증빙이 필요한 경우 신청자가 별도의 문서를 업로드하며, ShieldID는 신분증과 같은 방식으로 이를 읽습니다.
주소 증빙 문서에 OCR을 적용하고, 그 주소를 신분증에서 읽은 주소와 비교합니다. 이는 별도의 문서 분류기가 아닌 단순한 텍스트 및 토큰 비교이며, 세션에서 요구하고 실제로 문서가 제출된 경우에만 실행됩니다.
마스킹 및 PII 처리
추출된 데이터도 이미지와 같은 방식으로 보호됩니다.
구조화된 필드에는 신분증 사진 자체에 적용되는 것과 동일한 개인정보 보호 통제가 적용됩니다.
저장 시 암호화되는 생년월일
생년월일은 저장 시 암호화되어 보관되며, 암호화 키가 없으면 서비스가 실행되지 않습니다.
타이머로 삭제되는 이미지
촬영된 문서 및 셀피 이미지는 짧은 타이머(기본 7일)에 따라 자동으로 삭제됩니다. 정리 작업은 일정한 간격으로, 그리고 재시작 직후에도 실행되므로 한가한 기간에도 이미지가 삭제되어야 할 날을 넘겨 남아 있지 않습니다.
기기 내 점수 마스킹
일치 여부나 신뢰도 수치가 신청자 본인의 휴대폰에 표시될 수 있는 경우, ShieldID는 메시지가 표시되기 전에 해당 백분율을 제거하므로 원본 점수가 고객님의 계정 밖에 노출되지 않습니다.
기록은 이미지보다 오래 남습니다
이미지는 일정에 따라 삭제됩니다. 인증이 이루어졌다는 사실과 그 결과는 고객님의 계정에 남으며, Trust Ledger 연동의 경우 Activity Ledger에 verified/failed 항목으로도 남습니다(ShieldID API 계정의 원장 항목: 출시 예정).
샘플 결과
API가 반환하는 형태 그대로 보여 드리는 필드별 판정입니다.
아래의 이름, 번호, 주소는 이 예시를 위해 만든 가상의 정보입니다. 필드 구성, 출처, 판정은 실제 결과의 형태와 같습니다.
| 필드 | 값 | 출처 | 판정 |
|---|---|---|---|
| person.name | "Priya Chandrasekaran" | barcode | match |
| person.dob | "1991-07-22" | barcode | match |
| person.document_number | "C4839201" | mrz | match |
| person.document_country | "CA" | barcode issuer code | match |
| person.address | "18 Spruce Ave, Ottawa ON" | barcode | match |
| identity.name_match | PASS | front vs barcode vs requester | PASS |
| checks.document_tamper | "no_indication" | advisory model | advisory — not gating |
// Sample result. Names, numbers and addresses are fictional.
{
"session_id": "ses_9f2c...sample",
"status": "VERIFIED",
"environment": "sandbox",
"person": {
"name": "Priya Chandrasekaran",
"dob": "1991-07-22",
"document_type": "DRIVERS_LICENCE",
"document_country": "CA",
"document_jurisdiction": "ON",
"address": "18 Spruce Ave, Ottawa ON"
},
"identity": {
"checks": ["name_match"],
"warnings": [],
"sources": {
"name": "barcode",
"dob": "barcode",
"address": "barcode"
}
},
"checks": {
"document": "PASS",
"identity": "PASS",
"document_tamper": "no_indication"
},
"completed_at": "2026-09-17T14:02:11Z"
}연동 참고 사항
결과를 어디에서 읽든 동일한 필드.
구조화된 필드는 인증 세션과 별개의 제품이 아닙니다. 동일한 결과의 일부로 전달됩니다.
- 인증이 완료되면 API를 통해 가져오는 세션 결과에 필드가 포함되어 전달됩니다.
- 인증이 끝나면 동일한 결과가 서명된 웹훅으로 사용자의 엔드포인트에 전달되므로 폴링할 필요가 없습니다.
- 모든 필드는 출처가 명시되며 개별 판정을 포함합니다. 이는 API 결과와 웹훅 페이로드 모두에 동일하게 적용됩니다.
- Sandbox 세션은 운영 환경과 동일한 필드 구조를 반환하므로 실제 문서를 한 장도 읽기 전에 연동을 구축할 수 있습니다.
문의
데이터 추출에 대한 솔직한 답변입니다.
필드를 직접 확인해 보세요
sandbox 인증을 실행하고 구조화된 결과를 확인해 보세요.
sandbox 세션을 만들고 본인의 휴대폰으로 문서를 스캔하면, 응답에서 모든 필드와 그 출처, 판정을 확인할 수 있습니다. Sandbox 세션에는 요금이 청구되지 않습니다.