@mikashboks/capture-intelligence-core 0.1.9 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/capture-normalization.d.ts +21 -1
- package/dist/cjs/capture-normalization.d.ts.map +1 -1
- package/dist/cjs/capture-normalization.js +85 -13
- package/dist/cjs/capture-normalization.js.map +1 -1
- package/dist/cjs/document-classifier.d.ts.map +1 -1
- package/dist/cjs/document-classifier.js +59 -2
- package/dist/cjs/document-classifier.js.map +1 -1
- package/dist/cjs/document-placement.d.ts +21 -0
- package/dist/cjs/document-placement.d.ts.map +1 -0
- package/dist/cjs/document-placement.js +66 -0
- package/dist/cjs/document-placement.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +27 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/issuing-country.d.ts +16 -0
- package/dist/cjs/issuing-country.d.ts.map +1 -0
- package/dist/cjs/issuing-country.js +77 -0
- package/dist/cjs/issuing-country.js.map +1 -0
- package/dist/cjs/kyc-mobile-contract.d.ts +13 -1
- package/dist/cjs/kyc-mobile-contract.d.ts.map +1 -1
- package/dist/cjs/kyc-mobile-contract.js +64 -6
- package/dist/cjs/kyc-mobile-contract.js.map +1 -1
- package/dist/cjs/mrz-band-detector.d.ts +12 -5
- package/dist/cjs/mrz-band-detector.d.ts.map +1 -1
- package/dist/cjs/mrz-band-detector.js +29 -14
- package/dist/cjs/mrz-band-detector.js.map +1 -1
- package/dist/cjs/mrz-check-digits.d.ts +74 -0
- package/dist/cjs/mrz-check-digits.d.ts.map +1 -0
- package/dist/cjs/mrz-check-digits.js +478 -0
- package/dist/cjs/mrz-check-digits.js.map +1 -0
- package/dist/cjs/mrz-policy.d.ts +18 -0
- package/dist/cjs/mrz-policy.d.ts.map +1 -0
- package/dist/cjs/mrz-policy.js +90 -0
- package/dist/cjs/mrz-policy.js.map +1 -0
- package/dist/cjs/quality-checks.d.ts +16 -0
- package/dist/cjs/quality-checks.d.ts.map +1 -1
- package/dist/cjs/quality-checks.js +72 -17
- package/dist/cjs/quality-checks.js.map +1 -1
- package/dist/cjs/types.d.ts +2 -2
- package/dist/cjs/types.js +2 -2
- package/dist/esm/capture-normalization.d.ts +21 -1
- package/dist/esm/capture-normalization.d.ts.map +1 -1
- package/dist/esm/capture-normalization.js +84 -13
- package/dist/esm/capture-normalization.js.map +1 -1
- package/dist/esm/document-classifier.d.ts.map +1 -1
- package/dist/esm/document-classifier.js +59 -2
- package/dist/esm/document-classifier.js.map +1 -1
- package/dist/esm/document-placement.d.ts +21 -0
- package/dist/esm/document-placement.d.ts.map +1 -0
- package/dist/esm/document-placement.js +62 -0
- package/dist/esm/document-placement.js.map +1 -0
- package/dist/esm/index.d.ts +12 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +7 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/issuing-country.d.ts +16 -0
- package/dist/esm/issuing-country.d.ts.map +1 -0
- package/dist/esm/issuing-country.js +71 -0
- package/dist/esm/issuing-country.js.map +1 -0
- package/dist/esm/kyc-mobile-contract.d.ts +13 -1
- package/dist/esm/kyc-mobile-contract.d.ts.map +1 -1
- package/dist/esm/kyc-mobile-contract.js +63 -5
- package/dist/esm/kyc-mobile-contract.js.map +1 -1
- package/dist/esm/mrz-band-detector.d.ts +12 -5
- package/dist/esm/mrz-band-detector.d.ts.map +1 -1
- package/dist/esm/mrz-band-detector.js +29 -14
- package/dist/esm/mrz-band-detector.js.map +1 -1
- package/dist/esm/mrz-check-digits.d.ts +74 -0
- package/dist/esm/mrz-check-digits.d.ts.map +1 -0
- package/dist/esm/mrz-check-digits.js +471 -0
- package/dist/esm/mrz-check-digits.js.map +1 -0
- package/dist/esm/mrz-policy.d.ts +18 -0
- package/dist/esm/mrz-policy.d.ts.map +1 -0
- package/dist/esm/mrz-policy.js +87 -0
- package/dist/esm/mrz-policy.js.map +1 -0
- package/dist/esm/quality-checks.d.ts +16 -0
- package/dist/esm/quality-checks.d.ts.map +1 -1
- package/dist/esm/quality-checks.js +71 -17
- package/dist/esm/quality-checks.js.map +1 -1
- package/dist/esm/types.d.ts +2 -2
- package/dist/esm/types.js +2 -2
- package/package.json +8 -4
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveDocumentMrzPolicy = resolveDocumentMrzPolicy;
|
|
4
|
+
const PASSPORT_POLICY = Object.freeze({
|
|
5
|
+
expected: true,
|
|
6
|
+
expectation: 'expected',
|
|
7
|
+
formats: ['TD3'],
|
|
8
|
+
placement: 'passport_data_page',
|
|
9
|
+
reason: 'passport_data_page',
|
|
10
|
+
});
|
|
11
|
+
const CARD_BACK_POLICY = Object.freeze({
|
|
12
|
+
expected: true,
|
|
13
|
+
expectation: 'expected',
|
|
14
|
+
formats: ['TD1', 'TD2'],
|
|
15
|
+
placement: 'card_back',
|
|
16
|
+
reason: 'card_back',
|
|
17
|
+
});
|
|
18
|
+
const NO_MRZ_POLICY = Object.freeze({
|
|
19
|
+
expected: false,
|
|
20
|
+
expectation: 'none',
|
|
21
|
+
formats: [],
|
|
22
|
+
placement: null,
|
|
23
|
+
reason: 'not_expected',
|
|
24
|
+
});
|
|
25
|
+
const MRZ_CARD_BASE_TYPES = new Set([
|
|
26
|
+
'card',
|
|
27
|
+
'card_back',
|
|
28
|
+
'id_card',
|
|
29
|
+
'identity_card',
|
|
30
|
+
'national_id',
|
|
31
|
+
'national_id_card',
|
|
32
|
+
'sierraleone_national_id',
|
|
33
|
+
'sierraleone_national_id_card',
|
|
34
|
+
'ghana_card',
|
|
35
|
+
]);
|
|
36
|
+
function normalizeToken(value) {
|
|
37
|
+
return String(value || '')
|
|
38
|
+
.trim()
|
|
39
|
+
.toLowerCase()
|
|
40
|
+
.replace(/[\s-]+/g, '_');
|
|
41
|
+
}
|
|
42
|
+
function resolveDocumentSide(input, documentType) {
|
|
43
|
+
const explicitSide = normalizeToken(input.documentSide);
|
|
44
|
+
if (explicitSide === 'front' || explicitSide === 'back')
|
|
45
|
+
return explicitSide;
|
|
46
|
+
const captureMode = normalizeToken(input.captureMode);
|
|
47
|
+
if (captureMode.includes('back'))
|
|
48
|
+
return 'back';
|
|
49
|
+
if (captureMode.includes('front'))
|
|
50
|
+
return 'front';
|
|
51
|
+
if (documentType.endsWith('_back'))
|
|
52
|
+
return 'back';
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
function stripBackSuffix(documentType) {
|
|
56
|
+
return documentType.endsWith('_back') ? documentType.slice(0, -'_back'.length) : documentType;
|
|
57
|
+
}
|
|
58
|
+
function isAddressOrSelfieType(documentType, overlayVariant) {
|
|
59
|
+
return (overlayVariant === 'a4' ||
|
|
60
|
+
documentType.includes('address') ||
|
|
61
|
+
documentType.includes('proof_of_address') ||
|
|
62
|
+
documentType.includes('utility_bill') ||
|
|
63
|
+
documentType.includes('selfie') ||
|
|
64
|
+
documentType.includes('liveness') ||
|
|
65
|
+
documentType.includes('mobile_money') ||
|
|
66
|
+
documentType.includes('business_registration'));
|
|
67
|
+
}
|
|
68
|
+
function resolveDocumentMrzPolicy(input = {}) {
|
|
69
|
+
const documentType = normalizeToken(input.documentType);
|
|
70
|
+
const overlayVariant = normalizeToken(input.overlayVariant);
|
|
71
|
+
if (isAddressOrSelfieType(documentType, overlayVariant)) {
|
|
72
|
+
return NO_MRZ_POLICY;
|
|
73
|
+
}
|
|
74
|
+
if (documentType.includes('passport') || overlayVariant === 'passport') {
|
|
75
|
+
return PASSPORT_POLICY;
|
|
76
|
+
}
|
|
77
|
+
const side = resolveDocumentSide(input, documentType);
|
|
78
|
+
if (side !== 'back') {
|
|
79
|
+
return NO_MRZ_POLICY;
|
|
80
|
+
}
|
|
81
|
+
const baseType = stripBackSuffix(documentType);
|
|
82
|
+
if (MRZ_CARD_BASE_TYPES.has(documentType) || MRZ_CARD_BASE_TYPES.has(baseType)) {
|
|
83
|
+
return CARD_BACK_POLICY;
|
|
84
|
+
}
|
|
85
|
+
if (!documentType && overlayVariant === 'card') {
|
|
86
|
+
return CARD_BACK_POLICY;
|
|
87
|
+
}
|
|
88
|
+
return NO_MRZ_POLICY;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=mrz-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mrz-policy.js","sourceRoot":"","sources":["../../src/mrz-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,6 +57,20 @@ export declare function shouldShowSubmitAnyway(state: QualityFailureState, stepS
|
|
|
57
57
|
* missing face from the submitted asset.
|
|
58
58
|
*/
|
|
59
59
|
export declare function hasHardBlockingQualityFailure(checks: QualityCheckResults, reviewMode?: ReviewMode): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* A document corner failure is "retry-escapable" when there is no confident
|
|
62
|
+
* cut-off evidence. The live detector (especially the sobel fallback on iOS
|
|
63
|
+
* Safari) can under-bound a document that is fully in frame and report
|
|
64
|
+
* corners_visible=false — the off-center "Show all 4 corners of the ID."
|
|
65
|
+
* loop-trap, where the user is stuck on Retake forever.
|
|
66
|
+
*
|
|
67
|
+
* This lets the bounded Submit-Anyway override (only after the retry threshold)
|
|
68
|
+
* apply to those false positives, while a genuine cut-off (cutOffRisk 'high' —
|
|
69
|
+
* a truly clipped ID missing data/MRZ) stays non-escapable. The submitted image
|
|
70
|
+
* is the uncropped original and the case is still routed for manual review, so
|
|
71
|
+
* this is bounded relief, not blind trust.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isRetryEscapableDocumentCornerFailure(checks: QualityCheckResults, cutOffRisk?: string | null, reviewMode?: ReviewMode): boolean;
|
|
60
74
|
/**
|
|
61
75
|
* Infer the non-ID review mode from the submitted document/proof type.
|
|
62
76
|
*
|
|
@@ -88,6 +102,8 @@ export interface DocumentQualityInput {
|
|
|
88
102
|
documentType?: string | null;
|
|
89
103
|
/** Whether this is an address proof document */
|
|
90
104
|
isAddressProof: boolean;
|
|
105
|
+
/** Enable relaxed address-document evidence acceptance. Defaults to true. */
|
|
106
|
+
relaxedCaptureReviewEnabled?: boolean;
|
|
91
107
|
}
|
|
92
108
|
/**
|
|
93
109
|
* Result of document quality checks.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAEZ,aAAa,EACb,qBAAqB,EACrB,UAAU,EACX,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"quality-checks.d.ts","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,7 @@ exports.createQualityFailureState = createQualityFailureState;
|
|
|
17
17
|
exports.countFailedReview = countFailedReview;
|
|
18
18
|
exports.shouldShowSubmitAnyway = shouldShowSubmitAnyway;
|
|
19
19
|
exports.hasHardBlockingQualityFailure = hasHardBlockingQualityFailure;
|
|
20
|
+
exports.isRetryEscapableDocumentCornerFailure = isRetryEscapableDocumentCornerFailure;
|
|
20
21
|
exports.getReviewModeFromDocumentType = getReviewModeFromDocumentType;
|
|
21
22
|
exports.runDocumentQualityChecks = runDocumentQualityChecks;
|
|
22
23
|
exports.runSelfieQualityChecks = runSelfieQualityChecks;
|
|
@@ -34,6 +35,7 @@ const DOCUMENT_GEOMETRY_SUPPORT_CONFIDENCE_FLOOR = 45;
|
|
|
34
35
|
const DOCUMENT_GEOMETRY_SUPPORT_THRESHOLD_MARGIN = 16;
|
|
35
36
|
const DEFAULT_DOCUMENT_SHARPNESS_MIN = 60;
|
|
36
37
|
const SIERRA_LEONE_CARD_DOCUMENT_SHARPNESS_MIN = 50;
|
|
38
|
+
const ADDRESS_RELAXED_DOCUMENT_CONFIDENCE_MIN = 50;
|
|
37
39
|
function normalizeDocumentTypeHint(documentType) {
|
|
38
40
|
return String(documentType || '')
|
|
39
41
|
.trim()
|
|
@@ -43,21 +45,37 @@ function normalizeDocumentTypeHint(documentType) {
|
|
|
43
45
|
function isSierraLeoneCardDocument(documentType) {
|
|
44
46
|
switch (normalizeDocumentTypeHint(documentType)) {
|
|
45
47
|
case 'id_card':
|
|
48
|
+
case 'id_card_back':
|
|
46
49
|
case 'national_id':
|
|
50
|
+
case 'national_id_back':
|
|
47
51
|
case 'national_id_card':
|
|
52
|
+
case 'national_id_card_back':
|
|
48
53
|
case 'sierraleone_national_id':
|
|
54
|
+
case 'sierraleone_national_id_back':
|
|
49
55
|
case 'sierraleone_national_id_card':
|
|
56
|
+
case 'sierraleone_national_id_card_back':
|
|
50
57
|
case 'voter_id':
|
|
58
|
+
case 'voter_id_back':
|
|
51
59
|
case 'voter_card':
|
|
60
|
+
case 'voter_card_back':
|
|
52
61
|
case 'sierraleone_voter_id':
|
|
62
|
+
case 'sierraleone_voter_id_back':
|
|
53
63
|
case 'driver_license':
|
|
64
|
+
case 'driver_license_back':
|
|
54
65
|
case 'drivers_license':
|
|
66
|
+
case 'drivers_license_back':
|
|
55
67
|
case 'driver_licence':
|
|
68
|
+
case 'driver_licence_back':
|
|
56
69
|
case 'drivers_licence':
|
|
70
|
+
case 'drivers_licence_back':
|
|
57
71
|
case 'sierraleone_driver_license':
|
|
72
|
+
case 'sierraleone_driver_license_back':
|
|
58
73
|
case 'sierraleone_drivers_license':
|
|
74
|
+
case 'sierraleone_drivers_license_back':
|
|
59
75
|
case 'market_association':
|
|
76
|
+
case 'market_association_back':
|
|
60
77
|
case 'market_association_card':
|
|
78
|
+
case 'market_association_card_back':
|
|
61
79
|
return true;
|
|
62
80
|
default:
|
|
63
81
|
return false;
|
|
@@ -79,6 +97,11 @@ function hasSupportedDocumentEvidence(result, documentType, cornersOk) {
|
|
|
79
97
|
const supportedConfidence = Math.max(DOCUMENT_GEOMETRY_SUPPORT_CONFIDENCE_FLOOR, reviewProfile.threshold - DOCUMENT_GEOMETRY_SUPPORT_THRESHOLD_MARGIN);
|
|
80
98
|
return result.confidence >= supportedConfidence;
|
|
81
99
|
}
|
|
100
|
+
function hasAddressDocumentReviewEvidence(result, relaxedCaptureReviewEnabled) {
|
|
101
|
+
if (result.isLikelyDoc)
|
|
102
|
+
return true;
|
|
103
|
+
return (relaxedCaptureReviewEnabled && result.confidence >= ADDRESS_RELAXED_DOCUMENT_CONFIDENCE_MIN);
|
|
104
|
+
}
|
|
82
105
|
/* -- Quality bucket classification ---------------------------------------- */
|
|
83
106
|
/**
|
|
84
107
|
* Map a step signature string and optional review mode to a quality bucket.
|
|
@@ -181,6 +204,27 @@ function hasHardBlockingQualityFailure(checks, reviewMode = 'document') {
|
|
|
181
204
|
return ((checks.hasOwnProperty('corners_visible') && checks['corners_visible'] === false) ||
|
|
182
205
|
(checks.hasOwnProperty('content_valid') && checks['content_valid'] === false));
|
|
183
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* A document corner failure is "retry-escapable" when there is no confident
|
|
209
|
+
* cut-off evidence. The live detector (especially the sobel fallback on iOS
|
|
210
|
+
* Safari) can under-bound a document that is fully in frame and report
|
|
211
|
+
* corners_visible=false — the off-center "Show all 4 corners of the ID."
|
|
212
|
+
* loop-trap, where the user is stuck on Retake forever.
|
|
213
|
+
*
|
|
214
|
+
* This lets the bounded Submit-Anyway override (only after the retry threshold)
|
|
215
|
+
* apply to those false positives, while a genuine cut-off (cutOffRisk 'high' —
|
|
216
|
+
* a truly clipped ID missing data/MRZ) stays non-escapable. The submitted image
|
|
217
|
+
* is the uncropped original and the case is still routed for manual review, so
|
|
218
|
+
* this is bounded relief, not blind trust.
|
|
219
|
+
*/
|
|
220
|
+
function isRetryEscapableDocumentCornerFailure(checks, cutOffRisk, reviewMode = 'document') {
|
|
221
|
+
if (reviewMode !== 'document')
|
|
222
|
+
return false;
|
|
223
|
+
if (!(checks.hasOwnProperty('corners_visible') && checks['corners_visible'] === false)) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
return (cutOffRisk ?? 'low') !== 'high';
|
|
227
|
+
}
|
|
184
228
|
/**
|
|
185
229
|
* Infer the non-ID review mode from the submitted document/proof type.
|
|
186
230
|
*
|
|
@@ -216,12 +260,18 @@ function getReviewModeFromDocumentType(documentType) {
|
|
|
216
260
|
/* -- Internal helpers for typed bucket access ------------------------------ */
|
|
217
261
|
function getFailureCount(state, bucket) {
|
|
218
262
|
switch (bucket) {
|
|
219
|
-
case 'document_front':
|
|
220
|
-
|
|
221
|
-
case '
|
|
222
|
-
|
|
223
|
-
case '
|
|
224
|
-
|
|
263
|
+
case 'document_front':
|
|
264
|
+
return state.document_front;
|
|
265
|
+
case 'document_back':
|
|
266
|
+
return state.document_back;
|
|
267
|
+
case 'selfie':
|
|
268
|
+
return state.selfie;
|
|
269
|
+
case 'address_document':
|
|
270
|
+
return state.address_document;
|
|
271
|
+
case 'address_front_door':
|
|
272
|
+
return state.address_front_door;
|
|
273
|
+
default:
|
|
274
|
+
return 0;
|
|
225
275
|
}
|
|
226
276
|
}
|
|
227
277
|
function setFailureCount(state, bucket, value) {
|
|
@@ -257,8 +307,9 @@ function runDocumentQualityChecks(input) {
|
|
|
257
307
|
getDocumentSharpnessMinimum(input.documentType, input.isAddressProof);
|
|
258
308
|
if (input.isAddressProof) {
|
|
259
309
|
const docResult = (0, document_classifier_js_1.checkDocumentLikelihood)(input.grey, input.imgData, input.w, input.h, input.documentType || 'utility_bill');
|
|
260
|
-
|
|
261
|
-
checks['
|
|
310
|
+
const hasAddressDocumentEvidence = hasAddressDocumentReviewEvidence(docResult, input.relaxedCaptureReviewEnabled !== false);
|
|
311
|
+
checks['address_document_present'] = hasAddressDocumentEvidence;
|
|
312
|
+
checks['address_readable'] = sharpnessOk && brightnessOk && hasAddressDocumentEvidence;
|
|
262
313
|
}
|
|
263
314
|
else {
|
|
264
315
|
const textReadableOk = sharpnessOk && input.cornersOk !== false;
|
|
@@ -369,20 +420,20 @@ function evaluateDocumentFailure(checks, isAddressProof) {
|
|
|
369
420
|
let anyFail = false;
|
|
370
421
|
let failMessage = '';
|
|
371
422
|
if (isAddressProof) {
|
|
372
|
-
if (checks.hasOwnProperty('address_document_present') &&
|
|
373
|
-
!checks['address_document_present']) {
|
|
423
|
+
if (checks.hasOwnProperty('address_document_present') && !checks['address_document_present']) {
|
|
374
424
|
anyFail = true;
|
|
375
|
-
failMessage =
|
|
425
|
+
failMessage =
|
|
426
|
+
'This does not look like an address document. Show the full document and try again.';
|
|
376
427
|
}
|
|
377
428
|
else if (checks.hasOwnProperty('address_readable') && !checks['address_readable']) {
|
|
378
429
|
anyFail = true;
|
|
379
|
-
failMessage = '
|
|
430
|
+
failMessage = 'Move closer and reduce glare so the address text is readable.';
|
|
380
431
|
}
|
|
381
432
|
}
|
|
382
433
|
else {
|
|
383
434
|
if (checks.hasOwnProperty('corners_visible') && !checks['corners_visible']) {
|
|
384
435
|
anyFail = true;
|
|
385
|
-
failMessage = '
|
|
436
|
+
failMessage = 'Show all 4 corners of the ID.';
|
|
386
437
|
}
|
|
387
438
|
else if (checks.hasOwnProperty('content_valid') && !checks['content_valid']) {
|
|
388
439
|
anyFail = true;
|
|
@@ -390,15 +441,15 @@ function evaluateDocumentFailure(checks, isAddressProof) {
|
|
|
390
441
|
}
|
|
391
442
|
else if (checks.hasOwnProperty('good_lighting') && !checks['good_lighting']) {
|
|
392
443
|
anyFail = true;
|
|
393
|
-
failMessage = '
|
|
444
|
+
failMessage = 'Reduce glare or use brighter light.';
|
|
394
445
|
}
|
|
395
446
|
else if (checks.hasOwnProperty('text_readable') && !checks['text_readable']) {
|
|
396
447
|
anyFail = true;
|
|
397
|
-
failMessage = '
|
|
448
|
+
failMessage = 'Move closer and hold phone still.';
|
|
398
449
|
}
|
|
399
450
|
else if (checks.hasOwnProperty('glare_free') && !checks['glare_free']) {
|
|
400
451
|
anyFail = true;
|
|
401
|
-
failMessage = '
|
|
452
|
+
failMessage = 'Reduce glare. Tilt the ID away from the light.';
|
|
402
453
|
}
|
|
403
454
|
}
|
|
404
455
|
return { anyFail, failMessage };
|
|
@@ -454,7 +505,11 @@ function evaluateReviewFailure(checks, options) {
|
|
|
454
505
|
function getNextButtonDisabledReason(checks, isSelfieOrOptions, isAddressProof = false) {
|
|
455
506
|
const options = typeof isSelfieOrOptions === 'boolean'
|
|
456
507
|
? {
|
|
457
|
-
reviewMode: isSelfieOrOptions
|
|
508
|
+
reviewMode: isSelfieOrOptions
|
|
509
|
+
? 'selfie'
|
|
510
|
+
: isAddressProof
|
|
511
|
+
? 'address-document'
|
|
512
|
+
: 'document',
|
|
458
513
|
}
|
|
459
514
|
: isSelfieOrOptions;
|
|
460
515
|
if (options.reviewMode === 'selfie') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-checks.js","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quality-checks.js","sourceRoot":"","sources":["../../src/quality-checks.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -93,8 +93,8 @@ export declare const CAPTURE_DOCUMENT_SHARPNESS_MIN = 50;
|
|
|
93
93
|
export declare const CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = 6;
|
|
94
94
|
export declare const CAPTURE_DOCUMENT_AREA_MIN = 0.1;
|
|
95
95
|
export declare const CAPTURE_DOCUMENT_EDGE_READY_MULTIPLIER = 1.35;
|
|
96
|
-
export declare const DOC_GALLERY_FAILURE_THRESHOLD =
|
|
97
|
-
export declare const DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD =
|
|
96
|
+
export declare const DOC_GALLERY_FAILURE_THRESHOLD = 2;
|
|
97
|
+
export declare const DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 3;
|
|
98
98
|
export declare const SELFIE_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
|
|
99
99
|
export declare const ADDRESS_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
|
|
100
100
|
export declare const PICO_ANALYSIS_W = 240;
|
package/dist/cjs/types.js
CHANGED
|
@@ -33,8 +33,8 @@ exports.CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = 6;
|
|
|
33
33
|
exports.CAPTURE_DOCUMENT_AREA_MIN = 0.1;
|
|
34
34
|
exports.CAPTURE_DOCUMENT_EDGE_READY_MULTIPLIER = 1.35;
|
|
35
35
|
/* -- Retry escalation thresholds ------------------------------------------ */
|
|
36
|
-
exports.DOC_GALLERY_FAILURE_THRESHOLD =
|
|
37
|
-
exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD =
|
|
36
|
+
exports.DOC_GALLERY_FAILURE_THRESHOLD = 2;
|
|
37
|
+
exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 3;
|
|
38
38
|
exports.SELFIE_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
|
|
39
39
|
exports.ADDRESS_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
|
|
40
40
|
/* -- Pico.js analysis dimensions ------------------------------------------ */
|
|
@@ -16,6 +16,21 @@ export interface CaptureCropRect {
|
|
|
16
16
|
}
|
|
17
17
|
export type CapturePreviewResizeMode = 'cover' | 'contain';
|
|
18
18
|
export type CaptureRotationDegrees = 0 | 90 | 180 | 270;
|
|
19
|
+
export type CaptureNormalizationUnsafeReason = 'clamped_edge' | 'too_small' | 'too_large' | 'bad_aspect' | 'nearly_full_frame';
|
|
20
|
+
export interface CaptureClampedEdges {
|
|
21
|
+
left: boolean;
|
|
22
|
+
top: boolean;
|
|
23
|
+
right: boolean;
|
|
24
|
+
bottom: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface CaptureNormalizationDiagnostics {
|
|
27
|
+
paddingRatio: number;
|
|
28
|
+
clampedEdges: CaptureClampedEdges;
|
|
29
|
+
clamped: boolean;
|
|
30
|
+
areaRatio: number;
|
|
31
|
+
aspectRatio: number;
|
|
32
|
+
unsafeReason: CaptureNormalizationUnsafeReason | null;
|
|
33
|
+
}
|
|
19
34
|
export interface PreviewRectToImageCropInput {
|
|
20
35
|
imageSize: CaptureImageSize;
|
|
21
36
|
previewSize: CaptureImageSize;
|
|
@@ -41,9 +56,14 @@ export interface CaptureNormalizationPlan {
|
|
|
41
56
|
rotate: CaptureRotationDegrees;
|
|
42
57
|
resize?: CaptureResizePlan;
|
|
43
58
|
outputSize: CaptureImageSize;
|
|
59
|
+
diagnostics: CaptureNormalizationDiagnostics;
|
|
44
60
|
}
|
|
45
61
|
export type CaptureFrameMode = 'document' | 'address-document' | 'front-door' | 'selfie';
|
|
46
|
-
export declare function
|
|
62
|
+
export declare function mapPreviewRectToImageCropWithDiagnostics({ imageSize, previewSize, previewRect, resizeMode, paddingRatio, }: PreviewRectToImageCropInput): {
|
|
63
|
+
crop: CaptureCropRect;
|
|
64
|
+
diagnostics: CaptureNormalizationDiagnostics;
|
|
65
|
+
};
|
|
66
|
+
export declare function mapPreviewRectToImageCrop(input: PreviewRectToImageCropInput): CaptureCropRect;
|
|
47
67
|
export declare function getRotationToExpectedOrientation({ width, height, documentType, }: ExpectedOrientationInput): CaptureRotationDegrees;
|
|
48
68
|
export declare function buildCaptureNormalizationPlan(input: CaptureNormalizationPlanInput): CaptureNormalizationPlan;
|
|
49
69
|
export declare function getDocumentCaptureFrameAspectRatio(documentType: string | null | undefined, mode: CaptureFrameMode): number | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture-normalization.d.ts","sourceRoot":"","sources":["../../src/capture-normalization.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,SAAS,CAAC;AAC3D,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"capture-normalization.d.ts","sourceRoot":"","sources":["../../src/capture-normalization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,55 @@
|
|
|
1
1
|
import { getDocumentReviewProfile } from './document-classifier.js';
|
|
2
2
|
const CARD_CAPTURE_FRAME_ASPECT_RATIO = 1.585;
|
|
3
3
|
const ADDRESS_DOCUMENT_CAPTURE_FRAME_ASPECT_RATIO = 0.72;
|
|
4
|
+
const CAPTURE_NORMALIZATION_MIN_AREA_RATIO = 0.04;
|
|
5
|
+
const CAPTURE_NORMALIZATION_MAX_AREA_RATIO = 0.92;
|
|
6
|
+
const CAPTURE_NORMALIZATION_NEAR_FULL_FRAME_AREA_RATIO = 0.9;
|
|
7
|
+
const CAPTURE_NORMALIZATION_MIN_ASPECT_RATIO = 0.35;
|
|
8
|
+
const CAPTURE_NORMALIZATION_MAX_ASPECT_RATIO = 2.4;
|
|
4
9
|
function clamp(value, min, max) {
|
|
5
10
|
return Math.min(max, Math.max(min, value));
|
|
6
11
|
}
|
|
7
12
|
function hasPositiveSize(size) {
|
|
8
13
|
return size.width > 0 && size.height > 0;
|
|
9
14
|
}
|
|
15
|
+
const NO_CLAMPED_EDGES = {
|
|
16
|
+
left: false,
|
|
17
|
+
top: false,
|
|
18
|
+
right: false,
|
|
19
|
+
bottom: false,
|
|
20
|
+
};
|
|
21
|
+
function getCropDiagnostics(crop, imageSize, paddingRatio, clampedEdges = NO_CLAMPED_EDGES) {
|
|
22
|
+
const sourceArea = Math.max(1, imageSize.width * imageSize.height);
|
|
23
|
+
const cropArea = crop.width * crop.height;
|
|
24
|
+
const areaRatio = cropArea / sourceArea;
|
|
25
|
+
const aspectRatio = crop.height > 0 ? crop.width / crop.height : 0;
|
|
26
|
+
const clamped = clampedEdges.left || clampedEdges.top || clampedEdges.right || clampedEdges.bottom;
|
|
27
|
+
let unsafeReason = null;
|
|
28
|
+
if (clamped) {
|
|
29
|
+
unsafeReason = 'clamped_edge';
|
|
30
|
+
}
|
|
31
|
+
else if (areaRatio < CAPTURE_NORMALIZATION_MIN_AREA_RATIO) {
|
|
32
|
+
unsafeReason = 'too_small';
|
|
33
|
+
}
|
|
34
|
+
else if (areaRatio > CAPTURE_NORMALIZATION_MAX_AREA_RATIO) {
|
|
35
|
+
unsafeReason = 'too_large';
|
|
36
|
+
}
|
|
37
|
+
else if (aspectRatio < CAPTURE_NORMALIZATION_MIN_ASPECT_RATIO ||
|
|
38
|
+
aspectRatio > CAPTURE_NORMALIZATION_MAX_ASPECT_RATIO) {
|
|
39
|
+
unsafeReason = 'bad_aspect';
|
|
40
|
+
}
|
|
41
|
+
else if (areaRatio >= CAPTURE_NORMALIZATION_NEAR_FULL_FRAME_AREA_RATIO) {
|
|
42
|
+
unsafeReason = 'nearly_full_frame';
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
paddingRatio,
|
|
46
|
+
clampedEdges,
|
|
47
|
+
clamped,
|
|
48
|
+
areaRatio,
|
|
49
|
+
aspectRatio,
|
|
50
|
+
unsafeReason,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
10
53
|
function fullImageCrop(imageSize) {
|
|
11
54
|
return {
|
|
12
55
|
x: 0,
|
|
@@ -15,9 +58,13 @@ function fullImageCrop(imageSize) {
|
|
|
15
58
|
height: Math.max(1, Math.round(imageSize.height)),
|
|
16
59
|
};
|
|
17
60
|
}
|
|
18
|
-
export function
|
|
61
|
+
export function mapPreviewRectToImageCropWithDiagnostics({ imageSize, previewSize, previewRect, resizeMode = 'cover', paddingRatio = 0.04, }) {
|
|
19
62
|
if (!hasPositiveSize(imageSize) || !hasPositiveSize(previewSize)) {
|
|
20
|
-
|
|
63
|
+
const crop = fullImageCrop(imageSize);
|
|
64
|
+
return {
|
|
65
|
+
crop,
|
|
66
|
+
diagnostics: getCropDiagnostics(crop, imageSize, paddingRatio),
|
|
67
|
+
};
|
|
21
68
|
}
|
|
22
69
|
const imageWidth = imageSize.width;
|
|
23
70
|
const imageHeight = imageSize.height;
|
|
@@ -25,7 +72,11 @@ export function mapPreviewRectToImageCrop({ imageSize, previewSize, previewRect,
|
|
|
25
72
|
? Math.min(previewSize.width / imageWidth, previewSize.height / imageHeight)
|
|
26
73
|
: Math.max(previewSize.width / imageWidth, previewSize.height / imageHeight);
|
|
27
74
|
if (!Number.isFinite(scale) || scale <= 0) {
|
|
28
|
-
|
|
75
|
+
const crop = fullImageCrop(imageSize);
|
|
76
|
+
return {
|
|
77
|
+
crop,
|
|
78
|
+
diagnostics: getCropDiagnostics(crop, imageSize, paddingRatio),
|
|
79
|
+
};
|
|
29
80
|
}
|
|
30
81
|
const renderedWidth = imageWidth * scale;
|
|
31
82
|
const renderedHeight = imageHeight * scale;
|
|
@@ -42,20 +93,39 @@ export function mapPreviewRectToImageCrop({ imageSize, previewSize, previewRect,
|
|
|
42
93
|
const baseWidth = Math.max(1, right - left);
|
|
43
94
|
const baseHeight = Math.max(1, bottom - top);
|
|
44
95
|
const padding = Math.max(0, Math.round(Math.min(baseWidth, baseHeight) * paddingRatio));
|
|
45
|
-
left
|
|
46
|
-
top
|
|
47
|
-
right
|
|
48
|
-
bottom
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
96
|
+
const paddedLeft = left - padding;
|
|
97
|
+
const paddedTop = top - padding;
|
|
98
|
+
const paddedRight = right + padding;
|
|
99
|
+
const paddedBottom = bottom + padding;
|
|
100
|
+
const roundedImageWidth = Math.round(imageWidth);
|
|
101
|
+
const roundedImageHeight = Math.round(imageHeight);
|
|
102
|
+
left = paddedLeft;
|
|
103
|
+
top = paddedTop;
|
|
104
|
+
right = paddedRight;
|
|
105
|
+
bottom = paddedBottom;
|
|
106
|
+
const clampedEdges = {
|
|
107
|
+
left: paddedLeft < 0,
|
|
108
|
+
top: paddedTop < 0,
|
|
109
|
+
right: paddedRight > roundedImageWidth,
|
|
110
|
+
bottom: paddedBottom > roundedImageHeight,
|
|
111
|
+
};
|
|
112
|
+
left = clamp(left, 0, Math.max(0, roundedImageWidth - 1));
|
|
113
|
+
top = clamp(top, 0, Math.max(0, roundedImageHeight - 1));
|
|
114
|
+
right = clamp(right, left + 1, roundedImageWidth);
|
|
115
|
+
bottom = clamp(bottom, top + 1, roundedImageHeight);
|
|
116
|
+
const crop = {
|
|
54
117
|
x: left,
|
|
55
118
|
y: top,
|
|
56
119
|
width: right - left,
|
|
57
120
|
height: bottom - top,
|
|
58
121
|
};
|
|
122
|
+
return {
|
|
123
|
+
crop,
|
|
124
|
+
diagnostics: getCropDiagnostics(crop, imageSize, paddingRatio, clampedEdges),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
export function mapPreviewRectToImageCrop(input) {
|
|
128
|
+
return mapPreviewRectToImageCropWithDiagnostics(input).crop;
|
|
59
129
|
}
|
|
60
130
|
export function getRotationToExpectedOrientation({ width, height, documentType, }) {
|
|
61
131
|
const expectedOrientation = getDocumentReviewProfile(documentType).expectedOrientation;
|
|
@@ -76,7 +146,7 @@ function getResizePlan(size, maxLongEdge) {
|
|
|
76
146
|
return size.width >= size.height ? { width: maxLongEdge } : { height: maxLongEdge };
|
|
77
147
|
}
|
|
78
148
|
export function buildCaptureNormalizationPlan(input) {
|
|
79
|
-
const crop =
|
|
149
|
+
const { crop, diagnostics } = mapPreviewRectToImageCropWithDiagnostics(input);
|
|
80
150
|
const rotate = getRotationToExpectedOrientation({
|
|
81
151
|
width: crop.width,
|
|
82
152
|
height: crop.height,
|
|
@@ -90,6 +160,7 @@ export function buildCaptureNormalizationPlan(input) {
|
|
|
90
160
|
rotate,
|
|
91
161
|
resize: getResizePlan(outputSize, input.maxLongEdge),
|
|
92
162
|
outputSize,
|
|
163
|
+
diagnostics,
|
|
93
164
|
};
|
|
94
165
|
}
|
|
95
166
|
export function getDocumentCaptureFrameAspectRatio(documentType, mode) {
|