@mikashboks/capture-intelligence-core 0.2.0 → 0.2.2
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-guidance.d.ts +2 -1
- package/dist/cjs/capture-guidance.d.ts.map +1 -1
- package/dist/cjs/capture-guidance.js +15 -3
- package/dist/cjs/capture-guidance.js.map +1 -1
- package/dist/cjs/capture-trust.d.ts +142 -0
- package/dist/cjs/capture-trust.d.ts.map +1 -0
- package/dist/cjs/capture-trust.js +210 -0
- package/dist/cjs/capture-trust.js.map +1 -0
- package/dist/cjs/index.d.ts +8 -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/metrics.d.ts +30 -0
- package/dist/cjs/metrics.d.ts.map +1 -1
- package/dist/cjs/metrics.js +80 -0
- package/dist/cjs/metrics.js.map +1 -1
- package/dist/cjs/mrz-parser.d.ts +71 -0
- package/dist/cjs/mrz-parser.d.ts.map +1 -0
- package/dist/cjs/mrz-parser.js +160 -0
- package/dist/cjs/mrz-parser.js.map +1 -0
- package/dist/cjs/types.d.ts +18 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +12 -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-guidance.d.ts +2 -1
- package/dist/esm/capture-guidance.d.ts.map +1 -1
- package/dist/esm/capture-guidance.js +14 -2
- package/dist/esm/capture-guidance.js.map +1 -1
- package/dist/esm/capture-trust.d.ts +142 -0
- package/dist/esm/capture-trust.d.ts.map +1 -0
- package/dist/esm/capture-trust.js +207 -0
- package/dist/esm/capture-trust.js.map +1 -0
- package/dist/esm/index.d.ts +8 -4
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +5 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/metrics.d.ts +30 -0
- package/dist/esm/metrics.d.ts.map +1 -1
- package/dist/esm/metrics.js +79 -1
- package/dist/esm/metrics.js.map +1 -1
- package/dist/esm/mrz-parser.d.ts +71 -0
- package/dist/esm/mrz-parser.d.ts.map +1 -0
- package/dist/esm/mrz-parser.js +156 -0
- package/dist/esm/mrz-parser.js.map +1 -0
- package/dist/esm/types.d.ts +18 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +11 -0
- 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
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAyBH,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,8BAA8B,EAC9B,qCAAqC,EACrC,yBAAyB,EACzB,sCAAsC,EACtC,6BAA6B,EAC7B,mCAAmC,EACnC,sCAAsC,EACtC,uCAAuC,EACvC,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAC;AAUpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,6BAA6B,EAC7B,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EACzB,qCAAqC,EACrC,kCAAkC,EAClC,gCAAgC,EAChC,oCAAoC,EACpC,8BAA8B,EAC9B,6BAA6B,EAC7B,4CAA4C,EAC5C,uCAAuC,GACxC,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE7E,+EAA+E;AAC/E,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAmB5D,OAAO,EACL,wCAAwC,EACxC,yBAAyB,EACzB,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/metrics.d.ts
CHANGED
|
@@ -29,6 +29,36 @@ export declare function rgbaToGreyInPlace(rgba: Uint8ClampedArray | Uint8Array,
|
|
|
29
29
|
* @param region - Overlay region in fractional coordinates
|
|
30
30
|
*/
|
|
31
31
|
export declare function computeBrightness(grey: Uint8Array, w: number, h: number, region: OverlayRegion): number;
|
|
32
|
+
export interface SceneLightProfile {
|
|
33
|
+
/**
|
|
34
|
+
* Mean luma of the pixels OUTSIDE the document region. `undefined` when the
|
|
35
|
+
* raster contains no outside pixels (region covers the whole raster).
|
|
36
|
+
*/
|
|
37
|
+
surroundLuma?: number;
|
|
38
|
+
/** p95 − p5 luma spread INSIDE the region (contrast available to detectors). */
|
|
39
|
+
regionDynamicRange: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Region-mean brightness alone is structurally blind at night: a dim-but-
|
|
43
|
+
* readable card meters well above the dark floor while the surround sits near
|
|
44
|
+
* black (prod 2026-06-10 22:52: card region ~46-49 vs CAM_BRIGHTNESS_MIN 28,
|
|
45
|
+
* surround ~12) — so too_dark never fired and the system misblamed geometry
|
|
46
|
+
* for the whole session. The dual signal below (dark surround AND compressed
|
|
47
|
+
* in-region dynamic range) identifies a dark SCENE without false-flagging a
|
|
48
|
+
* well-lit card on a dark desk, whose region dynamic range stays wide.
|
|
49
|
+
*/
|
|
50
|
+
export declare function computeSceneLightProfile(grey: Uint8Array, w: number, h: number, region: OverlayRegion): SceneLightProfile;
|
|
51
|
+
/**
|
|
52
|
+
* True when the SCENE (not just the document region) is too dark for the
|
|
53
|
+
* detectors to work: near-black surround AND compressed contrast inside the
|
|
54
|
+
* region. Either signal alone is innocent — a dark desk in daylight keeps a
|
|
55
|
+
* wide region range; a washed-out region in bright light keeps a lit
|
|
56
|
+
* surround.
|
|
57
|
+
*/
|
|
58
|
+
export declare function isSceneDark(profile: {
|
|
59
|
+
surroundLuma?: number;
|
|
60
|
+
regionDynamicRange?: number;
|
|
61
|
+
}): boolean;
|
|
32
62
|
/**
|
|
33
63
|
* Compute Laplacian variance for sharpness detection.
|
|
34
64
|
* Higher values indicate sharper images.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAe9E;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,iBAAiB,GAAG,UAAU,EACpC,GAAG,EAAE,UAAU,EACf,UAAU,EAAE,MAAM,GACjB,IAAI,CAKN;AAID;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,MAAM,CAcR;AAID,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,iBAAiB,CAoDnB;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAOV;AAID;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAgB9F;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,SAAS,EAAE,YAAY,CAAC;IACxB,kEAAkE;IAClE,SAAS,EAAE,YAAY,CAAC;IACxB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,GACpB,kBAAkB,CAiDpB;AAID;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CA0D3E;AAID;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,GAAG,IAAI,GAAG,MAAM,CAOzF;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,UAAU,GAAG,IAAI,GAC9B,YAAY,CAsCd;AAID;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CA0CzF"}
|
package/dist/esm/metrics.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* blur (Laplacian variance), edge energy, frame-to-frame stability, and
|
|
10
10
|
* document rectangle detection.
|
|
11
11
|
*/
|
|
12
|
-
import { CAPTURE_DOCUMENT_AREA_MIN, CAM_EDGE_PIXEL_THRESHOLD, CAM_EDGE_COVERAGE_THRESHOLD, } from './types.js';
|
|
12
|
+
import { CAPTURE_DOCUMENT_AREA_MIN, CAM_EDGE_PIXEL_THRESHOLD, CAM_EDGE_COVERAGE_THRESHOLD, SCENE_DARK_SURROUND_LUMA_MAX, SCENE_DARK_REGION_DYNAMIC_RANGE_MAX, } from './types.js';
|
|
13
13
|
import { CAPTURE_READY_AREA_MAX_BY_SHAPE, CAPTURE_READY_CENTER_MAX_BY_SHAPE, } from './document-placement.js';
|
|
14
14
|
/* -- Greyscale conversion ------------------------------------------------- */
|
|
15
15
|
/**
|
|
@@ -51,6 +51,78 @@ export function computeBrightness(grey, w, h, region) {
|
|
|
51
51
|
}
|
|
52
52
|
return brightCount > 0 ? brightSum / brightCount : 0;
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Region-mean brightness alone is structurally blind at night: a dim-but-
|
|
56
|
+
* readable card meters well above the dark floor while the surround sits near
|
|
57
|
+
* black (prod 2026-06-10 22:52: card region ~46-49 vs CAM_BRIGHTNESS_MIN 28,
|
|
58
|
+
* surround ~12) — so too_dark never fired and the system misblamed geometry
|
|
59
|
+
* for the whole session. The dual signal below (dark surround AND compressed
|
|
60
|
+
* in-region dynamic range) identifies a dark SCENE without false-flagging a
|
|
61
|
+
* well-lit card on a dark desk, whose region dynamic range stays wide.
|
|
62
|
+
*/
|
|
63
|
+
export function computeSceneLightProfile(grey, w, h, region) {
|
|
64
|
+
const bx1 = Math.max(0, Math.round(region.x1 * w));
|
|
65
|
+
const by1 = Math.max(0, Math.round(region.y1 * h));
|
|
66
|
+
const bx2 = Math.min(w, Math.round(region.x2 * w));
|
|
67
|
+
const by2 = Math.min(h, Math.round(region.y2 * h));
|
|
68
|
+
const histogram = new Uint32Array(256);
|
|
69
|
+
let insideCount = 0;
|
|
70
|
+
let outsideSum = 0;
|
|
71
|
+
let outsideCount = 0;
|
|
72
|
+
for (let y = 0; y < h; y++) {
|
|
73
|
+
const rowOffset = y * w;
|
|
74
|
+
const rowInside = y >= by1 && y < by2;
|
|
75
|
+
for (let x = 0; x < w; x++) {
|
|
76
|
+
const value = grey[rowOffset + x];
|
|
77
|
+
if (rowInside && x >= bx1 && x < bx2) {
|
|
78
|
+
histogram[value]++;
|
|
79
|
+
insideCount++;
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
outsideSum += value;
|
|
83
|
+
outsideCount++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
let regionDynamicRange = 0;
|
|
88
|
+
if (insideCount > 0) {
|
|
89
|
+
const p5Target = insideCount * 0.05;
|
|
90
|
+
const p95Target = insideCount * 0.95;
|
|
91
|
+
let cumulative = 0;
|
|
92
|
+
let p5 = 0;
|
|
93
|
+
let p95 = 255;
|
|
94
|
+
let p5Found = false;
|
|
95
|
+
for (let value = 0; value < 256; value++) {
|
|
96
|
+
cumulative += histogram[value];
|
|
97
|
+
if (!p5Found && cumulative >= p5Target) {
|
|
98
|
+
p5 = value;
|
|
99
|
+
p5Found = true;
|
|
100
|
+
}
|
|
101
|
+
if (cumulative >= p95Target) {
|
|
102
|
+
p95 = value;
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
regionDynamicRange = Math.max(0, p95 - p5);
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
...(outsideCount > 0 ? { surroundLuma: outsideSum / outsideCount } : {}),
|
|
110
|
+
regionDynamicRange,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* True when the SCENE (not just the document region) is too dark for the
|
|
115
|
+
* detectors to work: near-black surround AND compressed contrast inside the
|
|
116
|
+
* region. Either signal alone is innocent — a dark desk in daylight keeps a
|
|
117
|
+
* wide region range; a washed-out region in bright light keeps a lit
|
|
118
|
+
* surround.
|
|
119
|
+
*/
|
|
120
|
+
export function isSceneDark(profile) {
|
|
121
|
+
return (typeof profile.surroundLuma === 'number' &&
|
|
122
|
+
profile.surroundLuma < SCENE_DARK_SURROUND_LUMA_MAX &&
|
|
123
|
+
typeof profile.regionDynamicRange === 'number' &&
|
|
124
|
+
profile.regionDynamicRange < SCENE_DARK_REGION_DYNAMIC_RANGE_MAX);
|
|
125
|
+
}
|
|
54
126
|
/* -- Blur (Laplacian variance) -------------------------------------------- */
|
|
55
127
|
/**
|
|
56
128
|
* Compute Laplacian variance for sharpness detection.
|
|
@@ -253,8 +325,14 @@ export function analyzeFrame(grey, w, h, region, prevGreyData) {
|
|
|
253
325
|
const docRect = detectDocumentRect(edgeResult.rowEnergy, edgeResult.colEnergy, edgeResult.regionW, edgeResult.regionH);
|
|
254
326
|
// 5. Frame-to-frame difference (stability)
|
|
255
327
|
const frameDiff = computeFrameDiff(grey, prevGreyData);
|
|
328
|
+
// 6. Scene light profile (low-light dual signal)
|
|
329
|
+
const sceneLight = computeSceneLightProfile(grey, w, h, region);
|
|
256
330
|
return {
|
|
257
331
|
brightness,
|
|
332
|
+
...(typeof sceneLight.surroundLuma === 'number'
|
|
333
|
+
? { surroundLuma: sceneLight.surroundLuma }
|
|
334
|
+
: {}),
|
|
335
|
+
regionDynamicRange: sceneLight.regionDynamicRange,
|
|
258
336
|
blurScore,
|
|
259
337
|
edgeEnergy: edgeResult.avgEdge,
|
|
260
338
|
frameDiff,
|
package/dist/esm/metrics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict ICAO 9303 MRZ parser for TD3 (passport, 2 x 44) and TD1 (ID card,
|
|
3
|
+
* 3 x 30) machine-readable zones.
|
|
4
|
+
*
|
|
5
|
+
* Unlike the tolerant `mrz-check-digits.ts` validator (which trims oversized
|
|
6
|
+
* OCR lines, autocorrects digit confusions, and supports TD2), this parser is
|
|
7
|
+
* format-exact: lines are only trimmed/uppercased, anything that is not an
|
|
8
|
+
* exact TD3/TD1 shape is rejected with a reason, and no OCR fuzzing is
|
|
9
|
+
* applied. Downstream capture gates use it as an unambiguous content signal.
|
|
10
|
+
*
|
|
11
|
+
* DOM-free and dependency-free; safe for web, native, and server consumers.
|
|
12
|
+
*/
|
|
13
|
+
export type MrzFormat = 'td3' | 'td1';
|
|
14
|
+
export type MrzRejectionReason = 'wrong_line_count' | 'wrong_line_length' | 'invalid_characters';
|
|
15
|
+
export interface MrzFields {
|
|
16
|
+
documentCode: string;
|
|
17
|
+
issuingState: string;
|
|
18
|
+
surname: string;
|
|
19
|
+
givenNames: string;
|
|
20
|
+
documentNumber: string;
|
|
21
|
+
nationality: string;
|
|
22
|
+
/** Raw YYMMDD as printed in the MRZ. */
|
|
23
|
+
dateOfBirth: string;
|
|
24
|
+
/** Raw MRZ sex character: 'M', 'F', 'X', or '<'. */
|
|
25
|
+
sex: string;
|
|
26
|
+
/** Raw YYMMDD as printed in the MRZ. */
|
|
27
|
+
dateOfExpiry: string;
|
|
28
|
+
/** TD3 personal number / TD1 optional data 1, when non-filler. */
|
|
29
|
+
personalNumber?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface MrzCheckDigits {
|
|
32
|
+
documentNumber: boolean;
|
|
33
|
+
dateOfBirth: boolean;
|
|
34
|
+
dateOfExpiry: boolean;
|
|
35
|
+
/** Only present when the TD3 personal-number field is non-filler. */
|
|
36
|
+
personalNumber?: boolean;
|
|
37
|
+
composite: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface MrzParseAccepted {
|
|
40
|
+
format: MrzFormat;
|
|
41
|
+
/** True only when every applicable check digit passes. */
|
|
42
|
+
valid: boolean;
|
|
43
|
+
reason?: undefined;
|
|
44
|
+
fields: MrzFields;
|
|
45
|
+
checkDigits: MrzCheckDigits;
|
|
46
|
+
allCheckDigitsValid: boolean;
|
|
47
|
+
/** Weighted fraction of passing check digits in [0, 1]; composite counts double. */
|
|
48
|
+
confidence: number;
|
|
49
|
+
}
|
|
50
|
+
export interface MrzParseRejected {
|
|
51
|
+
format: null;
|
|
52
|
+
valid: false;
|
|
53
|
+
reason: MrzRejectionReason;
|
|
54
|
+
fields: null;
|
|
55
|
+
checkDigits: null;
|
|
56
|
+
allCheckDigitsValid: false;
|
|
57
|
+
confidence: 0;
|
|
58
|
+
}
|
|
59
|
+
export type MrzParseResult = MrzParseAccepted | MrzParseRejected;
|
|
60
|
+
export declare const MRZ_TD3_LINE_LENGTH = 44;
|
|
61
|
+
export declare const MRZ_TD1_LINE_LENGTH = 30;
|
|
62
|
+
/**
|
|
63
|
+
* Parse candidate OCR lines as a strict ICAO 9303 TD3 or TD1 MRZ.
|
|
64
|
+
*
|
|
65
|
+
* Lines are trimmed, uppercased, and blank lines dropped; beyond that the
|
|
66
|
+
* shape must be exact (2 x 44 chars for TD3, 3 x 30 chars for TD1, alphabet
|
|
67
|
+
* `A-Z0-9<`). Anything else is rejected with a `reason` instead of being
|
|
68
|
+
* fuzzed into shape.
|
|
69
|
+
*/
|
|
70
|
+
export declare function parseMrzLines(candidateLines: readonly string[]): MrzParseResult;
|
|
71
|
+
//# sourceMappingURL=mrz-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mrz-parser.d.ts","sourceRoot":"","sources":["../../src/mrz-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAEtC,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;AAEjG,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,SAAS,CAAC;IAClB,0DAA0D;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC;IAClB,WAAW,EAAE,cAAc,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,WAAW,EAAE,IAAI,CAAC;IAClB,mBAAmB,EAAE,KAAK,CAAC;IAC3B,UAAU,EAAE,CAAC,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAEjE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,eAAO,MAAM,mBAAmB,KAAK,CAAC;AAmJtC;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,cAAc,CAc/E"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strict ICAO 9303 MRZ parser for TD3 (passport, 2 x 44) and TD1 (ID card,
|
|
3
|
+
* 3 x 30) machine-readable zones.
|
|
4
|
+
*
|
|
5
|
+
* Unlike the tolerant `mrz-check-digits.ts` validator (which trims oversized
|
|
6
|
+
* OCR lines, autocorrects digit confusions, and supports TD2), this parser is
|
|
7
|
+
* format-exact: lines are only trimmed/uppercased, anything that is not an
|
|
8
|
+
* exact TD3/TD1 shape is rejected with a reason, and no OCR fuzzing is
|
|
9
|
+
* applied. Downstream capture gates use it as an unambiguous content signal.
|
|
10
|
+
*
|
|
11
|
+
* DOM-free and dependency-free; safe for web, native, and server consumers.
|
|
12
|
+
*/
|
|
13
|
+
import { computeMrzCheckDigit } from './mrz-check-digits.js';
|
|
14
|
+
export const MRZ_TD3_LINE_LENGTH = 44;
|
|
15
|
+
export const MRZ_TD1_LINE_LENGTH = 30;
|
|
16
|
+
const MRZ_LINE_CHARS = /^[A-Z0-9<]+$/;
|
|
17
|
+
const MRZ_COMPOSITE_CONFIDENCE_WEIGHT = 2;
|
|
18
|
+
function reject(reason) {
|
|
19
|
+
return {
|
|
20
|
+
format: null,
|
|
21
|
+
valid: false,
|
|
22
|
+
reason,
|
|
23
|
+
fields: null,
|
|
24
|
+
checkDigits: null,
|
|
25
|
+
allCheckDigitsValid: false,
|
|
26
|
+
confidence: 0,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function stripTrailingFillers(value) {
|
|
30
|
+
return value.replace(/<+$/, '');
|
|
31
|
+
}
|
|
32
|
+
function decodeNameComponent(value) {
|
|
33
|
+
return value.replace(/</g, ' ').replace(/ +/g, ' ').trim();
|
|
34
|
+
}
|
|
35
|
+
function parseNameField(value) {
|
|
36
|
+
const separatorIndex = value.indexOf('<<');
|
|
37
|
+
if (separatorIndex === -1) {
|
|
38
|
+
return { surname: decodeNameComponent(value), givenNames: '' };
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
surname: decodeNameComponent(value.slice(0, separatorIndex)),
|
|
42
|
+
givenNames: decodeNameComponent(value.slice(separatorIndex + 2)),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function isAllCheckDigitsValid(checkDigits) {
|
|
46
|
+
return (checkDigits.documentNumber &&
|
|
47
|
+
checkDigits.dateOfBirth &&
|
|
48
|
+
checkDigits.dateOfExpiry &&
|
|
49
|
+
checkDigits.composite &&
|
|
50
|
+
checkDigits.personalNumber !== false);
|
|
51
|
+
}
|
|
52
|
+
function computeConfidence(checkDigits) {
|
|
53
|
+
const weighted = [
|
|
54
|
+
[checkDigits.documentNumber, 1],
|
|
55
|
+
[checkDigits.dateOfBirth, 1],
|
|
56
|
+
[checkDigits.dateOfExpiry, 1],
|
|
57
|
+
[checkDigits.personalNumber, 1],
|
|
58
|
+
[checkDigits.composite, MRZ_COMPOSITE_CONFIDENCE_WEIGHT],
|
|
59
|
+
];
|
|
60
|
+
let total = 0;
|
|
61
|
+
let passed = 0;
|
|
62
|
+
for (const [result, weight] of weighted) {
|
|
63
|
+
if (result === undefined)
|
|
64
|
+
continue;
|
|
65
|
+
total += weight;
|
|
66
|
+
if (result)
|
|
67
|
+
passed += weight;
|
|
68
|
+
}
|
|
69
|
+
return total === 0 ? 0 : passed / total;
|
|
70
|
+
}
|
|
71
|
+
function accept(format, fields, checkDigits) {
|
|
72
|
+
const allCheckDigitsValid = isAllCheckDigitsValid(checkDigits);
|
|
73
|
+
return {
|
|
74
|
+
format,
|
|
75
|
+
valid: allCheckDigitsValid,
|
|
76
|
+
fields,
|
|
77
|
+
checkDigits,
|
|
78
|
+
allCheckDigitsValid,
|
|
79
|
+
confidence: computeConfidence(checkDigits),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function parseTd3(line1, line2) {
|
|
83
|
+
const rawPersonalNumber = line2.slice(28, 42);
|
|
84
|
+
const personalNumber = stripTrailingFillers(rawPersonalNumber);
|
|
85
|
+
const checkDigits = {
|
|
86
|
+
documentNumber: computeMrzCheckDigit(line2.slice(0, 9)) === line2[9],
|
|
87
|
+
dateOfBirth: computeMrzCheckDigit(line2.slice(13, 19)) === line2[19],
|
|
88
|
+
dateOfExpiry: computeMrzCheckDigit(line2.slice(21, 27)) === line2[27],
|
|
89
|
+
composite: computeMrzCheckDigit(`${line2.slice(0, 10)}${line2.slice(13, 20)}${line2.slice(21, 43)}`) ===
|
|
90
|
+
line2[43],
|
|
91
|
+
};
|
|
92
|
+
if (personalNumber !== '') {
|
|
93
|
+
checkDigits.personalNumber = computeMrzCheckDigit(rawPersonalNumber) === line2[42];
|
|
94
|
+
}
|
|
95
|
+
const fields = {
|
|
96
|
+
documentCode: stripTrailingFillers(line1.slice(0, 2)),
|
|
97
|
+
issuingState: stripTrailingFillers(line1.slice(2, 5)),
|
|
98
|
+
...parseNameField(line1.slice(5)),
|
|
99
|
+
documentNumber: stripTrailingFillers(line2.slice(0, 9)),
|
|
100
|
+
nationality: stripTrailingFillers(line2.slice(10, 13)),
|
|
101
|
+
dateOfBirth: line2.slice(13, 19),
|
|
102
|
+
sex: line2.slice(20, 21),
|
|
103
|
+
dateOfExpiry: line2.slice(21, 27),
|
|
104
|
+
};
|
|
105
|
+
if (personalNumber !== '') {
|
|
106
|
+
fields.personalNumber = personalNumber;
|
|
107
|
+
}
|
|
108
|
+
return accept('td3', fields, checkDigits);
|
|
109
|
+
}
|
|
110
|
+
function parseTd1(line1, line2, line3) {
|
|
111
|
+
const optionalData1 = stripTrailingFillers(line1.slice(15, 30));
|
|
112
|
+
const checkDigits = {
|
|
113
|
+
documentNumber: computeMrzCheckDigit(line1.slice(5, 14)) === line1[14],
|
|
114
|
+
dateOfBirth: computeMrzCheckDigit(line2.slice(0, 6)) === line2[6],
|
|
115
|
+
dateOfExpiry: computeMrzCheckDigit(line2.slice(8, 14)) === line2[14],
|
|
116
|
+
composite: computeMrzCheckDigit(`${line1.slice(5, 30)}${line2.slice(0, 7)}${line2.slice(8, 15)}${line2.slice(18, 29)}`) === line2[29],
|
|
117
|
+
};
|
|
118
|
+
const fields = {
|
|
119
|
+
documentCode: stripTrailingFillers(line1.slice(0, 2)),
|
|
120
|
+
issuingState: stripTrailingFillers(line1.slice(2, 5)),
|
|
121
|
+
...parseNameField(line3),
|
|
122
|
+
documentNumber: stripTrailingFillers(line1.slice(5, 14)),
|
|
123
|
+
nationality: stripTrailingFillers(line2.slice(15, 18)),
|
|
124
|
+
dateOfBirth: line2.slice(0, 6),
|
|
125
|
+
sex: line2.slice(7, 8),
|
|
126
|
+
dateOfExpiry: line2.slice(8, 14),
|
|
127
|
+
};
|
|
128
|
+
if (optionalData1 !== '') {
|
|
129
|
+
fields.personalNumber = optionalData1;
|
|
130
|
+
}
|
|
131
|
+
return accept('td1', fields, checkDigits);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Parse candidate OCR lines as a strict ICAO 9303 TD3 or TD1 MRZ.
|
|
135
|
+
*
|
|
136
|
+
* Lines are trimmed, uppercased, and blank lines dropped; beyond that the
|
|
137
|
+
* shape must be exact (2 x 44 chars for TD3, 3 x 30 chars for TD1, alphabet
|
|
138
|
+
* `A-Z0-9<`). Anything else is rejected with a `reason` instead of being
|
|
139
|
+
* fuzzed into shape.
|
|
140
|
+
*/
|
|
141
|
+
export function parseMrzLines(candidateLines) {
|
|
142
|
+
const lines = candidateLines
|
|
143
|
+
.map(line => String(line).trim().toUpperCase())
|
|
144
|
+
.filter(line => line.length > 0);
|
|
145
|
+
if (lines.length !== 2 && lines.length !== 3)
|
|
146
|
+
return reject('wrong_line_count');
|
|
147
|
+
const expectedLength = lines.length === 2 ? MRZ_TD3_LINE_LENGTH : MRZ_TD1_LINE_LENGTH;
|
|
148
|
+
if (lines.some(line => line.length !== expectedLength))
|
|
149
|
+
return reject('wrong_line_length');
|
|
150
|
+
if (lines.some(line => !MRZ_LINE_CHARS.test(line)))
|
|
151
|
+
return reject('invalid_characters');
|
|
152
|
+
return lines.length === 2
|
|
153
|
+
? parseTd3(lines[0], lines[1])
|
|
154
|
+
: parseTd1(lines[0], lines[1], lines[2]);
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=mrz-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mrz-parser.js","sourceRoot":"","sources":["../../src/mrz-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -15,6 +15,13 @@ export declare const CamState: {
|
|
|
15
15
|
export type CamStateValue = (typeof CamState)[keyof typeof CamState];
|
|
16
16
|
export interface FrameMetrics {
|
|
17
17
|
brightness: number;
|
|
18
|
+
/**
|
|
19
|
+
* Mean luma OUTSIDE the document region (scene-dark dual signal; see
|
|
20
|
+
* computeSceneLightProfile). Undefined when no outside pixels exist.
|
|
21
|
+
*/
|
|
22
|
+
surroundLuma?: number;
|
|
23
|
+
/** p95−p5 luma spread INSIDE the region (scene-dark dual signal). */
|
|
24
|
+
regionDynamicRange?: number;
|
|
18
25
|
blurScore: number;
|
|
19
26
|
edgeEnergy: number;
|
|
20
27
|
frameDiff: number;
|
|
@@ -127,6 +134,17 @@ export declare const CAM_FRAME_DIFF_THRESHOLD = 15;
|
|
|
127
134
|
export declare const CAM_EDGE_PIXEL_THRESHOLD = 60;
|
|
128
135
|
export declare const CAM_EDGE_COVERAGE_THRESHOLD = 0.02;
|
|
129
136
|
export declare const CAM_DOC_CENTER_OFFSET_MAX = 0.25;
|
|
137
|
+
/**
|
|
138
|
+
* Scene-dark dual signal (see computeSceneLightProfile/isSceneDark in
|
|
139
|
+
* metrics.ts). CAM_BRIGHTNESS_MIN alone cannot see night sessions: a
|
|
140
|
+
* dim-but-readable card meters ~46-49 over the analysis region while the room
|
|
141
|
+
* sits near black (prod 2026-06-10 22:52, surround ~12). Both thresholds must
|
|
142
|
+
* trip for a scene to count as dark: SURROUND below this luma AND the
|
|
143
|
+
* region's p95−p5 spread below the range threshold. Daylight on a dark desk
|
|
144
|
+
* keeps the range wide (>120); night scenes compress it.
|
|
145
|
+
*/
|
|
146
|
+
export declare const SCENE_DARK_SURROUND_LUMA_MAX = 24;
|
|
147
|
+
export declare const SCENE_DARK_REGION_DYNAMIC_RANGE_MAX = 90;
|
|
130
148
|
export declare const CAPTURE_DOCUMENT_SHARPNESS_MIN = 50;
|
|
131
149
|
export declare const CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = 6;
|
|
132
150
|
export declare const CAPTURE_DOCUMENT_AREA_MIN = 0.1;
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/types.js
CHANGED
|
@@ -25,6 +25,17 @@ export const CAM_FRAME_DIFF_THRESHOLD = 15;
|
|
|
25
25
|
export const CAM_EDGE_PIXEL_THRESHOLD = 60;
|
|
26
26
|
export const CAM_EDGE_COVERAGE_THRESHOLD = 0.02;
|
|
27
27
|
export const CAM_DOC_CENTER_OFFSET_MAX = 0.25;
|
|
28
|
+
/**
|
|
29
|
+
* Scene-dark dual signal (see computeSceneLightProfile/isSceneDark in
|
|
30
|
+
* metrics.ts). CAM_BRIGHTNESS_MIN alone cannot see night sessions: a
|
|
31
|
+
* dim-but-readable card meters ~46-49 over the analysis region while the room
|
|
32
|
+
* sits near black (prod 2026-06-10 22:52, surround ~12). Both thresholds must
|
|
33
|
+
* trip for a scene to count as dark: SURROUND below this luma AND the
|
|
34
|
+
* region's p95−p5 spread below the range threshold. Daylight on a dark desk
|
|
35
|
+
* keeps the range wide (>120); night scenes compress it.
|
|
36
|
+
*/
|
|
37
|
+
export const SCENE_DARK_SURROUND_LUMA_MAX = 24;
|
|
38
|
+
export const SCENE_DARK_REGION_DYNAMIC_RANGE_MAX = 90;
|
|
28
39
|
/* -- Shared mobile capture policy thresholds ------------------------------ */
|
|
29
40
|
export const CAPTURE_DOCUMENT_SHARPNESS_MIN = 50;
|
|
30
41
|
export const CAPTURE_DOCUMENT_MANUAL_FALLBACK_SECS = 6;
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,CAAC;CACC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAE/E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,SAAS,EAAE,CAAC;IACZ,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,CAAC;IACZ,IAAI,EAAE,CAAC;CACC,CAAC;AA6JX,+EAA+E;AAE/E,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACtC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AACrC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AACpC,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,CAAC,kBAAkB;AAC7D,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAC3C,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC;AAC9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,mCAAmC,GAAG,EAAE,CAAC;AAEtD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,EAAE,CAAC;AACjD,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC7C,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAE3D,+EAA+E;AAE/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,sCAAsC,GAAG,CAAC,CAAC;AACxD,MAAM,CAAC,MAAM,uCAAuC,GAAG,CAAC,CAAC;AAEzD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC"}
|
package/dist/esm/version.d.ts
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* version.json). Must match package.json — test-locked in
|
|
4
4
|
* test/capture-guidance.test.mjs. Bump both together.
|
|
5
5
|
*/
|
|
6
|
-
export declare const CAPTURE_INTELLIGENCE_CORE_VERSION = "0.2.
|
|
6
|
+
export declare const CAPTURE_INTELLIGENCE_CORE_VERSION = "0.2.2";
|
|
7
7
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/esm/version.js
CHANGED
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* version.json). Must match package.json — test-locked in
|
|
4
4
|
* test/capture-guidance.test.mjs. Bump both together.
|
|
5
5
|
*/
|
|
6
|
-
export const CAPTURE_INTELLIGENCE_CORE_VERSION = '0.2.
|
|
6
|
+
export const CAPTURE_INTELLIGENCE_CORE_VERSION = '0.2.2';
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mikashboks/capture-intelligence-core",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "DOM-free algorithmic core for capture intelligence: document classification, edge detection, frame metrics, and quality checks",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|