useB. OCR API는 1장의 신분증 사진을 활용하여 신분증의 글자들을 읽어들이고,
필요한 정보들을 파싱(parsing)해주는 기능입니다.
최적의 성능이 나올 수 있도록 지켜야 할 다음 항목들이 있습니다.
1️⃣권장 사이즈
-
OCR
- 신분증(주민등록증, 운전면허증, 외국인등록증) 권장 사이즈 : 약 1000픽셀(가로) x 640픽셀(세로)
- 신분증(여권) 권장 사이즈 : 약 1000픽셀(가로) x 710픽셀(세로)
- 사업자등록증 권장 사이즈 : 약 1000픽셀(가로) x 1450픽셀(세로)
→ 권장 사이즈보다 지나치게 작은 경우(신분증의 경우, 가로 500픽셀 이하, 사업자등록증의 경우, 가로 800픽셀 이하) 에러가 발생됩니다. (Error Code : O004, O014)
→ 권장 사이즈보다 큰 경우, 속도 및 정확도가 떨어질 수 있기에 권장 사이즈에 맞게 resizing 처리가 됩니다.
→ 신분증의 사진 크기가 5MB 이상인 경우 에러가 발생됩니다. (Error Code : O011)
(5MB 이상의 대용량의 사진 파일을 전송할 경우 지연시간이 길어지고 서버부하가 발생할 수 있어 에러 처리하고 있습니다.)
-
Masking
-
안면인증
- 안면 인증 권장 사이즈 : 인지된 얼굴 사이즈가 200 x 200 픽셀 이상
→ 눈과 눈 사이는 100 픽셀 이상 될 정도로 충분히 얼굴이 크게 나와야 합니다.,
→ 3MB 이상인 경우 에러가 발생됩니다. (Error Code : O011)
2️⃣촬영 시 유의사항
- 빛 반사로 인해서 인식되지 않는 글자가 있는 경우, OCR 기능이 잘 수행되지 않을 수 있습니다. OCR이 잘 안되었을 때는 수동으로 수정이 가능하게 하는 것을 권장합니다.
- 국내여권, 해외여권의 경우 MRZ1, MRZ2 (아래쪽에 있는 Machine Readable Zone) 두 줄의 문자, 숫자가 모두 잘 보이게 촬영해주셔야 합니다.
- 신분증 Masking이 정상적으로 이루어질 수 있도록 신분증 촬영 시에는 고객이 반드시 가이드라인에맞춰서 사진을 촬영할 수 있도록 안내해 주셔야 합니다.
- 안면 인증의 경우 얼굴이 블러(blur) 되거나 빛 반사 되지 않고, 정면을 쳐다보는 사진으로 활용할 것을 권장 드립니다.
- 신분증 OCR의 경우 주변에 다른 사물이 보이지 않고, 신분증만 보이게 찍을 수 있도록 가이드 해주셔야 합니다.
- EXIF(Exchangeable Image File Format)의 회전값이 90도, 180도, 270도 회전된 이미지의 경우 처리 가능하지만, 임의로 회전된 상태에서 촬영된 이미지는 OCR시에 성능 저하 및 마스킹 오류를 일으킬 수 있습니다.
3️⃣webRTC 구현시 유의 사항
- OCR 성능이 잘 나오지 않으시는 경우 필독해주시기 바랍니다.
- webRTC 구현시에 특정 핸드폰에서 광각 카메라(가까운 곳에 있는 물건 촬영시에 blur현상 발생되고, 먼 곳의 물건들은 선명하게 촬영됨)로 설정되어 신분증 촬영시에 OCR 성능이 저하되는 경우가 있습니다.
- 위 현상을 해결하기 위해서 webRTC 설정 시에 index 값을 항상 마지막 카메라로 설정해두어야 합니다. 카메라 개수가 기기마다 다 다를 수 있지만, 근거리에서 신분증을 찍기에 적합한 카메라는 마지막 index 의 카메라를 활용하는 것이 가장 적합합니다. (광각 카메라가 선택되는 경우, 신분증이 흐릿하게 촬영되어 OCR 성능이 잘 나오기 어려움)
- 해결책 : 카메라 리스트에서(videoinput environment) 마지막 카메라가 대부분의 디바이스에서 광각으로 설정하지 않아 마지막 카메라로 적용해야 흐릿한 사진이 찍히지 않을 수 있습니다.
- 기종별, OS버젼별로 충분한 호환성 테스트가 이루어지지 않으면 카메라 촬영 및 이미지 퀄리티를 보장하기 어려울 수 있습니다. 이러한 작업에 대한 공수를 줄이기 위해서는 eKYC 솔루션 사용을 권장드립니다.
- webRTC 샘플 소스코드
navigator.mediaDevices
.getUserMedia({
video: {
deviceId: camera.length
? { ideal: camera[camera.length - 1] } // 마지막 index의 카메라 선택
: null,
width: { ideal: 1920 },
height: { ideal: 1920 },
facingMode: { ideal: this.facingMode },
focusMode: { ideal: "continuous" },
whiteBalanceMode: { ideal: "continuous" },
zoom: { ideal: 1 },
},
<aside>
💡 데모 : https://kyc-demo.useb.co.kr/ → 신분증 인증시 카메라 구현 확인하실 수 있는 데모 링크를 전달드립니다.
</aside>