@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.
Files changed (83) hide show
  1. package/dist/cjs/capture-normalization.d.ts +21 -1
  2. package/dist/cjs/capture-normalization.d.ts.map +1 -1
  3. package/dist/cjs/capture-normalization.js +85 -13
  4. package/dist/cjs/capture-normalization.js.map +1 -1
  5. package/dist/cjs/document-classifier.d.ts.map +1 -1
  6. package/dist/cjs/document-classifier.js +59 -2
  7. package/dist/cjs/document-classifier.js.map +1 -1
  8. package/dist/cjs/document-placement.d.ts +21 -0
  9. package/dist/cjs/document-placement.d.ts.map +1 -0
  10. package/dist/cjs/document-placement.js +66 -0
  11. package/dist/cjs/document-placement.js.map +1 -0
  12. package/dist/cjs/index.d.ts +12 -4
  13. package/dist/cjs/index.d.ts.map +1 -1
  14. package/dist/cjs/index.js +27 -2
  15. package/dist/cjs/index.js.map +1 -1
  16. package/dist/cjs/issuing-country.d.ts +16 -0
  17. package/dist/cjs/issuing-country.d.ts.map +1 -0
  18. package/dist/cjs/issuing-country.js +77 -0
  19. package/dist/cjs/issuing-country.js.map +1 -0
  20. package/dist/cjs/kyc-mobile-contract.d.ts +13 -1
  21. package/dist/cjs/kyc-mobile-contract.d.ts.map +1 -1
  22. package/dist/cjs/kyc-mobile-contract.js +64 -6
  23. package/dist/cjs/kyc-mobile-contract.js.map +1 -1
  24. package/dist/cjs/mrz-band-detector.d.ts +12 -5
  25. package/dist/cjs/mrz-band-detector.d.ts.map +1 -1
  26. package/dist/cjs/mrz-band-detector.js +29 -14
  27. package/dist/cjs/mrz-band-detector.js.map +1 -1
  28. package/dist/cjs/mrz-check-digits.d.ts +74 -0
  29. package/dist/cjs/mrz-check-digits.d.ts.map +1 -0
  30. package/dist/cjs/mrz-check-digits.js +478 -0
  31. package/dist/cjs/mrz-check-digits.js.map +1 -0
  32. package/dist/cjs/mrz-policy.d.ts +18 -0
  33. package/dist/cjs/mrz-policy.d.ts.map +1 -0
  34. package/dist/cjs/mrz-policy.js +90 -0
  35. package/dist/cjs/mrz-policy.js.map +1 -0
  36. package/dist/cjs/quality-checks.d.ts +16 -0
  37. package/dist/cjs/quality-checks.d.ts.map +1 -1
  38. package/dist/cjs/quality-checks.js +72 -17
  39. package/dist/cjs/quality-checks.js.map +1 -1
  40. package/dist/cjs/types.d.ts +2 -2
  41. package/dist/cjs/types.js +2 -2
  42. package/dist/esm/capture-normalization.d.ts +21 -1
  43. package/dist/esm/capture-normalization.d.ts.map +1 -1
  44. package/dist/esm/capture-normalization.js +84 -13
  45. package/dist/esm/capture-normalization.js.map +1 -1
  46. package/dist/esm/document-classifier.d.ts.map +1 -1
  47. package/dist/esm/document-classifier.js +59 -2
  48. package/dist/esm/document-classifier.js.map +1 -1
  49. package/dist/esm/document-placement.d.ts +21 -0
  50. package/dist/esm/document-placement.d.ts.map +1 -0
  51. package/dist/esm/document-placement.js +62 -0
  52. package/dist/esm/document-placement.js.map +1 -0
  53. package/dist/esm/index.d.ts +12 -4
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +7 -3
  56. package/dist/esm/index.js.map +1 -1
  57. package/dist/esm/issuing-country.d.ts +16 -0
  58. package/dist/esm/issuing-country.d.ts.map +1 -0
  59. package/dist/esm/issuing-country.js +71 -0
  60. package/dist/esm/issuing-country.js.map +1 -0
  61. package/dist/esm/kyc-mobile-contract.d.ts +13 -1
  62. package/dist/esm/kyc-mobile-contract.d.ts.map +1 -1
  63. package/dist/esm/kyc-mobile-contract.js +63 -5
  64. package/dist/esm/kyc-mobile-contract.js.map +1 -1
  65. package/dist/esm/mrz-band-detector.d.ts +12 -5
  66. package/dist/esm/mrz-band-detector.d.ts.map +1 -1
  67. package/dist/esm/mrz-band-detector.js +29 -14
  68. package/dist/esm/mrz-band-detector.js.map +1 -1
  69. package/dist/esm/mrz-check-digits.d.ts +74 -0
  70. package/dist/esm/mrz-check-digits.d.ts.map +1 -0
  71. package/dist/esm/mrz-check-digits.js +471 -0
  72. package/dist/esm/mrz-check-digits.js.map +1 -0
  73. package/dist/esm/mrz-policy.d.ts +18 -0
  74. package/dist/esm/mrz-policy.d.ts.map +1 -0
  75. package/dist/esm/mrz-policy.js +87 -0
  76. package/dist/esm/mrz-policy.js.map +1 -0
  77. package/dist/esm/quality-checks.d.ts +16 -0
  78. package/dist/esm/quality-checks.d.ts.map +1 -1
  79. package/dist/esm/quality-checks.js +71 -17
  80. package/dist/esm/quality-checks.js.map +1 -1
  81. package/dist/esm/types.d.ts +2 -2
  82. package/dist/esm/types.js +2 -2
  83. 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":";;AAgGA,4DA2BC;AAvGD,MAAM,eAAe,GAAsB,MAAM,CAAC,MAAM,CAAC;IACvD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,CAAC,KAAK,CAAU;IACzB,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,oBAAoB;CAC7B,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAsB,MAAM,CAAC,MAAM,CAAC;IACxD,QAAQ,EAAE,IAAI;IACd,WAAW,EAAE,UAAU;IACvB,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,CAAU;IAChC,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,WAAW;CACpB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAsB,MAAM,CAAC,MAAM,CAAC;IACrD,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,MAAM;IACnB,OAAO,EAAE,EAAW;IACpB,SAAS,EAAE,IAAI;IACf,MAAM,EAAE,cAAc;CACvB,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,MAAM;IACN,WAAW;IACX,SAAS;IACT,eAAe;IACf,aAAa;IACb,kBAAkB;IAClB,yBAAyB;IACzB,8BAA8B;IAC9B,YAAY;CACb,CAAC,CAAC;AAEH,SAAS,cAAc,CAAC,KAAgC;IACtD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAA6B,EAC7B,YAAoB;IAEpB,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,IAAI,YAAY,KAAK,OAAO,IAAI,YAAY,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IAE7E,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtD,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAChD,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAElD,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,MAAM,CAAC;IAElD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,YAAoB;IAC3C,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;AAChG,CAAC;AAED,SAAS,qBAAqB,CAAC,YAAoB,EAAE,cAAsB;IACzE,OAAO,CACL,cAAc,KAAK,IAAI;QACvB,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC;QAChC,YAAY,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACzC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC/B,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC,YAAY,CAAC,QAAQ,CAAC,cAAc,CAAC;QACrC,YAAY,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAC/C,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CAAC,QAAgC,EAAE;IACzE,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAE5D,IAAI,qBAAqB,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;QACxD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QACvE,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;IAC/C,IAAI,mBAAmB,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/E,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,IAAI,CAAC,YAAY,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC/C,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -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;AA4EpB;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,UAAuB,GAClC,aAAa,GAAG,EAAE,CAQpB;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,MAAM,CAUzF;AAID;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,mBAAmB,CAS/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,EAChB,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAST;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,UAAU,GACtB,OAAO,CAKT;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,mBAAmB,EAC3B,UAAU,GAAE,UAAuB,GAClC,OAAO,CAoBT;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,GAC3B,UAAU,GAAG,SAAS,CA+BxB;AA2BD;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,kEAAkE;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,wDAAwD;IACxD,IAAI,EAAE,UAAU,CAAC;IACjB,mDAAmD;IACnD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,qBAAqB;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,sBAAsB;IACtB,CAAC,EAAE,MAAM,CAAC;IACV,6EAA6E;IAC7E,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gDAAgD;IAChD,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CA0D3F;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAMrF;AAID;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EAAE,EACrB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,MAAM,EAAE,CA2BV;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,YAAY,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAkBT;AAID;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,mBAAmB,EAC3B,cAAc,EAAE,OAAO,GACtB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAmC3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,GAC1B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAa3C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,EAC3B,OAAO,EAAE,qBAAqB,GAC7B;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAoB3C;AAED;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,EAAE,OAAO,GAAG,qBAAqB,EAClD,cAAc,UAAQ,GACrB,MAAM,CA+DR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,UAAU,GACtB,MAAM,CAQR"}
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': return state.document_front;
220
- case 'document_back': return state.document_back;
221
- case 'selfie': return state.selfie;
222
- case 'address_document': return state.address_document;
223
- case 'address_front_door': return state.address_front_door;
224
- default: return 0;
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
- checks['address_document_present'] = docResult.isLikelyDoc;
261
- checks['address_readable'] = sharpnessOk && brightnessOk && docResult.isLikelyDoc;
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 = 'This does not look like an address document. Show the full document and try again.';
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 = 'Can\u2019t read the text. Try again in better light.';
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 = 'Part of the ID is cut off. Show all 4 corners.';
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 = 'Too dark or blurry. Try again in better light.';
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 = 'Text is hard to read. Hold steady and try again.';
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 = 'Glare on the ID. Tilt away from light and try again.';
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 ? 'selfie' : isAddressProof ? 'address-document' : 'document',
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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"}
@@ -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 = 1;
97
- export declare const DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
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 = 1;
37
- exports.DOC_SUBMIT_ANYWAY_FAILURE_THRESHOLD = 2;
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 mapPreviewRectToImageCrop({ imageSize, previewSize, previewRect, resizeMode, paddingRatio, }: PreviewRectToImageCropInput): CaptureCropRect;
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;AAExD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,WAAW,EAAE,kBAAkB,CAAC;IAChC,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,6BAA8B,SAAQ,2BAA2B;IAChF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;IAC/B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,kBAAkB,GAAG,YAAY,GAAG,QAAQ,CAAC;AAsBzF,wBAAgB,yBAAyB,CAAC,EACxC,SAAS,EACT,WAAW,EACX,WAAW,EACX,UAAoB,EACpB,YAAmB,GACpB,EAAE,2BAA2B,GAAG,eAAe,CAmD/C;AAED,wBAAgB,gCAAgC,CAAC,EAC/C,KAAK,EACL,MAAM,EACN,YAAY,GACb,EAAE,wBAAwB,GAAG,sBAAsB,CAYnD;AASD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,6BAA6B,GACnC,wBAAwB,CAkB1B;AAED,wBAAgB,kCAAkC,CAChD,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACvC,IAAI,EAAE,gBAAgB,GACrB,MAAM,GAAG,IAAI,CAiBf"}
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 mapPreviewRectToImageCrop({ imageSize, previewSize, previewRect, resizeMode = 'cover', paddingRatio = 0.04, }) {
61
+ export function mapPreviewRectToImageCropWithDiagnostics({ imageSize, previewSize, previewRect, resizeMode = 'cover', paddingRatio = 0.04, }) {
19
62
  if (!hasPositiveSize(imageSize) || !hasPositiveSize(previewSize)) {
20
- return fullImageCrop(imageSize);
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
- return fullImageCrop(imageSize);
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 -= padding;
46
- top -= padding;
47
- right += padding;
48
- bottom += padding;
49
- left = clamp(left, 0, Math.max(0, Math.round(imageWidth) - 1));
50
- top = clamp(top, 0, Math.max(0, Math.round(imageHeight) - 1));
51
- right = clamp(right, left + 1, Math.round(imageWidth));
52
- bottom = clamp(bottom, top + 1, Math.round(imageHeight));
53
- return {
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 = mapPreviewRectToImageCrop(input);
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) {