CreditCard API
Summary
OCR 인식 기능을 사용하기 위한 필수적인 API로 구성되어 있습니다.
ImageRecognizer.RecognitionListener
/**
* OCR 결과 리스너
* 인식에 성공하면 인식결과 정보를 넘겨줌
*/
private ImageRecognizer.RecognitionListener mRecognitionListener = new ImageRecognizer.RecognitionListener() {
/**
* 인식에 성공하여 결과값 전달
* @param result 인식 결과 데이터
*/
@Override
public void onFinish(ImageRecognizer.Result result) {
}
/**
* 인식에 실패
* @param code 오류코드
* {@link ImageRecognizer#ERROR_CODE_FILE_NOT_FOUND}: ROM 파일을 찾지 못함
* {@link ImageRecognizer#ERROR_CODE_LICENSE_CHECK_FAILED}: 라이선스 만료
* {@link ImageRecognizer#ERROR_CODE_IMAGE_BLUR}: 이미지가 너무 흐림
*/
@Override
public void onError(int code) {
}
};
public class ImageRecognizer.Result {
String cardNumber; //카드 번호
String validYear; //유효 기간 (년)
String validMonth; //유효 기간 (월)
boolean isValidCardNumber //카드 번호 유효성 여부
Bitmap image; //인식에 사용된 카드 이미지
}
Functions List
// 인식엔진 생성자
ImageRecognizer(Context context)
// 인식엔진 생성자(결과 암호화)
ImageRecognizer(Context context, byte[] encryptKey, byte[] encryptIV)
// 입력된 이미지를 인식하고 그 결과를 리스너로 반환
void startRecognition(int[] array, int width, int height, float blurThreshold, ImageRecognizer.RecognitionListener recognitionListener)
// 입력된 카메라 프리뷰 이미지를 인식하고 그 결과를 리스너로 반환
void startRecognitionPreview(byte[] preview, int previewWidth, int previewHeight, Rect guideRect, int orientation, float blurThreshold, ImageRecognizer.RecognitionListener recognitionListener)
// 인식기 메모리 해제
void release()
ImageRecognizer
인식 된 카드번호를 암호화 하지 않는 기본 생성자
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
Application context | Context |
Returns
-
Example
ImageRecognizer mImageRecognizer = new ImageRecognizer(getApplicationContext());
ImageRecognizer
인식 된 카드번호를 암호화하는 생성자
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
App context | Context |
[in] | encryptKey |
인식결과 암호화를 위한 키 | byte[] |
[in] | encryptIV |
인식결과 함호화를 위한 초기 벡터 | byte[] |
Returns
-
Example
byte[] mEncryptKey = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
byte[] mEncryptIV = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
ImageRecognizer mImageRecognizer = new ImageRecognizer(getApplicationContext(), mEncryptKey, mEncryptIV);
startRecognition
입력된 이미지를 인식하고 그 결과를 리스너로 반환
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | array |
촬영 이미지 | int[] |
[in] | width |
이미지 가로 길이 | int |
[in] | height |
이미지 세로 길이 | int |
[in] | blurThreshold |
인식을 시도하지 않는 이미지 흐림 정도 값 0(깨끗함)~1(흐림) | float |
[in] | recognitionListener |
인식 결과를 전달 받을 리스너 | RecognitionListener |
Returns
-
Example
ImageRecognizer mImageRecognizer = new ImageRecognizer(getApplicationContext());
Bitmap inputImage = BitmapFactory.decodeFile("/path/to/image.jpg");
ImageRecognizer.RecognitionListener mRecognitionListener = new ImageRecognizer.RecognitionListener() {...);
mImageRecognizer.startRecognition(inputImage, mRecognitionListener);
startRTRRecognition
입력된 카메라 프리뷰 이미지를 인식하고 그 결과를 리스너로 반환
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | preview |
카메라 프리뷰 이미지 데이터 | byte[] |
[in] | previewWidth |
프리뷰 이미지 가로 길이 | int |
[in] | previewHeight |
프리뷰 이미지 세로 길이 | int |
[in] | guideRect |
가이드 Rect | Rect |
[in] | cameraOrientation |
카메라 회전 값 | int |
[in] | blurThreshold |
인식을 시도하지 않는 이미지 흐림 정도 값 0(깨끗함)~1(흐림) | float |
[in] | recognitionListener |
결과 반환 리스너 | RecognitionListener |
Returns
-
Example
ImageRecognizer mImageRecognizer = new ImageRecognizer(getApplicationContext());
ImageRecognizer.RecognitionListener mRecognitionListener = new ImageRecognizer.RecognitionListener() {...);
mImageRecognizer.startRTRRecognition(previewData, previewWidth, previewHeight, mGuideRect, mCameraOrientation, mRecognitionListener);
getBlurValue
프리뷰 영상에서 초점이 흐림 정도를 측정
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | previewData |
프리뷰 영상 | byte[] |
[in] | previewWidth |
프리뷰 너비 | int |
[in] | previewHeight |
프리뷰 높이 | int |
Returns
0~1 사이의 값 또는 NaN.
1 이면 매우 흐림
Example
float blurValue = mImageRecognizer.getBlurValue(data, previewSize.width, previewSize.height);
decrypt
입력된 String 을 key 와 iv 를 사용하여 복호화
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | text |
암호화된 String | String |
[in] | key |
암호화에 사용한 key | byte[] |
[in] | iv |
암호화에 사용한 kv | byte[] |
Returns
복호화된 String
Example
byte[] mEncryptKey = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
byte[] mEncryptIV = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
String decodedText = ImageRecognizer.decrypt("encrypted_text", mEncryptKey, mEncryptIV);
release
인식기 메모리 해제
Parameters
# | Name | Description | Type |
---|
Returns
-
Example
mImageRecognizer.release();
getVersion
SDK 버전 확인
Parameters
# | Name | Description | Type |
---|
Returns
SDK 의 버전
Example
BuildInfo.getVersion()
isValidLicense
라이선스가 유효한지 여부 판단
SDK 사용 초기에 호출하지 않으면 제한된 날짜까지만 사용제한
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
Application context | Context |
Returns
라이선스 유효 여부 (true – 유효, false – 만료)
Example
if (!LicenseChecker.isValidLicense(getApplicationContext())) {
Toast.makeText(getApplicationContext(), R.string.error_license_check, Toast.LENGTH_SHORT).show();
}
getExpiredDate
라이선스 만료일자 출력
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
Application context | Context |
Returns
라이선스 만료일자
Example
Date date = LicenseChecker.getExpiredDate(getApplicationContext());
SelvyCreditCardInfo
BOOL isValidCardNumber //카드 번호가 유효한지 여부
NSString* cardNumber //카드 번호 스트링
NSData* cardNumberData //암호화 된 카드 번호 NSData
NSString* expiryMonth //카드 유효기간 월 스트링
NSString* expiryYear //카드 유효기간 년 스트링
Functions list
// 카드 인식
(void)recognize:(UIImage *)image delegate:(id<SelvyCreditCardRecognizerDelegate>)delegate
// 인식 결과 암호화를 적용하는 카드 인식
(void)recognize:(UIImage *)image key:(NSString *)key iv:(NSString *)iv delegate:(id<SelvyCreditCardRecognizerDelegate>)delegate
// 라이선스 유효 여부 확인
(BOOL)checkLicense
// 라이선스 만료 날짜 확인
(NSDateComponents *)getExpiredNSDateComponents
SelvyCreditCardRecognizer : OCR 처리를 담당하는 클래스
(void)recognize:(UIImage *)image delegate:(id<SelvyCreditCardRecognizerDelegate>)delegate
카드 인식
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | image |
신용카드 이미지 | UIImage * |
[in] | delegate |
인식 결과를 전달 받을 콜백 객체 | id<SelvyCreditCardRecognizerDelegate> |
Returns
-
(void)recognize:(UIImage *)image key:(NSString *)key iv:(NSString *)iv delegate:(id<SelvyCreditCardRecognizerDelegate>)delegate
인식 결과 암호화를 적용하는 카드 인식
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | image |
신분증 촬영 이미지 | UIImage * |
[in] | key |
인식 결과 암호화에 사용될 키(길이 : 32byte(256bit)) | NSString * |
[in] | iv |
인식 결과 암호화에 사용될 Initialization Vector(길이 : 16byte(128bit)) | NSString * |
[in] | delegate |
인식 결과를 리턴하기 위한 콜백 | id<SelvyIDCardRecognizerDelegate> |
Returns
-
(NSString *)decryptDataToStringUsingAES:(NSData *)data key:(NSString *)key iv:(NSString *)iv
인식 결과를 복호화
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | data |
복호화 할 데이터 | NSString * |
[in] | key |
암호화에 사용될 키(길이 : 32byte(256bit)) | NSString * |
[in] | iv |
암호화에 사용될 초기화 벡터(길이 : 16byte(128bit)) | NSString * |
Returns
복호화 된 데이터의 NSString (데이터가 유효하지 않거나 키값 길이가 맞지 않을 경우 nil 리턴)
(BOOL)checkLicense
라이선스 유효 여부를 리턴
Parameters
# | Name | Description | Type |
---|
Returns
BOOL : 라이선스 유효 여부
(NSDateComponents *)getExpiredNSDateComponents
라이선스 만료 날짜를 NSDateComponents 객체로 리턴
Parameters
# | Name | Description | Type |
---|
Returns
NSDateComponents : 라이선스 만료 날짜
(NSString *)getVersion
버전 정보 스트링을 리턴
Parameters
# | Name | Description | Type |
---|
Returns
NSString : 버전 정보 스트링
SelvyCreditCardRecognizerDelegate
(void)onCreditCardRecognized:(UIImage *)cardImage cardInfo:(SelvyCreditCardInfo *)cardInfo
신용카드 촬영 및 인식 성공 시, 결과 전달
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | cardImage |
인식에 사용된 카드 이미지 | UIImage * |
[in] | cardInfo |
인식된 카드 정보 | SelvyCreditCardInfo * |
Returns
-
(void)onCreditCardError:(CreditCardError)errorCode
신분증 촬영화면에서 촬영이나 인식 실패 시, 결과 전달
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | errorCode |
신용카드 인식 실패 코드
|
IDCardError |
Returns
-
startRTRRecognition
입력된 카메라 프리뷰 이미지를 인식하고 그 결과를 리스너로 반환
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | preview |
카메라 프리뷰 이미지 데이터 | byte[] |
[in] | previewWidth |
프리뷰 이미지 가로 길이 | int |
[in] | previewHeight |
프리뷰 이미지 세로 길이 | int |
[in] | guideRect |
가이드 Rect | Rect |
[in] | cameraOrientation |
카메라 회전 값 | int |
[in] | blurThreshold |
인식을 시도하지 않는 이미지 흐림 정도 값 0(깨끗함)~1(흐림) | float |
[in] | recognitionListener |
결과 반환 리스너 | RecognitionListener |
Returns
-
Example
ImageRecognizer mImageRecognizer = new ImageRecognizer(getApplicationContext());
ImageRecognizer.RecognitionListener mRecognitionListener = new ImageRecognizer.RecognitionListener() {...);
mImageRecognizer.startRTRRecognition(previewData, previewWidth, previewHeight, mGuideRect, mCameraOrientation, mRecognitionListener);
getBlurValue
프리뷰 영상에서 초점이 흐림 정도를 측정
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | previewData |
프리뷰 영상 | byte[] |
[in] | previewWidth |
프리뷰 너비 | int |
[in] | previewHeight |
프리뷰 높이 | int |
Returns
0~1 사이의 값 또는 NaN.
1 이면 매우 흐림
Example
float blurValue = mImageRecognizer.getBlurValue(data, previewSize.width, previewSize.height);
decrypt
입력된 String 을 key 와 iv 를 사용하여 복호화
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | text |
암호화된 String | String |
[in] | key |
암호화에 사용한 key | byte[] |
[in] | iv |
암호화에 사용한 kv | byte[] |
Returns
복호화된 String
Example
byte[] mEncryptKey = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
byte[] mEncryptIV = {'s', 'e', 'l', 'v', 'a', 's', 'a', 'i' ...};
String decodedText = ImageRecognizer.decrypt("encrypted_text", mEncryptKey, mEncryptIV);
release
인식기 메모리 해제
Parameters
# | Name | Description | Type |
---|
Returns
-
Example
mImageRecognizer.release();
getVersion
SDK 버전 확인
Parameters
# | Name | Description | Type |
---|
Returns
SDK 의 버전
Example
BuildInfo.getVersion()
isValidLicense
라이선스가 유효한지 여부 판단
SDK 사용 초기에 호출하지 않으면 제한된 날짜까지만 사용제한
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
Application context | Context |
Returns
라이선스 유효 여부 (true – 유효, false – 만료)
Example
if (!LicenseChecker.isValidLicense(getApplicationContext())) {
Toast.makeText(getApplicationContext(), R.string.error_license_check, Toast.LENGTH_SHORT).show();
}
getExpiredDate
라이선스 만료일자 출력
Parameters
# | Name | Description | Type |
---|---|---|---|
[in] | context |
Application context | Context |
Returns
라이선스 만료일자
Example
Date date = LicenseChecker.getExpiredDate(getApplicationContext());