@mikashboks/capture-intelligence-core 0.2.5 → 0.2.7
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 +79 -0
- package/dist/cjs/capture-envelope.d.ts.map +1 -0
- package/dist/cjs/capture-envelope.js +48 -0
- package/dist/cjs/capture-envelope.js.map +1 -0
- package/dist/cjs/capture-guidance.js +3 -3
- package/dist/cjs/capture-guidance.js.map +1 -1
- package/dist/cjs/capture-trust.d.ts +1 -1
- package/dist/cjs/capture-trust.d.ts.map +1 -1
- package/dist/cjs/capture-trust.js +13 -11
- package/dist/cjs/capture-trust.js.map +1 -1
- package/dist/cjs/document-crop-arbitration.d.ts +12 -0
- package/dist/cjs/document-crop-arbitration.d.ts.map +1 -1
- package/dist/cjs/document-crop-arbitration.js +31 -18
- package/dist/cjs/document-crop-arbitration.js.map +1 -1
- package/dist/cjs/document-profiles.d.ts +23 -0
- package/dist/cjs/document-profiles.d.ts.map +1 -0
- package/dist/cjs/document-profiles.js +269 -0
- package/dist/cjs/document-profiles.js.map +1 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +26 -3
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/review-quality.d.ts +60 -0
- package/dist/cjs/review-quality.d.ts.map +1 -0
- package/dist/cjs/review-quality.js +203 -0
- package/dist/cjs/review-quality.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/capture-envelope.d.ts +79 -0
- package/dist/esm/capture-envelope.d.ts.map +1 -0
- package/dist/esm/capture-envelope.js +43 -0
- package/dist/esm/capture-envelope.js.map +1 -0
- package/dist/esm/capture-guidance.js +3 -3
- package/dist/esm/capture-guidance.js.map +1 -1
- package/dist/esm/capture-trust.d.ts +1 -1
- package/dist/esm/capture-trust.d.ts.map +1 -1
- package/dist/esm/capture-trust.js +13 -11
- package/dist/esm/capture-trust.js.map +1 -1
- package/dist/esm/document-crop-arbitration.d.ts +12 -0
- package/dist/esm/document-crop-arbitration.d.ts.map +1 -1
- package/dist/esm/document-crop-arbitration.js +14 -12
- package/dist/esm/document-crop-arbitration.js.map +1 -1
- package/dist/esm/document-profiles.d.ts +23 -0
- package/dist/esm/document-profiles.d.ts.map +1 -0
- package/dist/esm/document-profiles.js +265 -0
- package/dist/esm/document-profiles.js.map +1 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/review-quality.d.ts +60 -0
- package/dist/esm/review-quality.d.ts.map +1 -0
- package/dist/esm/review-quality.js +198 -0
- package/dist/esm/review-quality.js.map +1 -0
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const DOCUMENT_REVIEW_REGION_MIN_READABLE_WIDTH_PX = 480;
|
|
2
|
+
export type ReviewReason = 'pass' | 'review_checked' | 'whole_frame_blurry' | 'region_too_small' | 'region_dark' | 'region_blurry' | 'no_crop_clarity_uncertain' | 'untrusted_footprint' | 'wrong_side' | 'far' | 'not_document' | 'corners' | 'glare' | 'uncertain_document' | 'pre_review_retake';
|
|
3
|
+
export interface DocumentRegionBounds {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
}
|
|
9
|
+
export interface DocumentRegionImageSize {
|
|
10
|
+
width: number;
|
|
11
|
+
height: number;
|
|
12
|
+
}
|
|
13
|
+
export interface ReviewDiagnostics {
|
|
14
|
+
wholeFrameLaplacianVariance?: number;
|
|
15
|
+
documentRegionLaplacianVariance?: number;
|
|
16
|
+
detectedCropPresent?: boolean;
|
|
17
|
+
cropProvenance?: string;
|
|
18
|
+
reviewReason?: ReviewReason;
|
|
19
|
+
}
|
|
20
|
+
export interface DocumentReviewQualityInput {
|
|
21
|
+
grey: Float32Array | Uint8Array;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
wholeFrameSharpnessMinimum: number;
|
|
25
|
+
wholeFrameLaplacianVariance?: number;
|
|
26
|
+
wholeFrameSharpnessOk?: boolean;
|
|
27
|
+
initialTextReadableOk?: boolean;
|
|
28
|
+
initialGoodLightingOk?: boolean;
|
|
29
|
+
initialReviewReason?: ReviewReason;
|
|
30
|
+
imageAlreadyCropped?: boolean;
|
|
31
|
+
documentRegion?: DocumentRegionBounds | null;
|
|
32
|
+
documentRegionSourceSize?: DocumentRegionImageSize | null;
|
|
33
|
+
readableRegionWidthPx?: number | null;
|
|
34
|
+
cropProvenance?: string | null;
|
|
35
|
+
detectedCropPresent?: boolean | null;
|
|
36
|
+
}
|
|
37
|
+
export interface DocumentRegionReviewDiagnostics {
|
|
38
|
+
bounds: DocumentRegionBounds;
|
|
39
|
+
readableWidthPx: number;
|
|
40
|
+
sceneDark: boolean;
|
|
41
|
+
surroundLuma?: number;
|
|
42
|
+
regionDynamicRange?: number;
|
|
43
|
+
regionTooSmall: boolean;
|
|
44
|
+
regionBlurry: boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface DocumentReviewQualityResult {
|
|
47
|
+
textReadableOk: boolean;
|
|
48
|
+
goodLightingOk: boolean;
|
|
49
|
+
reviewReason: ReviewReason;
|
|
50
|
+
diagnostics: ReviewDiagnostics;
|
|
51
|
+
region?: DocumentRegionReviewDiagnostics;
|
|
52
|
+
}
|
|
53
|
+
export interface NoCropClarityInput {
|
|
54
|
+
activeBase64Source?: 'original' | 'cropped' | string | null;
|
|
55
|
+
detectedCropPresent?: boolean | null;
|
|
56
|
+
hasDocumentFootprintEvidence?: boolean | null;
|
|
57
|
+
}
|
|
58
|
+
export declare function hasNoCropClarityUncertainty(input: NoCropClarityInput): boolean;
|
|
59
|
+
export declare function evaluateDocumentReviewQuality(input: DocumentReviewQualityInput): DocumentReviewQualityResult;
|
|
60
|
+
//# sourceMappingURL=review-quality.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-quality.d.ts","sourceRoot":"","sources":["../../src/review-quality.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,4CAA4C,MAAM,CAAC;AAEhE,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,gBAAgB,GAChB,oBAAoB,GACpB,kBAAkB,GAClB,aAAa,GACb,eAAe,GACf,2BAA2B,GAC3B,qBAAqB,GACrB,YAAY,GACZ,KAAK,GACL,cAAc,GACd,SAAS,GACT,OAAO,GACP,oBAAoB,GACpB,mBAAmB,CAAC;AAExB,MAAM,WAAW,oBAAoB;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B,EAAE,MAAM,CAAC;IACnC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,mBAAmB,CAAC,EAAE,YAAY,CAAC;IACnC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,wBAAwB,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1D,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,CAAC,EAAE,+BAA+B,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAAC;IAC5D,mBAAmB,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,4BAA4B,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/C;AAmKD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAM9E;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CAkG7B"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { SCENE_DARK_REGION_DYNAMIC_RANGE_MAX, SCENE_DARK_SURROUND_LUMA_MAX } from './types.js';
|
|
2
|
+
import { computeLaplacianVariance, computeLaplacianVarianceFloat } from './metrics.js';
|
|
3
|
+
export const DOCUMENT_REVIEW_REGION_MIN_READABLE_WIDTH_PX = 480;
|
|
4
|
+
function isFinitePositive(value) {
|
|
5
|
+
return typeof value === 'number' && Number.isFinite(value) && value > 0;
|
|
6
|
+
}
|
|
7
|
+
function clamp(value, min, max) {
|
|
8
|
+
return Math.min(max, Math.max(min, value));
|
|
9
|
+
}
|
|
10
|
+
function isUint8Grey(grey) {
|
|
11
|
+
return grey instanceof Uint8Array;
|
|
12
|
+
}
|
|
13
|
+
function getWholeFrameLaplacianVariance(grey, width, height) {
|
|
14
|
+
return isUint8Grey(grey)
|
|
15
|
+
? computeLaplacianVariance(grey, width, height)
|
|
16
|
+
: computeLaplacianVarianceFloat(grey, width, height);
|
|
17
|
+
}
|
|
18
|
+
function toUint8Grey(grey) {
|
|
19
|
+
if (isUint8Grey(grey))
|
|
20
|
+
return grey;
|
|
21
|
+
const converted = new Uint8Array(grey.length);
|
|
22
|
+
for (let i = 0; i < grey.length; i++) {
|
|
23
|
+
converted[i] = clamp(Math.round(grey[i]), 0, 255);
|
|
24
|
+
}
|
|
25
|
+
return converted;
|
|
26
|
+
}
|
|
27
|
+
function scaleBoundsToImage(bounds, sourceSize, targetSize) {
|
|
28
|
+
if (!isFinitePositive(bounds.width) ||
|
|
29
|
+
!isFinitePositive(bounds.height) ||
|
|
30
|
+
!isFinitePositive(targetSize.width) ||
|
|
31
|
+
!isFinitePositive(targetSize.height)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
const sourceWidth = isFinitePositive(sourceSize?.width) ? sourceSize.width : targetSize.width;
|
|
35
|
+
const sourceHeight = isFinitePositive(sourceSize?.height) ? sourceSize.height : targetSize.height;
|
|
36
|
+
const scaleX = targetSize.width / sourceWidth;
|
|
37
|
+
const scaleY = targetSize.height / sourceHeight;
|
|
38
|
+
const x = clamp(bounds.x * scaleX, 0, targetSize.width);
|
|
39
|
+
const y = clamp(bounds.y * scaleY, 0, targetSize.height);
|
|
40
|
+
const width = clamp(bounds.width * scaleX, 0, targetSize.width - x);
|
|
41
|
+
const height = clamp(bounds.height * scaleY, 0, targetSize.height - y);
|
|
42
|
+
if (width <= 1 || height <= 1)
|
|
43
|
+
return null;
|
|
44
|
+
return { x, y, width, height };
|
|
45
|
+
}
|
|
46
|
+
function computeSceneLightProfileFromBounds(grey, width, height, bounds) {
|
|
47
|
+
const x1 = clamp(Math.floor(bounds.x), 0, width);
|
|
48
|
+
const y1 = clamp(Math.floor(bounds.y), 0, height);
|
|
49
|
+
const x2 = clamp(Math.ceil(bounds.x + bounds.width), 0, width);
|
|
50
|
+
const y2 = clamp(Math.ceil(bounds.y + bounds.height), 0, height);
|
|
51
|
+
const histogram = new Uint32Array(256);
|
|
52
|
+
let insideCount = 0;
|
|
53
|
+
let outsideSum = 0;
|
|
54
|
+
let outsideCount = 0;
|
|
55
|
+
for (let y = 0; y < height; y++) {
|
|
56
|
+
const rowOffset = y * width;
|
|
57
|
+
const rowInside = y >= y1 && y < y2;
|
|
58
|
+
for (let x = 0; x < width; x++) {
|
|
59
|
+
const value = grey[rowOffset + x];
|
|
60
|
+
if (rowInside && x >= x1 && x < x2) {
|
|
61
|
+
histogram[value]++;
|
|
62
|
+
insideCount++;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
outsideSum += value;
|
|
66
|
+
outsideCount++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
let regionDynamicRange = 0;
|
|
71
|
+
if (insideCount > 0) {
|
|
72
|
+
const p5Target = insideCount * 0.05;
|
|
73
|
+
const p95Target = insideCount * 0.95;
|
|
74
|
+
let cumulative = 0;
|
|
75
|
+
let p5 = 0;
|
|
76
|
+
let p95 = 255;
|
|
77
|
+
let p5Found = false;
|
|
78
|
+
for (let value = 0; value < 256; value++) {
|
|
79
|
+
cumulative += histogram[value];
|
|
80
|
+
if (!p5Found && cumulative >= p5Target) {
|
|
81
|
+
p5 = value;
|
|
82
|
+
p5Found = true;
|
|
83
|
+
}
|
|
84
|
+
if (cumulative >= p95Target) {
|
|
85
|
+
p95 = value;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
regionDynamicRange = Math.max(0, p95 - p5);
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
...(outsideCount > 0 ? { surroundLuma: outsideSum / outsideCount } : {}),
|
|
93
|
+
regionDynamicRange,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function isSceneDark(profile) {
|
|
97
|
+
return (typeof profile.surroundLuma === 'number' &&
|
|
98
|
+
profile.surroundLuma < SCENE_DARK_SURROUND_LUMA_MAX &&
|
|
99
|
+
typeof profile.regionDynamicRange === 'number' &&
|
|
100
|
+
profile.regionDynamicRange < SCENE_DARK_REGION_DYNAMIC_RANGE_MAX);
|
|
101
|
+
}
|
|
102
|
+
function computeRegionLaplacianVariance(grey, width, height, bounds) {
|
|
103
|
+
const x1 = clamp(Math.floor(bounds.x), 1, Math.max(1, width - 1));
|
|
104
|
+
const y1 = clamp(Math.floor(bounds.y), 1, Math.max(1, height - 1));
|
|
105
|
+
const x2 = clamp(Math.ceil(bounds.x + bounds.width), 1, Math.max(1, width - 1));
|
|
106
|
+
const y2 = clamp(Math.ceil(bounds.y + bounds.height), 1, Math.max(1, height - 1));
|
|
107
|
+
if (x2 <= x1 || y2 <= y1)
|
|
108
|
+
return undefined;
|
|
109
|
+
let lapSum = 0;
|
|
110
|
+
let lapCount = 0;
|
|
111
|
+
for (let y = y1; y < y2; y++) {
|
|
112
|
+
for (let x = x1; x < x2; x++) {
|
|
113
|
+
const lap = -4 * grey[y * width + x] +
|
|
114
|
+
grey[(y - 1) * width + x] +
|
|
115
|
+
grey[(y + 1) * width + x] +
|
|
116
|
+
grey[y * width + x - 1] +
|
|
117
|
+
grey[y * width + x + 1];
|
|
118
|
+
lapSum += lap * lap;
|
|
119
|
+
lapCount++;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return lapCount > 0 ? lapSum / lapCount : undefined;
|
|
123
|
+
}
|
|
124
|
+
export function hasNoCropClarityUncertainty(input) {
|
|
125
|
+
return (input.activeBase64Source !== 'cropped' &&
|
|
126
|
+
input.detectedCropPresent !== true &&
|
|
127
|
+
input.hasDocumentFootprintEvidence !== true);
|
|
128
|
+
}
|
|
129
|
+
export function evaluateDocumentReviewQuality(input) {
|
|
130
|
+
const wholeFrameLaplacianVariance = input.wholeFrameLaplacianVariance ??
|
|
131
|
+
getWholeFrameLaplacianVariance(input.grey, input.width, input.height);
|
|
132
|
+
const wholeFrameSharpnessOk = input.wholeFrameSharpnessOk ??
|
|
133
|
+
wholeFrameLaplacianVariance >= input.wholeFrameSharpnessMinimum;
|
|
134
|
+
let textReadableOk = input.initialTextReadableOk ?? wholeFrameSharpnessOk;
|
|
135
|
+
let goodLightingOk = input.initialGoodLightingOk ?? true;
|
|
136
|
+
let reviewReason = input.initialReviewReason ?? (wholeFrameSharpnessOk ? 'review_checked' : 'whole_frame_blurry');
|
|
137
|
+
let region;
|
|
138
|
+
if (!input.imageAlreadyCropped && input.documentRegion) {
|
|
139
|
+
const analyzedRegion = scaleBoundsToImage(input.documentRegion, input.documentRegionSourceSize, { width: input.width, height: input.height });
|
|
140
|
+
if (analyzedRegion) {
|
|
141
|
+
const readableWidthPx = isFinitePositive(input.readableRegionWidthPx) && input.readableRegionWidthPx > 0
|
|
142
|
+
? input.readableRegionWidthPx
|
|
143
|
+
: input.documentRegion.width;
|
|
144
|
+
const regionTooSmall = readableWidthPx > 0 && readableWidthPx < DOCUMENT_REVIEW_REGION_MIN_READABLE_WIDTH_PX;
|
|
145
|
+
if (regionTooSmall) {
|
|
146
|
+
textReadableOk = false;
|
|
147
|
+
reviewReason = 'region_too_small';
|
|
148
|
+
}
|
|
149
|
+
const sceneLight = computeSceneLightProfileFromBounds(toUint8Grey(input.grey), input.width, input.height, analyzedRegion);
|
|
150
|
+
const sceneDark = isSceneDark(sceneLight);
|
|
151
|
+
if (sceneDark) {
|
|
152
|
+
goodLightingOk = false;
|
|
153
|
+
reviewReason = 'region_dark';
|
|
154
|
+
}
|
|
155
|
+
const documentRegionLaplacianVariance = computeRegionLaplacianVariance(input.grey, input.width, input.height, analyzedRegion);
|
|
156
|
+
const regionBlurry = typeof documentRegionLaplacianVariance === 'number' &&
|
|
157
|
+
documentRegionLaplacianVariance < input.wholeFrameSharpnessMinimum;
|
|
158
|
+
if (regionBlurry) {
|
|
159
|
+
textReadableOk = false;
|
|
160
|
+
reviewReason = 'region_blurry';
|
|
161
|
+
}
|
|
162
|
+
region = {
|
|
163
|
+
bounds: analyzedRegion,
|
|
164
|
+
readableWidthPx,
|
|
165
|
+
sceneDark,
|
|
166
|
+
surroundLuma: sceneLight.surroundLuma,
|
|
167
|
+
regionDynamicRange: sceneLight.regionDynamicRange,
|
|
168
|
+
regionTooSmall,
|
|
169
|
+
regionBlurry,
|
|
170
|
+
};
|
|
171
|
+
return {
|
|
172
|
+
textReadableOk,
|
|
173
|
+
goodLightingOk,
|
|
174
|
+
reviewReason,
|
|
175
|
+
diagnostics: {
|
|
176
|
+
wholeFrameLaplacianVariance,
|
|
177
|
+
documentRegionLaplacianVariance,
|
|
178
|
+
detectedCropPresent: input.detectedCropPresent ?? Boolean(input.documentRegion),
|
|
179
|
+
...(input.cropProvenance ? { cropProvenance: input.cropProvenance } : {}),
|
|
180
|
+
reviewReason,
|
|
181
|
+
},
|
|
182
|
+
region,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
textReadableOk,
|
|
188
|
+
goodLightingOk,
|
|
189
|
+
reviewReason,
|
|
190
|
+
diagnostics: {
|
|
191
|
+
wholeFrameLaplacianVariance,
|
|
192
|
+
detectedCropPresent: input.detectedCropPresent ?? Boolean(input.documentRegion),
|
|
193
|
+
...(input.cropProvenance ? { cropProvenance: input.cropProvenance } : {}),
|
|
194
|
+
reviewReason,
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=review-quality.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-quality.js","sourceRoot":"","sources":["../../src/review-quality.ts"],"names":[],"mappings":"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"}
|
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.7";
|
|
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.7';
|
|
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.7",
|
|
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",
|