@mikashboks/capture-intelligence-core 0.2.10 → 0.2.12
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-envelope.d.ts +30 -0
- package/dist/cjs/capture-envelope.d.ts.map +1 -1
- package/dist/cjs/capture-envelope.js +3 -0
- package/dist/cjs/capture-envelope.js.map +1 -1
- package/dist/cjs/capture-trust.d.ts +22 -0
- package/dist/cjs/capture-trust.d.ts.map +1 -1
- package/dist/cjs/capture-trust.js +86 -0
- package/dist/cjs/capture-trust.js.map +1 -1
- package/dist/cjs/document-classifier.js +5 -5
- package/dist/cjs/document-classifier.js.map +1 -1
- package/dist/cjs/document-crop-arbitration.d.ts +33 -3
- package/dist/cjs/document-crop-arbitration.d.ts.map +1 -1
- package/dist/cjs/document-crop-arbitration.js +54 -11
- package/dist/cjs/document-crop-arbitration.js.map +1 -1
- package/dist/cjs/glare-mask.d.ts +99 -0
- package/dist/cjs/glare-mask.d.ts.map +1 -0
- package/dist/cjs/glare-mask.js +210 -0
- package/dist/cjs/glare-mask.js.map +1 -0
- package/dist/cjs/index.d.ts +6 -4
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +14 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +6 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/capture-envelope.d.ts +30 -0
- package/dist/esm/capture-envelope.d.ts.map +1 -1
- package/dist/esm/capture-envelope.js +3 -0
- package/dist/esm/capture-envelope.js.map +1 -1
- package/dist/esm/capture-trust.d.ts +22 -0
- package/dist/esm/capture-trust.d.ts.map +1 -1
- package/dist/esm/capture-trust.js +84 -0
- package/dist/esm/capture-trust.js.map +1 -1
- package/dist/esm/document-classifier.js +5 -5
- package/dist/esm/document-classifier.js.map +1 -1
- package/dist/esm/document-crop-arbitration.d.ts +33 -3
- package/dist/esm/document-crop-arbitration.d.ts.map +1 -1
- package/dist/esm/document-crop-arbitration.js +51 -10
- package/dist/esm/document-crop-arbitration.js.map +1 -1
- package/dist/esm/glare-mask.d.ts +99 -0
- package/dist/esm/glare-mask.d.ts.map +1 -0
- package/dist/esm/glare-mask.js +204 -0
- package/dist/esm/glare-mask.js.map +1 -0
- package/dist/esm/index.d.ts +6 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +6 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
|
@@ -38,6 +38,10 @@ export interface DocumentCropArbitrationMetadata {
|
|
|
38
38
|
reason?: string | null;
|
|
39
39
|
method?: 'perspective' | 'rectangle' | 'none' | string | null;
|
|
40
40
|
scannerEngine?: string | null;
|
|
41
|
+
selectedCandidateSource?: 'sobel' | 'kt-jscanify' | string | null;
|
|
42
|
+
candidateCount?: number | null;
|
|
43
|
+
runnerUpScore?: number | null;
|
|
44
|
+
candidateRejectReasons?: string[] | null;
|
|
41
45
|
cropSource?: string | null;
|
|
42
46
|
cropProvenance?: string | null;
|
|
43
47
|
rect?: DocumentCropRect | null;
|
|
@@ -54,6 +58,13 @@ export interface DocumentCropArbitrationMetadata {
|
|
|
54
58
|
cropSelectable?: boolean | null;
|
|
55
59
|
cutOffRisk?: 'low' | 'medium' | 'high' | string | null;
|
|
56
60
|
quietZoneClampLossFraction?: number | null;
|
|
61
|
+
quietZoneClampLossByEdge?: {
|
|
62
|
+
left?: number | null;
|
|
63
|
+
top?: number | null;
|
|
64
|
+
right?: number | null;
|
|
65
|
+
bottom?: number | null;
|
|
66
|
+
} | null;
|
|
67
|
+
quietZoneClampMaxEdge?: 'left' | 'top' | 'right' | 'bottom' | string | null;
|
|
57
68
|
liveRecognitionAccepted?: boolean | null;
|
|
58
69
|
liveRecognitionReason?: string | null;
|
|
59
70
|
liveRecognitionPath?: string | null;
|
|
@@ -68,6 +79,23 @@ export interface DocumentCropArbitrationMetadata {
|
|
|
68
79
|
liveMrzUnexpectedForSide?: boolean | null;
|
|
69
80
|
captureCandidateDecision?: string | null;
|
|
70
81
|
classifierConfidence?: number | null;
|
|
82
|
+
/**
|
|
83
|
+
* Cluster-glare coverage (0..1) of the crop region, computed by the SDK from
|
|
84
|
+
* pixels via computeSaturatedClusterCoverage. Present only when the
|
|
85
|
+
* glare-aware demotion flag is enabled (default OFF, pending crop-lab
|
|
86
|
+
* calibration + device QA). When >= GLARE_DOMINANT_COVERAGE the crop geometry
|
|
87
|
+
* is treated as glare-corrupted and demoted to the original frame.
|
|
88
|
+
*/
|
|
89
|
+
glareCoverageFraction?: number | null;
|
|
90
|
+
/** True only when the glare mask preprocessor changed at least one analysis pixel. */
|
|
91
|
+
glareMaskApplied?: boolean | null;
|
|
92
|
+
/** Fraction (0..1) of the analysis raster changed by the glare mask preprocessor. */
|
|
93
|
+
glareMaskCoverageFraction?: number | null;
|
|
94
|
+
}
|
|
95
|
+
export interface DocumentCropCaptureEvidenceContext {
|
|
96
|
+
documentType?: string | null;
|
|
97
|
+
documentSide?: 'front' | 'back' | null;
|
|
98
|
+
cropShapeFamily?: DocumentCropShapeFamily | null;
|
|
71
99
|
}
|
|
72
100
|
interface DocumentCropSafetyThresholds {
|
|
73
101
|
minAreaRatio: number;
|
|
@@ -99,15 +127,17 @@ export declare const hasCaptureDocumentCutOffEvidence: (metadata: Pick<DocumentC
|
|
|
99
127
|
export declare const hasMarginSafeDocumentCropEvidence: (metadata: DocumentCropArbitrationMetadata) => boolean;
|
|
100
128
|
export declare const hasMarginSafeReliableCaptureQuad: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
101
129
|
export declare const hasUnsafeInsetReliableCaptureQuad: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
130
|
+
export declare const isCardLikeCaptureContext: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
|
|
131
|
+
export declare const isCardFrontCaptureContext: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
|
|
102
132
|
export declare const getCapturePageRecognitionText: (metadata: DocumentCropArbitrationMetadata | null | undefined, extraText?: string | null) => string;
|
|
103
133
|
export declare const hasTrustedMrzCaptureEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined, recognitionText?: string | null) => boolean;
|
|
104
|
-
export declare const hasTrustedCardFrontRecognitionReason: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
134
|
+
export declare const hasTrustedCardFrontRecognitionReason: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
|
|
105
135
|
export declare const hasReadyCaptureCandidateDecision: (metadata: Pick<DocumentCropArbitrationMetadata, "captureCandidateDecision"> | null | undefined) => boolean;
|
|
106
|
-
export declare const hasReadySafeCardLiveEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
136
|
+
export declare const hasReadySafeCardLiveEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
|
|
107
137
|
export declare const hasHardCaptureCutOffEvidence: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
108
138
|
export declare const hasNativeOverfullCaptureRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
109
139
|
export declare const hasNativeClampedCaptureRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
110
|
-
export declare const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined) => boolean;
|
|
140
|
+
export declare const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk: (metadata: DocumentCropArbitrationMetadata | null | undefined, context?: DocumentCropCaptureEvidenceContext) => boolean;
|
|
111
141
|
export declare const isDocumentCropVerified: (metadata: DocumentCropArbitrationMetadata) => boolean;
|
|
112
142
|
export declare const getDocumentCropRejectedReason: (metadata: DocumentCropArbitrationMetadata) => string;
|
|
113
143
|
export declare function assessDocumentCropCandidate(croppedBase64: string, cropMetadata: DocumentCropArbitrationMetadata | undefined): DocumentCropArbitrationAssessment;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-crop-arbitration.d.ts","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"document-crop-arbitration.d.ts","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import { decideCaptureTrust } from './capture-trust.js';
|
|
2
|
+
import { getDocumentProfile } from './document-profiles.js';
|
|
3
|
+
import { isGlareDominantRegion } from './glare-mask.js';
|
|
2
4
|
export const DEFAULT_CROP_CONFIDENCE_THRESHOLD = 0.8;
|
|
3
5
|
export const DEFAULT_RECTANGLE_CROP_CONFIDENCE_THRESHOLD = 0.88;
|
|
4
6
|
export const DEFAULT_SUBMIT_CROP_INSET_FLOOR_ENABLED = true;
|
|
@@ -284,14 +286,35 @@ const normalizeEvidenceKey = (value) => String(value || '')
|
|
|
284
286
|
.toLowerCase()
|
|
285
287
|
.replace(/[\s-]+/g, '_');
|
|
286
288
|
const isBackSideStrategy = (strategy) => normalizeEvidenceKey(strategy).endsWith('_back');
|
|
287
|
-
const
|
|
288
|
-
|
|
289
|
+
const getDocumentTypeCropShapeFamily = (documentType) => {
|
|
290
|
+
const trimmed = String(documentType || '').trim();
|
|
291
|
+
if (!trimmed)
|
|
292
|
+
return null;
|
|
293
|
+
switch (getDocumentProfile(trimmed).family) {
|
|
294
|
+
case 'card':
|
|
295
|
+
return 'card-like';
|
|
296
|
+
case 'passport':
|
|
297
|
+
return 'passport-like';
|
|
298
|
+
case 'page':
|
|
299
|
+
return 'document-page-like';
|
|
300
|
+
default:
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
export const isCardLikeCaptureContext = (metadata, context = {}) => {
|
|
305
|
+
const contextShapeFamily = context.cropShapeFamily ?? getDocumentTypeCropShapeFamily(context.documentType);
|
|
306
|
+
return (contextShapeFamily ?? metadata?.cropShapeFamily) === 'card-like';
|
|
307
|
+
};
|
|
308
|
+
export const isCardFrontCaptureContext = (metadata, context = {}) => {
|
|
309
|
+
if (!isCardLikeCaptureContext(metadata, context))
|
|
310
|
+
return false;
|
|
311
|
+
if (context.documentSide === 'back')
|
|
289
312
|
return false;
|
|
290
313
|
if (isBackSideStrategy(metadata?.liveRecognitionStrategy))
|
|
291
314
|
return false;
|
|
292
315
|
if (metadata?.liveRecognitionStrategy)
|
|
293
316
|
return true;
|
|
294
|
-
return !metadata?.liveRecognitionStrategy;
|
|
317
|
+
return context.documentSide === 'front' || !metadata?.liveRecognitionStrategy;
|
|
295
318
|
};
|
|
296
319
|
export const getCapturePageRecognitionText = (metadata, extraText) => `${metadata?.liveRecognitionReason ?? ''} ${metadata?.liveRecognitionPath ?? ''} ${extraText ?? ''}`
|
|
297
320
|
.trim()
|
|
@@ -316,9 +339,11 @@ export const hasTrustedMrzCaptureEvidence = (metadata, recognitionText) => {
|
|
|
316
339
|
const text = getCapturePageRecognitionText(metadata, recognitionText);
|
|
317
340
|
return metadata.liveRecognitionAccepted === true && text.includes('mrz');
|
|
318
341
|
};
|
|
319
|
-
export const hasTrustedCardFrontRecognitionReason = (metadata) => {
|
|
320
|
-
if (!isCardFrontCaptureContext(metadata))
|
|
342
|
+
export const hasTrustedCardFrontRecognitionReason = (metadata, context = {}) => {
|
|
343
|
+
if (!isCardFrontCaptureContext(metadata, context))
|
|
321
344
|
return true;
|
|
345
|
+
if (!metadata)
|
|
346
|
+
return false;
|
|
322
347
|
const reason = normalizeEvidenceKey(metadata?.liveRecognitionReason);
|
|
323
348
|
if (reason === 'quad' || reason === 'classifier')
|
|
324
349
|
return true;
|
|
@@ -331,16 +356,16 @@ export const hasTrustedCardFrontRecognitionReason = (metadata) => {
|
|
|
331
356
|
export const hasReadyCaptureCandidateDecision = (metadata) => metadata?.captureCandidateDecision === 'review_candidate' ||
|
|
332
357
|
metadata?.captureCandidateDecision === 'manual_ready' ||
|
|
333
358
|
metadata?.captureCandidateDecision === 'auto_ready';
|
|
334
|
-
export const hasReadySafeCardLiveEvidence = (metadata) => {
|
|
359
|
+
export const hasReadySafeCardLiveEvidence = (metadata, context = {}) => {
|
|
335
360
|
if (!metadata)
|
|
336
361
|
return false;
|
|
337
|
-
if (metadata
|
|
362
|
+
if (!isCardLikeCaptureContext(metadata, context))
|
|
338
363
|
return false;
|
|
339
364
|
const hasReadyCandidateDecision = hasReadyCaptureCandidateDecision(metadata);
|
|
340
365
|
const hasAcceptedLiveRecognition = metadata.liveRecognitionAccepted === true;
|
|
341
366
|
if (!hasReadyCandidateDecision && !hasAcceptedLiveRecognition)
|
|
342
367
|
return false;
|
|
343
|
-
if (!hasTrustedCardFrontRecognitionReason(metadata))
|
|
368
|
+
if (!hasTrustedCardFrontRecognitionReason(metadata, context))
|
|
344
369
|
return false;
|
|
345
370
|
return hasMarginSafeReliableCaptureQuad(metadata);
|
|
346
371
|
};
|
|
@@ -370,10 +395,10 @@ export const hasNativeOverfullCaptureRisk = (metadata) => Boolean(isNativeViewfi
|
|
|
370
395
|
hasHighAreaNativeViewfinderEvidence(metadata)));
|
|
371
396
|
export const hasNativeClampedCaptureRisk = (metadata) => Boolean(isNativeViewfinderCaptureReason(metadata?.reason) &&
|
|
372
397
|
(metadata?.clamped === true || metadata?.unsafeReason === 'clamped_edge'));
|
|
373
|
-
export const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata) => (hasReadySafeCardLiveEvidence(metadata) &&
|
|
398
|
+
export const canTrustReadySafeCardEvidenceOverNativeUnsafeRisk = (metadata, context = {}) => (hasReadySafeCardLiveEvidence(metadata, context) &&
|
|
374
399
|
!hasHardCaptureCutOffEvidence(metadata) &&
|
|
375
400
|
hasNativeOverfullCaptureRisk(metadata)) ||
|
|
376
|
-
(hasReadySafeCardLiveEvidence(metadata) &&
|
|
401
|
+
(hasReadySafeCardLiveEvidence(metadata, context) &&
|
|
377
402
|
hasNativeClampedCaptureRisk(metadata) &&
|
|
378
403
|
!hasUnsafeInsetReliableCaptureQuad(metadata));
|
|
379
404
|
const hasReadySafeCardCropEvidence = (metadata) => !hasCaptureDocumentCutOffEvidence(metadata) &&
|
|
@@ -483,6 +508,22 @@ export function assessDocumentCropCandidate(croppedBase64, cropMetadata) {
|
|
|
483
508
|
cropSelectable: false,
|
|
484
509
|
});
|
|
485
510
|
}
|
|
511
|
+
if (isGlareDominantRegion(cropMetadata.glareCoverageFraction)) {
|
|
512
|
+
// Specular glare dominates the crop region: the detected geometry is not
|
|
513
|
+
// trustworthy (the contour may have locked onto the glare blob). Fail safe
|
|
514
|
+
// to the original frame rather than ship a glare-corrupted crop. This is a
|
|
515
|
+
// demotion, not a hard block — the user still submits the original.
|
|
516
|
+
return buildCropArbitrationAssessment({
|
|
517
|
+
decision: 'original_with_overlay',
|
|
518
|
+
policy: 'original_only',
|
|
519
|
+
score: Math.max(0, Math.round((cropMetadata.confidence ?? 0) * 45)),
|
|
520
|
+
reason: 'glare_dominant',
|
|
521
|
+
reviewSafe: true,
|
|
522
|
+
defaultSafe: false,
|
|
523
|
+
cropVerified: false,
|
|
524
|
+
cropSelectable: false,
|
|
525
|
+
});
|
|
526
|
+
}
|
|
486
527
|
if (hasUnsafeLiveQuadCropEvidence(cropMetadata)) {
|
|
487
528
|
return buildCropArbitrationAssessment({
|
|
488
529
|
decision: 'unsafe_crop',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document-crop-arbitration.js","sourceRoot":"","sources":["../../src/document-crop-arbitration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glare / specular masking for the document crop path.
|
|
3
|
+
*
|
|
4
|
+
* Problem (prod failure class #4, "glare steals the contour"): on reflective
|
|
5
|
+
* laminated Sierra Leone IDs and glossy security overlays a specular highlight
|
|
6
|
+
* forms a high-contrast blob whose edges out-compete the true document edge.
|
|
7
|
+
* The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
|
|
8
|
+
* (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
|
|
9
|
+
* washes out a true edge -> under-segmentation.
|
|
10
|
+
*
|
|
11
|
+
* This module provides two pure, DOM-free primitives over a luma grey buffer:
|
|
12
|
+
*
|
|
13
|
+
* 1. computeSaturatedClusterCoverage() - what fraction of a region is
|
|
14
|
+
* *cluster* glare (a saturated pixel surrounded by saturated pixels - a
|
|
15
|
+
* specular blob, not an isolated bright speck). Used as a fail-safe
|
|
16
|
+
* DEMOTION signal: a crop whose region is glare-dominant should not be
|
|
17
|
+
* trusted (fall back to the original frame) - see document-crop-arbitration.
|
|
18
|
+
*
|
|
19
|
+
* 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
|
|
20
|
+
* non-saturated mean BEFORE edge/contour scoring so the blob stops forming
|
|
21
|
+
* a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
|
|
22
|
+
*
|
|
23
|
+
* "cluster" is the same intent as quality-checks.hasReviewStageGlare's
|
|
24
|
+
* saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
|
|
25
|
+
* that was the over-sensitive glare bug). A uniformly bright (non-specular)
|
|
26
|
+
* document is NOT cluster glare because its bright pixels are everywhere, not in
|
|
27
|
+
* a tight blob; the neighbor-ratio test is what separates specular blobs from a
|
|
28
|
+
* generally bright frame, protecting bright/over-exposed but valid documents.
|
|
29
|
+
*
|
|
30
|
+
* NOTE: thresholds here are conservative initial values. They MUST be calibrated
|
|
31
|
+
* against real glare images (crop-lab) and device-QA'd before the SDK is allowed
|
|
32
|
+
* to compute + feed coverage into the live decision. The SDK computation is
|
|
33
|
+
* gated OFF by default for exactly this reason (see runtime-flags
|
|
34
|
+
* isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
|
|
35
|
+
* inert until a caller supplies glareCoverageFraction.
|
|
36
|
+
*/
|
|
37
|
+
/** Luma at/above this is "saturated" (specular white). */
|
|
38
|
+
export declare const GLARE_SATURATION_LUMA = 250;
|
|
39
|
+
/**
|
|
40
|
+
* A saturated pixel is part of a *cluster* (specular blob) only when at least
|
|
41
|
+
* this fraction of its 8-neighborhood is also saturated. Isolated saturated
|
|
42
|
+
* specks (text highlights, single hot pixels) are NOT counted - this is the
|
|
43
|
+
* guard that keeps a generally bright document from reading as glare.
|
|
44
|
+
*/
|
|
45
|
+
export declare const GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
|
|
46
|
+
/**
|
|
47
|
+
* Crop-region cluster-glare coverage at/above this fraction => the crop geometry
|
|
48
|
+
* is considered glare-corrupted and the crop should be DEMOTED to the original
|
|
49
|
+
* frame (fail-safe). Conservative initial value; calibrate via crop-lab.
|
|
50
|
+
*/
|
|
51
|
+
export declare const GLARE_DOMINANT_COVERAGE = 0.18;
|
|
52
|
+
export interface GlareMaskRegion {
|
|
53
|
+
x: number;
|
|
54
|
+
y: number;
|
|
55
|
+
w: number;
|
|
56
|
+
h: number;
|
|
57
|
+
}
|
|
58
|
+
export interface SaturatedClusterCoverage {
|
|
59
|
+
/** Fraction (0..1) of region pixels that are cluster glare. */
|
|
60
|
+
coverageFraction: number;
|
|
61
|
+
/** Fraction (0..1) of region pixels that are raw-saturated (pre-cluster). */
|
|
62
|
+
saturatedFraction: number;
|
|
63
|
+
/** Pixels examined in the region (0 when the region is empty/invalid). */
|
|
64
|
+
sampledPixels: number;
|
|
65
|
+
}
|
|
66
|
+
type GreyBuffer = Uint8Array | Uint8ClampedArray | ReadonlyArray<number>;
|
|
67
|
+
/**
|
|
68
|
+
* Fraction of the region that is cluster glare (specular blob). Pure; safe on
|
|
69
|
+
* any luma buffer. Returns zeros for an empty/invalid region.
|
|
70
|
+
*/
|
|
71
|
+
export declare function computeSaturatedClusterCoverage(grey: GreyBuffer, width: number, height: number, region?: GlareMaskRegion, options?: {
|
|
72
|
+
saturationLuma?: number;
|
|
73
|
+
neighborRatio?: number;
|
|
74
|
+
}): SaturatedClusterCoverage;
|
|
75
|
+
/** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
|
|
76
|
+
export declare function isGlareDominantRegion(coverage: SaturatedClusterCoverage | number | null | undefined, threshold?: number): boolean;
|
|
77
|
+
export interface MaskSaturatedClustersResult {
|
|
78
|
+
/** New buffer with cluster-glare pixels neutralized to a local non-saturated mean. */
|
|
79
|
+
masked: Uint8ClampedArray;
|
|
80
|
+
/** Fraction (0..1) of the buffer that was masked. */
|
|
81
|
+
coverageFraction: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
|
|
85
|
+
* the specular blob stops forming a fake edge for Sobel/Canny. Isolated
|
|
86
|
+
* saturated specks are left intact (only clusters are masked). Pixels are
|
|
87
|
+
* replaced with a local non-saturated mean (window radius `radius`); if a
|
|
88
|
+
* cluster pixel has no non-saturated neighbor in range it is left unchanged
|
|
89
|
+
* (avoids smearing a fully-blown region into a fake flat edge).
|
|
90
|
+
*
|
|
91
|
+
* Returns a COPY - never mutates the input. Pure and DOM-free.
|
|
92
|
+
*/
|
|
93
|
+
export declare function maskSaturatedClusters(grey: GreyBuffer, width: number, height: number, options?: {
|
|
94
|
+
saturationLuma?: number;
|
|
95
|
+
neighborRatio?: number;
|
|
96
|
+
radius?: number;
|
|
97
|
+
}): MaskSaturatedClustersResult;
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=glare-mask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glare-mask.d.ts","sourceRoot":"","sources":["../../src/glare-mask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,gCAAgC,QAAQ,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAS5C,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,wBAAwB;IACvC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,iBAAiB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAkDzE;;;GAGG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,eAAe,EACxB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,wBAAwB,CA0C1B;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EAC9D,SAAS,GAAE,MAAgC,GAC1C,OAAO,CAIT;AAED,MAAM,WAAW,2BAA2B;IAC1C,sFAAsF;IACtF,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,2BAA2B,CA6C7B"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Glare / specular masking for the document crop path.
|
|
3
|
+
*
|
|
4
|
+
* Problem (prod failure class #4, "glare steals the contour"): on reflective
|
|
5
|
+
* laminated Sierra Leone IDs and glossy security overlays a specular highlight
|
|
6
|
+
* forms a high-contrast blob whose edges out-compete the true document edge.
|
|
7
|
+
* The contour/Sobel detectors run on a plain luma grayscale with NO pre-mask, so
|
|
8
|
+
* (a) the detector can lock onto the glare boundary -> wrong crop, or (b) glare
|
|
9
|
+
* washes out a true edge -> under-segmentation.
|
|
10
|
+
*
|
|
11
|
+
* This module provides two pure, DOM-free primitives over a luma grey buffer:
|
|
12
|
+
*
|
|
13
|
+
* 1. computeSaturatedClusterCoverage() - what fraction of a region is
|
|
14
|
+
* *cluster* glare (a saturated pixel surrounded by saturated pixels - a
|
|
15
|
+
* specular blob, not an isolated bright speck). Used as a fail-safe
|
|
16
|
+
* DEMOTION signal: a crop whose region is glare-dominant should not be
|
|
17
|
+
* trusted (fall back to the original frame) - see document-crop-arbitration.
|
|
18
|
+
*
|
|
19
|
+
* 2. maskSaturatedClusters() - neutralize cluster-glare pixels to a local
|
|
20
|
+
* non-saturated mean BEFORE edge/contour scoring so the blob stops forming
|
|
21
|
+
* a fake edge. Used (flag-gated) on the review/redetect crop grey buffer.
|
|
22
|
+
*
|
|
23
|
+
* "cluster" is the same intent as quality-checks.hasReviewStageGlare's
|
|
24
|
+
* saturated-cluster definition (deliberately NOT a single-pixel maxBrightness -
|
|
25
|
+
* that was the over-sensitive glare bug). A uniformly bright (non-specular)
|
|
26
|
+
* document is NOT cluster glare because its bright pixels are everywhere, not in
|
|
27
|
+
* a tight blob; the neighbor-ratio test is what separates specular blobs from a
|
|
28
|
+
* generally bright frame, protecting bright/over-exposed but valid documents.
|
|
29
|
+
*
|
|
30
|
+
* NOTE: thresholds here are conservative initial values. They MUST be calibrated
|
|
31
|
+
* against real glare images (crop-lab) and device-QA'd before the SDK is allowed
|
|
32
|
+
* to compute + feed coverage into the live decision. The SDK computation is
|
|
33
|
+
* gated OFF by default for exactly this reason (see runtime-flags
|
|
34
|
+
* isGlareAwareCropDemotionEnabled); the arbitration logic below is always-on but
|
|
35
|
+
* inert until a caller supplies glareCoverageFraction.
|
|
36
|
+
*/
|
|
37
|
+
/** Luma at/above this is "saturated" (specular white). */
|
|
38
|
+
export const GLARE_SATURATION_LUMA = 250;
|
|
39
|
+
/**
|
|
40
|
+
* A saturated pixel is part of a *cluster* (specular blob) only when at least
|
|
41
|
+
* this fraction of its 8-neighborhood is also saturated. Isolated saturated
|
|
42
|
+
* specks (text highlights, single hot pixels) are NOT counted - this is the
|
|
43
|
+
* guard that keeps a generally bright document from reading as glare.
|
|
44
|
+
*/
|
|
45
|
+
export const GLARE_CLUSTER_MIN_NEIGHBOR_RATIO = 0.625;
|
|
46
|
+
/**
|
|
47
|
+
* Crop-region cluster-glare coverage at/above this fraction => the crop geometry
|
|
48
|
+
* is considered glare-corrupted and the crop should be DEMOTED to the original
|
|
49
|
+
* frame (fail-safe). Conservative initial value; calibrate via crop-lab.
|
|
50
|
+
*/
|
|
51
|
+
export const GLARE_DOMINANT_COVERAGE = 0.18;
|
|
52
|
+
/**
|
|
53
|
+
* If essentially the whole examined region is saturated, treat it as high-key /
|
|
54
|
+
* over-exposed rather than localized specular glare. Keep the raw saturation
|
|
55
|
+
* telemetry, but do not demote or mass-mask the crop on this signal alone.
|
|
56
|
+
*/
|
|
57
|
+
const GLARE_HIGH_KEY_SATURATED_FRACTION = 0.9;
|
|
58
|
+
const clampRegion = (width, height, region) => {
|
|
59
|
+
if (!region)
|
|
60
|
+
return { x: 0, y: 0, w: width, h: height };
|
|
61
|
+
const x = Math.max(0, Math.min(width, Math.floor(region.x)));
|
|
62
|
+
const y = Math.max(0, Math.min(height, Math.floor(region.y)));
|
|
63
|
+
const w = Math.max(0, Math.min(width - x, Math.floor(region.w)));
|
|
64
|
+
const h = Math.max(0, Math.min(height - y, Math.floor(region.h)));
|
|
65
|
+
return { x, y, w, h };
|
|
66
|
+
};
|
|
67
|
+
const isSaturatedAt = (grey, width, height, px, py, saturationLuma) => {
|
|
68
|
+
if (px < 0 || py < 0 || px >= width || py >= height)
|
|
69
|
+
return false;
|
|
70
|
+
return (grey[py * width + px] ?? 0) >= saturationLuma;
|
|
71
|
+
};
|
|
72
|
+
const saturatedNeighborRatio = (grey, width, height, px, py, saturationLuma) => {
|
|
73
|
+
let saturated = 0;
|
|
74
|
+
let counted = 0;
|
|
75
|
+
for (let dy = -1; dy <= 1; dy += 1) {
|
|
76
|
+
for (let dx = -1; dx <= 1; dx += 1) {
|
|
77
|
+
if (dx === 0 && dy === 0)
|
|
78
|
+
continue;
|
|
79
|
+
const nx = px + dx;
|
|
80
|
+
const ny = py + dy;
|
|
81
|
+
if (nx < 0 || ny < 0 || nx >= width || ny >= height)
|
|
82
|
+
continue;
|
|
83
|
+
counted += 1;
|
|
84
|
+
if (isSaturatedAt(grey, width, height, nx, ny, saturationLuma))
|
|
85
|
+
saturated += 1;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return counted === 0 ? 0 : saturated / counted;
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* Fraction of the region that is cluster glare (specular blob). Pure; safe on
|
|
92
|
+
* any luma buffer. Returns zeros for an empty/invalid region.
|
|
93
|
+
*/
|
|
94
|
+
export function computeSaturatedClusterCoverage(grey, width, height, region, options) {
|
|
95
|
+
const empty = {
|
|
96
|
+
coverageFraction: 0,
|
|
97
|
+
saturatedFraction: 0,
|
|
98
|
+
sampledPixels: 0,
|
|
99
|
+
};
|
|
100
|
+
if (!grey || !Number.isFinite(width) || !Number.isFinite(height) || width <= 0 || height <= 0) {
|
|
101
|
+
return empty;
|
|
102
|
+
}
|
|
103
|
+
const saturationLuma = options?.saturationLuma ?? GLARE_SATURATION_LUMA;
|
|
104
|
+
const neighborRatio = options?.neighborRatio ?? GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
|
|
105
|
+
const { x, y, w, h } = clampRegion(width, height, region);
|
|
106
|
+
if (w <= 0 || h <= 0)
|
|
107
|
+
return empty;
|
|
108
|
+
let saturated = 0;
|
|
109
|
+
let cluster = 0;
|
|
110
|
+
let sampled = 0;
|
|
111
|
+
for (let ry = y; ry < y + h; ry += 1) {
|
|
112
|
+
for (let rx = x; rx < x + w; rx += 1) {
|
|
113
|
+
sampled += 1;
|
|
114
|
+
if (!isSaturatedAt(grey, width, height, rx, ry, saturationLuma))
|
|
115
|
+
continue;
|
|
116
|
+
saturated += 1;
|
|
117
|
+
if (saturatedNeighborRatio(grey, width, height, rx, ry, saturationLuma) >= neighborRatio) {
|
|
118
|
+
cluster += 1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (sampled === 0)
|
|
123
|
+
return empty;
|
|
124
|
+
const saturatedFraction = saturated / sampled;
|
|
125
|
+
if (saturatedFraction >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
|
|
126
|
+
return {
|
|
127
|
+
coverageFraction: 0,
|
|
128
|
+
saturatedFraction,
|
|
129
|
+
sampledPixels: sampled,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
coverageFraction: cluster / sampled,
|
|
134
|
+
saturatedFraction,
|
|
135
|
+
sampledPixels: sampled,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/** True when the region's cluster-glare coverage is dominant enough to distrust the crop. */
|
|
139
|
+
export function isGlareDominantRegion(coverage, threshold = GLARE_DOMINANT_COVERAGE) {
|
|
140
|
+
if (coverage == null)
|
|
141
|
+
return false;
|
|
142
|
+
const fraction = typeof coverage === 'number' ? coverage : coverage.coverageFraction;
|
|
143
|
+
return Number.isFinite(fraction) && fraction >= threshold;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Neutralize cluster-glare pixels to the mean of nearby NON-saturated pixels so
|
|
147
|
+
* the specular blob stops forming a fake edge for Sobel/Canny. Isolated
|
|
148
|
+
* saturated specks are left intact (only clusters are masked). Pixels are
|
|
149
|
+
* replaced with a local non-saturated mean (window radius `radius`); if a
|
|
150
|
+
* cluster pixel has no non-saturated neighbor in range it is left unchanged
|
|
151
|
+
* (avoids smearing a fully-blown region into a fake flat edge).
|
|
152
|
+
*
|
|
153
|
+
* Returns a COPY - never mutates the input. Pure and DOM-free.
|
|
154
|
+
*/
|
|
155
|
+
export function maskSaturatedClusters(grey, width, height, options) {
|
|
156
|
+
const saturationLuma = options?.saturationLuma ?? GLARE_SATURATION_LUMA;
|
|
157
|
+
const out = new Uint8ClampedArray(width > 0 && height > 0 ? width * height : 0);
|
|
158
|
+
let saturated = 0;
|
|
159
|
+
for (let i = 0; i < out.length; i += 1) {
|
|
160
|
+
const value = grey[i] ?? 0;
|
|
161
|
+
out[i] = value;
|
|
162
|
+
if (value >= saturationLuma)
|
|
163
|
+
saturated += 1;
|
|
164
|
+
}
|
|
165
|
+
if (out.length === 0)
|
|
166
|
+
return { masked: out, coverageFraction: 0 };
|
|
167
|
+
if (saturated / out.length >= GLARE_HIGH_KEY_SATURATED_FRACTION) {
|
|
168
|
+
return { masked: out, coverageFraction: 0 };
|
|
169
|
+
}
|
|
170
|
+
const neighborRatio = options?.neighborRatio ?? GLARE_CLUSTER_MIN_NEIGHBOR_RATIO;
|
|
171
|
+
const radius = Math.max(1, Math.floor(options?.radius ?? 3));
|
|
172
|
+
let masked = 0;
|
|
173
|
+
for (let py = 0; py < height; py += 1) {
|
|
174
|
+
for (let px = 0; px < width; px += 1) {
|
|
175
|
+
if (!isSaturatedAt(grey, width, height, px, py, saturationLuma))
|
|
176
|
+
continue;
|
|
177
|
+
if (saturatedNeighborRatio(grey, width, height, px, py, saturationLuma) < neighborRatio) {
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
// cluster pixel - replace with local non-saturated mean
|
|
181
|
+
let sum = 0;
|
|
182
|
+
let count = 0;
|
|
183
|
+
for (let dy = -radius; dy <= radius; dy += 1) {
|
|
184
|
+
for (let dx = -radius; dx <= radius; dx += 1) {
|
|
185
|
+
const nx = px + dx;
|
|
186
|
+
const ny = py + dy;
|
|
187
|
+
if (nx < 0 || ny < 0 || nx >= width || ny >= height)
|
|
188
|
+
continue;
|
|
189
|
+
const v = grey[ny * width + nx] ?? 0;
|
|
190
|
+
if (v >= saturationLuma)
|
|
191
|
+
continue;
|
|
192
|
+
sum += v;
|
|
193
|
+
count += 1;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (count > 0) {
|
|
197
|
+
out[py * width + px] = Math.round(sum / count);
|
|
198
|
+
masked += 1;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return { masked: out, coverageFraction: masked / out.length };
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=glare-mask.js.map
|