@exige/web-scanner-sdk 0.2.22 → 0.2.24

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.
@@ -1,6 +1,6 @@
1
- import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, N as c, O as l, P as u, S as d, T as f, _ as p, a as m, b as h, c as g, d as _, f as v, g as ee, h as te, i as ne, j as re, k as ie, l as ae, m as oe, n as se, o as ce, p as le, r as ue, s as de, t as fe, u as pe, v as me, w as he, x as ge, y as _e } from "./finder-kHZVA7ug.js";
1
+ import { A as e, C as t, D as n, E as r, F as i, I as a, L as o, M as s, N as c, O as l, P as u, R as d, S as f, T as p, _ as m, a as h, b as g, c as _, d as v, f as ee, g as te, h as ne, i as re, j as ie, k as y, l as ae, m as oe, n as se, o as ce, p as le, r as ue, s as de, t as fe, u as pe, v as me, w as he, x as ge, y as _e } from "./finder-B3kHQ2Jh.js";
2
2
  //#region src/sdk/frame-geometry.ts
3
- function y(e, t, n) {
3
+ function b(e, t, n) {
4
4
  let r = Math.max(1, t.width), i = Math.max(1, t.height), a = Math.max(1, n.width), o = Math.max(1, n.height), s = Math.max(r / a, i / o), c = (r - a * s) / 2, l = (i - o * s) / 2;
5
5
  return {
6
6
  x: (e.x - c) / s,
@@ -9,15 +9,15 @@ function y(e, t, n) {
9
9
  }
10
10
  function ve(e, t, n) {
11
11
  return {
12
- topLeft: y(e.topLeft, t, n),
13
- topRight: y(e.topRight, t, n),
14
- bottomRight: y(e.bottomRight, t, n),
15
- bottomLeft: y(e.bottomLeft, t, n)
12
+ topLeft: b(e.topLeft, t, n),
13
+ topRight: b(e.topRight, t, n),
14
+ bottomRight: b(e.bottomRight, t, n),
15
+ bottomLeft: b(e.bottomLeft, t, n)
16
16
  };
17
17
  }
18
18
  //#endregion
19
19
  //#region src/sdk/finder-simulator.ts
20
- function b(e, t = 960, n = 600) {
20
+ function x(e, t = 960, n = 600) {
21
21
  let r = t * .86, i = n * .86;
22
22
  if (e < 1200) {
23
23
  let a = e / 1200;
@@ -50,7 +50,7 @@ function b(e, t = 960, n = 600) {
50
50
  phase: "settled"
51
51
  };
52
52
  }
53
- function x(e, t, n) {
53
+ function S(e, t, n) {
54
54
  let r = Math.cos(n.rotation), i = Math.sin(n.rotation);
55
55
  return {
56
56
  x: n.centerX + e * r - t * i,
@@ -58,7 +58,7 @@ function x(e, t, n) {
58
58
  };
59
59
  }
60
60
  function ye(e) {
61
- let t = x(-e.width / 2, -e.height / 2, e), n = x(e.width / 2, -e.height / 2, e), r = x(e.width / 2, e.height / 2, e), i = x(-e.width / 2, e.height / 2, e);
61
+ let t = S(-e.width / 2, -e.height / 2, e), n = S(e.width / 2, -e.height / 2, e), r = S(e.width / 2, e.height / 2, e), i = S(-e.width / 2, e.height / 2, e);
62
62
  return {
63
63
  topLeft: t,
64
64
  topRight: n,
@@ -84,9 +84,9 @@ function ye(e) {
84
84
  }
85
85
  };
86
86
  }
87
- function S(e, t) {
87
+ function C(e, t) {
88
88
  let n = e.getContext("2d");
89
- if (!n) throw o();
89
+ if (!n) throw d();
90
90
  let r = n.createLinearGradient(0, 0, e.width, e.height);
91
91
  r.addColorStop(0, "#16231c"), r.addColorStop(1, "#32443a"), n.fillStyle = r, n.fillRect(0, 0, e.width, e.height), n.save(), n.translate(t.centerX, t.centerY), n.rotate(t.rotation), n.shadowColor = "rgba(0,0,0,.45)", n.shadowBlur = 24, n.fillStyle = "#fffdf4", n.strokeStyle = "#111914", n.lineWidth = 7, n.fillRect(-t.width / 2, -t.height / 2, t.width, t.height), n.strokeRect(-t.width / 2, -t.height / 2, t.width, t.height), n.shadowColor = "transparent";
92
92
  let i = -t.width / 2, a = -t.height / 2;
@@ -95,9 +95,9 @@ function S(e, t) {
95
95
  function be(e) {
96
96
  e.width ||= 960, e.height ||= 600;
97
97
  let t = !1, n = 0, r = 0, i = (a) => {
98
- t && (n ||= a, S(e, b(a - n, e.width, e.height)), r = requestAnimationFrame(i));
98
+ t && (n ||= a, C(e, x(a - n, e.width, e.height)), r = requestAnimationFrame(i));
99
99
  }, a = () => {
100
- n = 0, S(e, b(0, e.width, e.height));
100
+ n = 0, C(e, x(0, e.width, e.height));
101
101
  };
102
102
  return a(), {
103
103
  start() {
@@ -112,7 +112,7 @@ function be(e) {
112
112
  //#endregion
113
113
  //#region src/sdk/ocr-runtime.ts
114
114
  var xe = new URL("./assets/tesseract/worker.min.js", import.meta.url), Se = new URL("./assets/tesseract/tesseract-core-lstm.wasm.js", import.meta.url), Ce = new URL("./assets/tesseract/tesseract-core-simd-lstm.wasm.js", import.meta.url), we = new URL("./assets/tesseract/tesseract-core-relaxedsimd-lstm.wasm.js", import.meta.url), Te = new URL("./assets/tesseract/eng.traineddata.gz", import.meta.url), Ee = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 15, 1, 13, 0, 65, 1, 253, 15, 65, 2, 253, 15, 253, 128, 2, 11), De = Uint8Array.of(0, 97, 115, 109, 1, 0, 0, 0, 1, 5, 1, 96, 0, 1, 123, 3, 2, 1, 0, 10, 10, 1, 8, 0, 65, 0, 253, 15, 253, 98, 11);
115
- function C(e) {
115
+ function w(e) {
116
116
  try {
117
117
  return typeof WebAssembly < "u" && WebAssembly.validate(e);
118
118
  } catch {
@@ -121,8 +121,8 @@ function C(e) {
121
121
  }
122
122
  function Oe() {
123
123
  return {
124
- relaxedSimd: C(Ee),
125
- simd: C(De)
124
+ relaxedSimd: w(Ee),
125
+ simd: w(De)
126
126
  };
127
127
  }
128
128
  function ke(e) {
@@ -139,7 +139,7 @@ function Ae(e, t) {
139
139
  kind: "bundled-eng",
140
140
  language: "eng"
141
141
  };
142
- throw new a("language", `OCR language "${n}" is not packaged. Pass langPath, a directory URL that contains ${n}.traineddata.gz.`);
142
+ throw new o("language", `OCR language "${n}" is not packaged. Pass langPath, a directory URL that contains ${n}.traineddata.gz.`);
143
143
  }
144
144
  function je(e = Te) {
145
145
  let t = e.href, n = t.lastIndexOf("/");
@@ -150,11 +150,11 @@ function Me(e) {
150
150
  }
151
151
  async function Ne(e, t, n) {
152
152
  return new Promise((r, i) => {
153
- let o = !1, s = (e) => {
154
- if (o) return;
155
- o = !0;
153
+ let a = !1, s = (e) => {
154
+ if (a) return;
155
+ a = !0;
156
156
  let t = e instanceof Error ? e.message : String(e);
157
- i(new a("worker", `OCR worker failed to start (${t}).`));
157
+ i(new o("worker", `OCR worker failed to start (${t}).`));
158
158
  };
159
159
  e(t, void 0, {
160
160
  workerPath: n.workerPath,
@@ -164,17 +164,17 @@ async function Ne(e, t, n) {
164
164
  logger: n.logger,
165
165
  errorHandler: s
166
166
  }).then((e) => {
167
- if (o) {
167
+ if (a) {
168
168
  e.terminate?.();
169
169
  return;
170
170
  }
171
- o = !0, r(e);
171
+ a = !0, r(e);
172
172
  }, s);
173
173
  });
174
174
  }
175
175
  //#endregion
176
176
  //#region src/sdk/ocr.ts
177
- function w(e, t = 1, n = 1, r = 0, i = 0) {
177
+ function T(e, t = 1, n = 1, r = 0, i = 0) {
178
178
  return {
179
179
  text: e.text,
180
180
  confidence: Math.max(0, Math.min(1, e.confidence / 100)),
@@ -186,7 +186,7 @@ function w(e, t = 1, n = 1, r = 0, i = 0) {
186
186
  }
187
187
  };
188
188
  }
189
- function T(e = .5) {
189
+ function E(e = .5) {
190
190
  if (!Number.isFinite(e) || e < 0 || e > 1) throw RangeError("OCR minConfidence must be between 0 and 1.");
191
191
  return e;
192
192
  }
@@ -194,12 +194,12 @@ function Pe(e, t) {
194
194
  let n = Math.max(e.bbox.x, t.bbox.x), r = Math.max(e.bbox.y, t.bbox.y), i = Math.min(e.bbox.x + e.bbox.width, t.bbox.x + t.bbox.width), a = Math.min(e.bbox.y + e.bbox.height, t.bbox.y + t.bbox.height), o = Math.max(0, i - n) * Math.max(0, a - r), s = Math.min(e.bbox.width * e.bbox.height, t.bbox.width * t.bbox.height);
195
195
  return s > 0 ? o / s : 0;
196
196
  }
197
- function E(e) {
197
+ function D(e) {
198
198
  let t = [...e].sort((e, t) => t.confidence - e.confidence || e.bbox.y - t.bbox.y || e.bbox.x - t.bbox.x || e.text.localeCompare(t.text)), n = [];
199
199
  for (let e of t) n.some((t) => Pe(t, e) >= .65) || n.push(e);
200
200
  return n;
201
201
  }
202
- function D(e, t, n, r, i) {
202
+ function O(e, t, n, r, i) {
203
203
  let a = e.text.trim();
204
204
  if (!a || !/[\p{L}\p{N}]/u.test(a)) return !1;
205
205
  let o = e.bbox.width * e.bbox.height / Math.max(1, n * r), s = e.bbox.width / Math.max(1, e.bbox.height);
@@ -226,20 +226,20 @@ function Fe(e) {
226
226
  }
227
227
  return n.sort((e, t) => e.centerY - t.centerY).map((e) => e.words.sort((e, t) => e.bbox.x - t.bbox.x).map((e) => e.text.trim()).join(" ")).join("\n");
228
228
  }
229
- function O(e, t, n, r) {
230
- let i = T(t.minConfidence), a = [], o = [], s = 1, c = 1;
229
+ function k(e, t, n, r) {
230
+ let i = E(t.minConfidence), a = [], o = [], s = 1, c = 1;
231
231
  for (let t of e) {
232
232
  let e = t.scaleX ?? 1, n = t.scaleY ?? 1, r = t.offsetX ?? 0, l = t.offsetY ?? 0;
233
233
  for (let u of t.blocks ?? []) for (let t of u.paragraphs) for (let u of t.lines) for (let t of u.words) {
234
- let u = w(t, e, n, r, l);
234
+ let u = T(t, e, n, r, l);
235
235
  s = Math.max(s, u.bbox.x + u.bbox.width), c = Math.max(c, u.bbox.y + u.bbox.height), u.confidence >= i && a.push(u);
236
236
  for (let a of t.symbols) {
237
- let t = w(a, e, n, r, l);
237
+ let t = T(a, e, n, r, l);
238
238
  t.confidence >= i && o.push(t);
239
239
  }
240
240
  }
241
241
  }
242
- let l = n?.width ?? s, u = n?.height ?? c, d = E(a).filter((e) => D(e, "word", l, u, r)), f = E(o).filter((e) => D(e, "character", l, u, r));
242
+ let l = n?.width ?? s, u = n?.height ?? c, d = D(a).filter((e) => O(e, "word", l, u, r)), f = D(o).filter((e) => O(e, "character", l, u, r));
243
243
  return {
244
244
  text: Fe(d),
245
245
  confidence: d.length ? d.reduce((e, t) => e + t.confidence, 0) / d.length : 0,
@@ -247,9 +247,9 @@ function O(e, t, n, r) {
247
247
  characters: t.includeCharacters ? f : []
248
248
  };
249
249
  }
250
- function k(e) {
250
+ function A(e) {
251
251
  let t = e.getContext("2d", { willReadFrequently: !0 });
252
- if (!t) throw o();
252
+ if (!t) throw d();
253
253
  let n = t.getImageData(0, 0, e.width, e.height), r = new Uint8Array(e.width * e.height);
254
254
  for (let e = 0, t = 0; e < r.length; e += 1, t += 4) r[e] = Math.round(n.data[t] * .299 + n.data[t + 1] * .587 + n.data[t + 2] * .114);
255
255
  return {
@@ -269,7 +269,7 @@ function Ie(e) {
269
269
  areaRatio: 0
270
270
  };
271
271
  n.drawImage(e, 0, 0, t.width, t.height);
272
- let { luminance: r } = k(t);
272
+ let { luminance: r } = A(t);
273
273
  return ae(r, t.width, t.height);
274
274
  }
275
275
  function Le(e, t, n, r) {
@@ -315,23 +315,23 @@ function He(e, t, n, r) {
315
315
  }
316
316
  };
317
317
  }
318
- function A(e, t) {
318
+ function j(e, t) {
319
319
  for (let n = 0, r = 0; n < t.length; n += 1, r += 4) e.data[r] = t[n], e.data[r + 1] = t[n], e.data[r + 2] = t[n], e.data[r + 3] = 255;
320
320
  }
321
321
  function Ue(e) {
322
322
  let t = 2200, n = Math.max(e.width, e.height), r = n > t ? t / n : Math.min(1.5, t / Math.max(1, n)), i = document.createElement("canvas");
323
323
  i.width = Math.max(1, Math.round(e.width * r)), i.height = Math.max(1, Math.round(e.height * r));
324
324
  let a = i.getContext("2d", { willReadFrequently: !0 });
325
- if (!a) throw o();
325
+ if (!a) throw d();
326
326
  a.drawImage(e, 0, 0, i.width, i.height);
327
- let { image: s, luminance: c } = k(i), l = pe(c, i.width, i.height), u = g(l, i.width, i.height), d = document.createElement("canvas");
328
- d.width = i.width, d.height = i.height;
329
- let f = d.getContext("2d", { willReadFrequently: !0 });
330
- if (!f) throw o();
331
- let p = f.createImageData(d.width, d.height);
332
- return A(p, l), f.putImageData(p, 0, 0), A(s, u), a.putImageData(s, 0, 0), {
327
+ let { image: o, luminance: s } = A(i), c = pe(s, i.width, i.height), l = _(c, i.width, i.height), u = document.createElement("canvas");
328
+ u.width = i.width, u.height = i.height;
329
+ let f = u.getContext("2d", { willReadFrequently: !0 });
330
+ if (!f) throw d();
331
+ let p = f.createImageData(u.width, u.height);
332
+ return j(p, c), f.putImageData(p, 0, 0), j(o, l), a.putImageData(o, 0, 0), {
333
333
  sparseCanvas: i,
334
- flattenedCanvas: d
334
+ flattenedCanvas: u
335
335
  };
336
336
  }
337
337
  function We(e) {
@@ -352,58 +352,58 @@ function We(e) {
352
352
  return l / s.length;
353
353
  };
354
354
  }
355
- async function j(e, t = {}) {
356
- await c("ocr");
355
+ async function M(e, t = {}) {
356
+ await u("ocr");
357
357
  let n = Ae(t.language, t.langPath), r = n.language;
358
- T(t.minConfidence);
359
- let i = await l(e, { cloneCanvas: !1 }), { sparseCanvas: a, flattenedCanvas: o } = Ue(i), s = t.shadowPass === !1 ? {
358
+ E(t.minConfidence);
359
+ let i = await y(e, { cloneCanvas: !1 }), { sparseCanvas: a, flattenedCanvas: o } = Ue(i), s = t.shadowPass === !1 ? {
360
360
  strong: !1,
361
361
  strength: 0,
362
362
  darkness: 0,
363
363
  areaRatio: 0
364
- } : Ie(i), { createWorker: u, PSM: d } = await import("tesseract.js"), f = 0, p = s.strong ? 3 : 2, m = await Ne(u, r, {
364
+ } : Ie(i), { createWorker: c, PSM: l } = await import("tesseract.js"), d = 0, f = s.strong ? 3 : 2, p = await Ne(c, r, {
365
365
  workerPath: xe.href,
366
366
  corePath: ke(Oe()).href,
367
367
  langPath: Me(n),
368
368
  logger(e) {
369
- typeof e.progress == "number" && t.onProgress?.(Math.min(1, (f + e.progress) / p), e.status ?? "recognizing text");
369
+ typeof e.progress == "number" && t.onProgress?.(Math.min(1, (d + e.progress) / f), e.status ?? "recognizing text");
370
370
  }
371
371
  });
372
372
  try {
373
- await m.setParameters({ tessedit_pageseg_mode: d.AUTO });
374
- let e = await m.recognize(i, {}, {
373
+ await p.setParameters({ tessedit_pageseg_mode: l.AUTO });
374
+ let e = await p.recognize(i, {}, {
375
375
  text: !0,
376
376
  blocks: !0
377
377
  });
378
- f = 1, await m.setParameters({
379
- tessedit_pageseg_mode: d.SPARSE_TEXT,
378
+ d = 1, await p.setParameters({
379
+ tessedit_pageseg_mode: l.SPARSE_TEXT,
380
380
  preserve_interword_spaces: "1"
381
381
  });
382
- let n = await m.recognize(a, {}, {
382
+ let n = await p.recognize(a, {}, {
383
383
  text: !0,
384
384
  blocks: !0
385
385
  }), c = [{ blocks: e.data.blocks }, {
386
386
  blocks: n.data.blocks,
387
387
  scaleX: i.width / a.width,
388
388
  scaleY: i.height / a.height
389
- }], l = {
389
+ }], u = {
390
390
  ...t,
391
391
  includeWords: !0
392
- }, u = We(i), p = O(c, l, {
392
+ }, f = We(i), m = k(c, u, {
393
393
  width: i.width,
394
394
  height: i.height
395
- }, u), h = t.shadowPass !== !1 && Ve(s, p.words, {
395
+ }, f), h = t.shadowPass !== !1 && Ve(s, m.words, {
396
396
  width: i.width,
397
397
  height: i.height
398
- }, u);
398
+ }, f);
399
399
  if (h && s.region) {
400
- f = 2;
400
+ d = 2;
401
401
  let { tile: e, passMapping: t } = He(o, s.region, i.width, i.height);
402
- await m.setParameters({
403
- tessedit_pageseg_mode: d.SPARSE_TEXT,
402
+ await p.setParameters({
403
+ tessedit_pageseg_mode: l.SPARSE_TEXT,
404
404
  preserve_interword_spaces: "1"
405
405
  });
406
- let n = await m.recognize(e, {}, {
406
+ let n = await p.recognize(e, {}, {
407
407
  text: !0,
408
408
  blocks: !0
409
409
  });
@@ -412,10 +412,10 @@ async function j(e, t = {}) {
412
412
  ...t
413
413
  });
414
414
  }
415
- let g = c.length === 2 ? p : O(c, l, {
415
+ let g = c.length === 2 ? m : k(c, u, {
416
416
  width: i.width,
417
417
  height: i.height
418
- }, u);
418
+ }, f);
419
419
  return t.onProgress?.(1, "recognizing text"), {
420
420
  text: g.text,
421
421
  confidence: g.confidence,
@@ -436,38 +436,38 @@ async function j(e, t = {}) {
436
436
  ...t.includeCharacters ? { characters: g.characters } : {}
437
437
  };
438
438
  } finally {
439
- await m.terminate();
439
+ await p.terminate();
440
440
  }
441
441
  }
442
442
  //#endregion
443
443
  //#region src/sdk/redact.ts
444
- async function M(e, t, i = {}) {
445
- await c("redaction");
446
- let a = await l(e), s = a.getContext("2d");
447
- if (!s) throw o();
444
+ async function N(e, t, r = {}) {
445
+ await u("redaction");
446
+ let i = await y(e), a = i.getContext("2d");
447
+ if (!a) throw d();
448
448
  for (let e of t) {
449
- let t = n(e, a.width, a.height);
449
+ let t = l(e, i.width, i.height);
450
450
  if (t.width < 1 || t.height < 1) continue;
451
- if ((e.mode ?? i.mode ?? "blackout") === "blackout") {
452
- s.fillStyle = "#050706", s.fillRect(t.x, t.y, t.width, t.height);
451
+ if ((e.mode ?? r.mode ?? "blackout") === "blackout") {
452
+ a.fillStyle = "#050706", a.fillRect(t.x, t.y, t.width, t.height);
453
453
  continue;
454
454
  }
455
- let r = document.createElement("canvas");
456
- r.width = Math.ceil(t.width), r.height = Math.ceil(t.height);
457
- let o = r.getContext("2d");
455
+ let n = document.createElement("canvas");
456
+ n.width = Math.ceil(t.width), n.height = Math.ceil(t.height);
457
+ let o = n.getContext("2d");
458
458
  if (!o) continue;
459
- o.filter = `blur(${i.blurRadius ?? 18}px)`;
460
- let c = Math.max(12, i.blurRadius ?? 18);
461
- o.drawImage(a, t.x - c, t.y - c, t.width + c * 2, t.height + c * 2, -c, -c, t.width + c * 2, t.height + c * 2), s.drawImage(r, t.x, t.y, t.width, t.height);
459
+ o.filter = `blur(${r.blurRadius ?? 18}px)`;
460
+ let s = Math.max(12, r.blurRadius ?? 18);
461
+ o.drawImage(i, t.x - s, t.y - s, t.width + s * 2, t.height + s * 2, -s, -s, t.width + s * 2, t.height + s * 2), a.drawImage(n, t.x, t.y, t.width, t.height);
462
462
  }
463
463
  return {
464
- canvas: a,
465
- blob: await r(a, i.mimeType ?? "image/png", i.quality)
464
+ canvas: i,
465
+ blob: await n(i, r.mimeType ?? "image/png", r.quality)
466
466
  };
467
467
  }
468
468
  //#endregion
469
469
  //#region src/sdk/face-model.ts
470
- var N = /* @__PURE__ */ new Map(), Ge = 8400;
470
+ var P = /* @__PURE__ */ new Map(), Ge = 8400;
471
471
  function Ke(e, t) {
472
472
  let n = Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)) * Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y));
473
473
  return n / Math.max(1, e.width * e.height + t.width * t.height - n);
@@ -493,26 +493,26 @@ function Je(e, t, n) {
493
493
  }
494
494
  return s.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => Ke(e.bbox, t.bbox) < .45)).slice(0, 8);
495
495
  }
496
- async function P(e, t, n = .35) {
497
- let r = await l(e, { cloneCanvas: !1 }), i = await import("onnxruntime-web"), a = document.createElement("canvas");
496
+ async function Ye(e, t, n = .35) {
497
+ let r = await y(e, { cloneCanvas: !1 }), i = await import("onnxruntime-web"), a = document.createElement("canvas");
498
498
  a.width = 640, a.height = 640;
499
- let s = a.getContext("2d", { willReadFrequently: !0 });
500
- if (!s) throw o();
501
- s.drawImage(r, 0, 0, 640, 640);
502
- let c = s.getImageData(0, 0, 640, 640).data, u = 409600, d = new Float32Array(u * 3);
503
- for (let e = 0; e < u; e += 1) d[e] = c[e * 4] / 255, d[u + e] = c[e * 4 + 1] / 255, d[u * 2 + e] = c[e * 4 + 2] / 255;
504
- let f = N.get(t);
505
- f || (f = i.InferenceSession.create(t, {
499
+ let o = a.getContext("2d", { willReadFrequently: !0 });
500
+ if (!o) throw d();
501
+ o.drawImage(r, 0, 0, 640, 640);
502
+ let s = o.getImageData(0, 0, 640, 640).data, c = 409600, l = new Float32Array(c * 3);
503
+ for (let e = 0; e < c; e += 1) l[e] = s[e * 4] / 255, l[c + e] = s[e * 4 + 1] / 255, l[c * 2 + e] = s[e * 4 + 2] / 255;
504
+ let u = P.get(t);
505
+ u || (u = i.InferenceSession.create(t, {
506
506
  executionProviders: ["wasm"],
507
507
  graphOptimizationLevel: "all"
508
- }), N.set(t, f));
509
- let p = await f, m = (await p.run({ [p.inputNames[0]]: new i.Tensor("float32", d, [
508
+ }), P.set(t, u));
509
+ let f = await u, p = (await f.run({ [f.inputNames[0]]: new i.Tensor("float32", l, [
510
510
  1,
511
511
  3,
512
512
  640,
513
513
  640
514
- ]) }))[p.outputNames[0]];
515
- return Je(m.data, m.dims.map(Number), {
514
+ ]) }))[f.outputNames[0]];
515
+ return Je(p.data, p.dims.map(Number), {
516
516
  confidence: n,
517
517
  imageWidth: r.width,
518
518
  imageHeight: r.height,
@@ -529,17 +529,17 @@ var F = /* @__PURE__ */ new Map(), I = [
529
529
  "expiration_date",
530
530
  "postal_code",
531
531
  "state"
532
- ], Ye = 8400;
532
+ ], Xe = 8400;
533
533
  function L(e) {
534
534
  return 5 + e;
535
535
  }
536
536
  var R = 640;
537
- function Xe(e, t) {
537
+ function Ze(e, t) {
538
538
  let n = Math.max(0, Math.min(e.bbox.x + e.bbox.width, t.bbox.x + t.bbox.width) - Math.max(e.bbox.x, t.bbox.x)) * Math.max(0, Math.min(e.bbox.y + e.bbox.height, t.bbox.y + t.bbox.height) - Math.max(e.bbox.y, t.bbox.y));
539
539
  return n / Math.max(1, e.bbox.width * e.bbox.height + t.bbox.width * t.bbox.height - n);
540
540
  }
541
541
  function z(e) {
542
- return e.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => t.field !== e.field || Xe(e, t) < .45)).slice(0, 30);
542
+ return e.sort((e, t) => t.confidence - e.confidence).filter((e, t, n) => n.slice(0, t).every((t) => t.field !== e.field || Ze(e, t) < .45)).slice(0, 30);
543
543
  }
544
544
  function B(e, t, n, r, i, a, o) {
545
545
  return {
@@ -559,15 +559,15 @@ function V(e, t) {
559
559
  features: n
560
560
  } : null;
561
561
  }
562
- function Ze(e) {
562
+ function Qe(e) {
563
563
  return e.length === 3 && e[1] >= 5 && e[2] >= 1;
564
564
  }
565
- function Qe(e) {
565
+ function $e(e) {
566
566
  let t = L(e);
567
- return /* @__PURE__ */ Error(`YOLOX field layout expects [1, anchors, ${t}] (cx, cy, w, h, objectness, ${e} class scores). A 640 YOLOX-Nano export with decode baked in is [1, ${Ye}, ${t}].`);
567
+ return /* @__PURE__ */ Error(`YOLOX field layout expects [1, anchors, ${t}] (cx, cy, w, h, objectness, ${e} class scores). A 640 YOLOX-Nano export with decode baked in is [1, ${Xe}, ${t}].`);
568
568
  }
569
- function $e(e, t, n, r, i, a, o) {
570
- if (!Ze(t)) throw Error("Unsupported field-model YOLO output shape.");
569
+ function et(e, t, n, r, i, a, o) {
570
+ if (!Qe(t)) throw Error("Unsupported field-model YOLO output shape.");
571
571
  let s = t[1], c = t[2], l = [];
572
572
  for (let t = 0; t < c; t += 1) {
573
573
  let u = 0, d = 0;
@@ -584,9 +584,9 @@ function $e(e, t, n, r, i, a, o) {
584
584
  }
585
585
  return z(l);
586
586
  }
587
- function et(e, t, n, r, i, a, o) {
587
+ function tt(e, t, n, r, i, a, o) {
588
588
  let s = V(t, n.length);
589
- if (!s) throw Qe(n.length);
589
+ if (!s) throw $e(n.length);
590
590
  let c = [];
591
591
  for (let t = 0; t < s.anchors; t += 1) {
592
592
  let l = t * s.features, u = e[l + 4], d = 0, f = 0;
@@ -603,43 +603,43 @@ function et(e, t, n, r, i, a, o) {
603
603
  }
604
604
  return z(c);
605
605
  }
606
- function tt(e, t, n) {
606
+ function nt(e, t, n) {
607
607
  let r = n.classes ?? I, i = n.confidence ?? .35, a = n.inputSize ?? R, o = V(t, r.length);
608
608
  if (n.layout === "yolov8" && o) throw Error("This tensor is YOLOX [1, anchors, 5+classes]. Pass fieldLayout: 'yolox', or omit fieldLayout to detect it from the shape.");
609
- return (n.layout ?? (o ? "yolox" : "yolov8")) === "yolox" ? et(e, t, r, i, a, n.imageWidth, n.imageHeight) : $e(e, t, r, i, a, n.imageWidth, n.imageHeight);
610
- }
611
- async function nt(e, t, n = I, r = .35, i) {
612
- let a = await l(e, { cloneCanvas: !1 }), s = import("onnxruntime-web"), c = R, u = document.createElement("canvas");
613
- u.width = c, u.height = c;
614
- let d = u.getContext("2d", { willReadFrequently: !0 });
615
- if (!d) throw o();
616
- d.drawImage(a, 0, 0, c, c);
617
- let f = d.getImageData(0, 0, c, c).data, p = c * c, m = new Float32Array(p * 3);
609
+ return (n.layout ?? (o ? "yolox" : "yolov8")) === "yolox" ? tt(e, t, r, i, a, n.imageWidth, n.imageHeight) : et(e, t, r, i, a, n.imageWidth, n.imageHeight);
610
+ }
611
+ async function rt(t, n, r = I, i = .35, a) {
612
+ let o = await y(t, { cloneCanvas: !1 }), s = import("onnxruntime-web"), c = R, l = document.createElement("canvas");
613
+ l.width = c, l.height = c;
614
+ let u = l.getContext("2d", { willReadFrequently: !0 });
615
+ if (!u) throw d();
616
+ u.drawImage(o, 0, 0, c, c);
617
+ let f = u.getImageData(0, 0, c, c).data, p = c * c, m = new Float32Array(p * 3);
618
618
  for (let e = 0; e < p; e += 1) m[e] = f[e * 4] / 255, m[p + e] = f[e * 4 + 1] / 255, m[p * 2 + e] = f[e * 4 + 2] / 255;
619
- let h = F.get(t);
619
+ let h = F.get(n);
620
620
  h || (h = (async () => {
621
621
  try {
622
- let [e, n] = await Promise.all([s, ie(t)]);
623
- return await e.InferenceSession.create(n, {
622
+ let [t, r] = await Promise.all([s, e(n)]);
623
+ return await t.InferenceSession.create(r, {
624
624
  executionProviders: ["wasm"],
625
625
  graphOptimizationLevel: "all"
626
626
  });
627
627
  } catch (e) {
628
- throw F.delete(t), e;
628
+ throw F.delete(n), e;
629
629
  }
630
- })(), F.set(t, h));
630
+ })(), F.set(n, h));
631
631
  let [g, _] = await Promise.all([s, h]), v = (await _.run({ [_.inputNames[0]]: new g.Tensor("float32", m, [
632
632
  1,
633
633
  3,
634
634
  c,
635
635
  c
636
636
  ]) }))[_.outputNames[0]];
637
- return tt(v.data, v.dims.map(Number), {
638
- classes: n,
639
- confidence: r,
640
- layout: i,
641
- imageWidth: a.width,
642
- imageHeight: a.height,
637
+ return nt(v.data, v.dims.map(Number), {
638
+ classes: r,
639
+ confidence: i,
640
+ layout: a,
641
+ imageWidth: o.width,
642
+ imageHeight: o.height,
643
643
  inputSize: c
644
644
  });
645
645
  }
@@ -676,7 +676,7 @@ function W(e, t, n = !1) {
676
676
  function G(e) {
677
677
  return e.reduce((e, t) => e + t.confidence, 0) / Math.max(1, e.length);
678
678
  }
679
- function rt(e, t) {
679
+ function it(e, t) {
680
680
  let n = e.mode, r = n === "case-insensitive", i = e.scope ?? "line", a;
681
681
  if (n === "regex") {
682
682
  let t = e.pattern ?? e.values?.[0];
@@ -713,14 +713,14 @@ function rt(e, t) {
713
713
  }
714
714
  return s;
715
715
  }
716
- function it(e, t) {
716
+ function at(e, t) {
717
717
  let n = e.labelMode !== "exact", r = W(e.label, n, !0).split(" ");
718
718
  for (let e of t) for (let t = 0; t <= e.words.length - r.length; t += 1) {
719
719
  let i = e.words.slice(t, t + r.length);
720
720
  if (i.every((e, t) => W(e.text, n, !0) === r[t])) return i;
721
721
  }
722
722
  }
723
- function at(e, t, n, r, i, a) {
723
+ function ot(e, t, n, r, i, a) {
724
724
  let o = a.window?.distance ?? .28, s = a.window?.crossAxis ?? .12, c = t.x + t.width / 2, l = t.y + t.height / 2;
725
725
  return e.filter((e) => {
726
726
  let a = e.bbox.x + e.bbox.width / 2, u = e.bbox.y + e.bbox.height / 2;
@@ -728,7 +728,7 @@ function at(e, t, n, r, i, a) {
728
728
  });
729
729
  }
730
730
  function K(e, t, n, r, i, a = "label") {
731
- let o = it(e, n);
731
+ let o = at(e, n);
732
732
  if (!o) return [];
733
733
  let s = H(o), c = new Set(o), l = t.filter((e) => !c.has(e)), u = e.direction === "any" ? [
734
734
  "right",
@@ -737,7 +737,7 @@ function K(e, t, n, r, i, a = "label") {
737
737
  "above"
738
738
  ] : [e.direction], d;
739
739
  for (let t of u) {
740
- let n = U(at(l, s, t, r, i, e));
740
+ let n = U(ot(l, s, t, r, i, e));
741
741
  for (let t of n) {
742
742
  if (e.valuePattern && !new RegExp(e.valuePattern, e.patternFlags).test(t.text)) continue;
743
743
  let n = t.bbox.x + t.bbox.width / 2, a = t.bbox.y + t.bbox.height / 2, o = s.x + s.width / 2, c = s.y + s.height / 2, l = Math.hypot((n - o) / r, (a - c) / i);
@@ -795,7 +795,7 @@ var q = {
795
795
  "POSTAL"
796
796
  ],
797
797
  state: ["STATE", "DAJ"]
798
- }, ot = new Set(Object.values(q).flat()), J = /^(?:\d{2}[/-]\d{2}[/-]\d{2,4}|\d{4}[/-]\d{2}[/-]\d{2}|\d{6}|\d{8})$/, Y = /\b(?:ST|STREET|AVE|AVENUE|RD|ROAD|BLVD|BOULEVARD|LN|LANE|DR|DRIVE|WAY|CT|COURT)\b/i, X = /\b(?:DRIVER|LICENSE|IDENTIFICATION|CARD|CLASS|SEX|EYES|HEIGHT|RESTRICTIONS)\b/i;
798
+ }, st = new Set(Object.values(q).flat()), J = /^(?:\d{2}[/-]\d{2}[/-]\d{2,4}|\d{4}[/-]\d{2}[/-]\d{2}|\d{6}|\d{8})$/, Y = /\b(?:ST|STREET|AVE|AVENUE|RD|ROAD|BLVD|BOULEVARD|LN|LANE|DR|DRIVE|WAY|CT|COURT)\b/i, X = /\b(?:DRIVER|LICENSE|IDENTIFICATION|CARD|CLASS|SEX|EYES|HEIGHT|RESTRICTIONS)\b/i;
799
799
  function Z(e, t) {
800
800
  let n = t.trim();
801
801
  return n ? e === "date_of_birth" || e === "expiration_date" ? J.test(n.replace(/\s/g, "")) : e === "postal_code" ? /^(?:\d{5}(?:-\d{4})?|[A-Z]\d[A-Z]\s?\d[A-Z]\d)$/i.test(n) : e === "state" ? /^[A-Z]{2}$/i.test(n) : e === "document_number" ? /^(?=.*\d)[A-Z0-9-]{5,20}$/i.test(n) : e === "person_name" ? !/\d/.test(n) && /^[A-ZÀ-ÖØ-öø-ÿ' -]{3,}$/i.test(n) && !X.test(n) : /\d/.test(n) && /[A-Z]/i.test(n) : !1;
@@ -810,17 +810,17 @@ function Q(e, t, n, r, i = 1) {
810
810
  confidence: Math.max(0, Math.min(1, G(n) * i))
811
811
  };
812
812
  }
813
- function st(e, t, n) {
813
+ function ct(e, t, n) {
814
814
  let r = q[e], i = [];
815
815
  for (let a of n) for (let n = 0; n < a.words.length; n += 1) {
816
816
  let o = a.words[n].text.toUpperCase().replace(/[^A-Z0-9]/g, ""), s = r.find((e) => o === e || o.startsWith(e));
817
817
  if (!s) continue;
818
818
  let c, l;
819
- o === s ? (c = a.words.slice(n + 1).filter((e) => !ot.has(e.text.toUpperCase().replace(/[^A-Z0-9]/g, ""))), l = c.map((e) => e.text).join(" ")) : (c = [a.words[n]], l = a.words[n].text.replace(RegExp(`^${s}[:\\s-]*`, "i"), "")), c.length && Z(e, l) && i.push(Q(t, "alias", c, l, .98));
819
+ o === s ? (c = a.words.slice(n + 1).filter((e) => !st.has(e.text.toUpperCase().replace(/[^A-Z0-9]/g, ""))), l = c.map((e) => e.text).join(" ")) : (c = [a.words[n]], l = a.words[n].text.replace(RegExp(`^${s}[:\\s-]*`, "i"), "")), c.length && Z(e, l) && i.push(Q(t, "alias", c, l, .98));
820
820
  }
821
821
  return i;
822
822
  }
823
- function ct(e, t, n) {
823
+ function lt(e, t, n) {
824
824
  let r = n.filter((e) => {
825
825
  let t = e.text.replace(/\s/g, "");
826
826
  return t.includes("<<") || /^[A-Z0-9<]{25,}$/.test(t);
@@ -842,7 +842,7 @@ function ct(e, t, n) {
842
842
  }
843
843
  return [];
844
844
  }
845
- function lt(e) {
845
+ function ut(e) {
846
846
  let t = e.replace(/\s/g, ""), n = t.match(/\d{4}/)?.[0];
847
847
  if (n) return Number(n);
848
848
  let r = t.match(/^\d{2}/)?.[0];
@@ -850,7 +850,7 @@ function lt(e) {
850
850
  let i = Number(r);
851
851
  return i > (/* @__PURE__ */ new Date()).getFullYear() % 100 ? 1900 + i : 2e3 + i;
852
852
  }
853
- function ut(e, t, n, r, i) {
853
+ function dt(e, t, n, r, i) {
854
854
  if (e === "address") {
855
855
  let e = r.findIndex((e) => /\d/.test(e.text) && Y.test(e.text));
856
856
  if (e < 0) return [];
@@ -870,7 +870,7 @@ function ut(e, t, n, r, i) {
870
870
  if (e === "date_of_birth" || e === "expiration_date") {
871
871
  let r = (/* @__PURE__ */ new Date()).getFullYear(), i = n.filter((e) => J.test(e.text.replace(/\s/g, ""))).map((e) => ({
872
872
  word: e,
873
- year: lt(e.text)
873
+ year: ut(e.text)
874
874
  })).filter((e) => e.year !== void 0), a = e === "date_of_birth" ? i.filter((e) => e.year <= r - 14 && e.year >= r - 120) : i.filter((e) => e.year >= r - 1);
875
875
  return a.sort((t, n) => e === "date_of_birth" ? t.year - n.year : n.year - t.year), a.length ? [Q(t, "layout", [a[0].word], void 0, .72)] : [];
876
876
  }
@@ -888,29 +888,29 @@ function ut(e, t, n, r, i) {
888
888
  }
889
889
  return [];
890
890
  }
891
- function dt(e, t) {
891
+ function ft(e, t) {
892
892
  return Math.max(0, Math.min(e.x + e.width, t.x + t.width) - Math.max(e.x, t.x)) * Math.max(0, Math.min(e.y + e.height, t.y + t.height) - Math.max(e.y, t.y)) / Math.max(1, t.width * t.height);
893
893
  }
894
- function ft(e, t, n, r) {
895
- let i = st(e.field, e.id, n), a = ct(e.field, e.id, n);
896
- return i.length || a.length ? [...i, ...a] : ut(e.field, e.id, t, n, r);
894
+ function pt(e, t, n, r) {
895
+ let i = ct(e.field, e.id, n), a = lt(e.field, e.id, n);
896
+ return i.length || a.length ? [...i, ...a] : dt(e.field, e.id, t, n, r);
897
897
  }
898
- function pt(e, t, n) {
898
+ function mt(e, t, n) {
899
899
  let r = (n ?? []).filter((t) => t.field === e.field).sort((e, t) => t.confidence - e.confidence);
900
900
  for (let n of r) {
901
- let r = t.filter((e) => dt(n.bbox, e.bbox) >= .3);
901
+ let r = t.filter((e) => ft(n.bbox, e.bbox) >= .3);
902
902
  if (!r.length) continue;
903
903
  let i = r.map((e) => e.text).join(" ");
904
904
  if (Z(e.field, i)) return Q(e.id, "model", r, i, n.confidence);
905
905
  }
906
906
  }
907
- function mt(e, t, n, r, i, a) {
908
- let o = ft(e, t, n, r);
907
+ function ht(e, t, n, r, i, a) {
908
+ let o = pt(e, t, n, r);
909
909
  if (e.detector !== "model" || !a) return o;
910
- let s = pt(e, t, i);
910
+ let s = mt(e, t, i);
911
911
  return s ? [s] : [];
912
912
  }
913
- function ht(e, t, n, r) {
913
+ function gt(e, t, n, r) {
914
914
  let i = (e) => Math.max(0, Math.min(1, e)), a = i(e.rect.x), o = i(e.rect.y);
915
915
  return {
916
916
  ruleId: `${t}.${e.id}`,
@@ -928,13 +928,13 @@ function ht(e, t, n, r) {
928
928
  function $(e, t) {
929
929
  let n = t.imageWidth ?? e?.imageWidth ?? 0, r = t.imageHeight ?? e?.imageHeight ?? 0, i = e?.words ?? [], a = U(i), o = [], s = [];
930
930
  for (let e of t.rules) {
931
- let c = e.strategy === "string" ? rt(e, a) : e.strategy === "label" ? K(e, i, a, n, r) : mt(e, i, a, r, t.semanticDetections, t.modelRequested === !0);
931
+ let c = e.strategy === "string" ? it(e, a) : e.strategy === "label" ? K(e, i, a, n, r) : ht(e, i, a, r, t.semanticDetections, t.modelRequested === !0);
932
932
  c.length ? o.push(...c) : s.push(e.id);
933
933
  }
934
934
  for (let e of t.template?.fields ?? []) {
935
935
  let c = `${t.template.id}.${e.id}`;
936
936
  if (e.strategy === "rect") {
937
- n && r ? o.push(ht(e, t.template.id, n, r)) : s.push(c);
937
+ n && r ? o.push(gt(e, t.template.id, n, r)) : s.push(c);
938
938
  continue;
939
939
  }
940
940
  let l = K({
@@ -955,68 +955,68 @@ function $(e, t) {
955
955
  confidence: u
956
956
  };
957
957
  }
958
- function gt(e) {
958
+ function _t(e) {
959
959
  return e.rules.length > 0 || e.template?.fields.some((e) => e.strategy === "anchor") === !0;
960
960
  }
961
- function _t(e, t = !1) {
961
+ function vt(e, t = !1) {
962
962
  return t && !e.complete ? "unmatched" : e.complete ? "success" : "partial";
963
963
  }
964
- async function vt(e, t) {
965
- await c("redaction");
966
- let n = await l(e, { cloneCanvas: !1 }), r = t.ocr;
967
- gt(t) && !r && (r = await j(n, { includeWords: !0 }));
964
+ async function yt(e, t) {
965
+ await u("redaction");
966
+ let n = await y(e, { cloneCanvas: !1 }), r = t.ocr;
967
+ _t(t) && !r && (r = await M(n, { includeWords: !0 }));
968
968
  let i = t.semanticDetections, a = t.modelRequested === !0, o = "not-requested", s;
969
969
  if (t.models?.fields) try {
970
- i = await nt(n, t.models.fields, t.models.fieldClasses, t.models.confidence, t.models.fieldLayout), a = !0, o = "loaded";
970
+ i = await rt(n, t.models.fields, t.models.fieldClasses, t.models.confidence, t.models.fieldLayout), a = !0, o = "loaded";
971
971
  } catch (e) {
972
972
  s = e instanceof Error ? e.message : "The field model could not load.";
973
973
  let n = t.models.allowHeuristicFallback !== !1;
974
974
  a = !n, o = n ? "fallback" : "failed";
975
975
  }
976
- let u = $(r, {
976
+ let c = $(r, {
977
977
  rules: t.rules,
978
978
  template: t.template,
979
979
  imageWidth: n.width,
980
980
  imageHeight: n.height,
981
981
  semanticDetections: i,
982
982
  modelRequested: a
983
- }), d = _t(u, t.requireAll), f = [], p = "not-requested", m;
983
+ }), l = vt(c, t.requireAll), d = [], f = "not-requested", p;
984
984
  if (t.models?.face) try {
985
- f = await P(n, t.models.face, t.models.faceConfidence), p = "loaded";
985
+ d = await Ye(n, t.models.face, t.models.faceConfidence), f = "loaded";
986
986
  } catch (e) {
987
- m = e instanceof Error ? e.message : "The face model could not load.", p = "failed";
987
+ p = e instanceof Error ? e.message : "The face model could not load.", f = "failed";
988
988
  }
989
- if (d === "unmatched") return {
990
- ...u,
991
- status: d,
989
+ if (l === "unmatched") return {
990
+ ...c,
991
+ status: l,
992
992
  ocr: r,
993
993
  modelStatus: o,
994
994
  modelError: s,
995
- faces: f,
996
- faceStatus: p,
997
- faceError: m
995
+ faces: d,
996
+ faceStatus: f,
997
+ faceError: p
998
998
  };
999
- let h = await M(n, [...u.matches.map((e) => ({
999
+ let m = await N(n, [...c.matches.map((e) => ({
1000
1000
  ...e.bbox,
1001
1001
  mode: t.style?.mode
1002
- })), ...f.map((e) => ({
1002
+ })), ...d.map((e) => ({
1003
1003
  ...e.bbox,
1004
1004
  mode: t.style?.mode
1005
1005
  }))], t.style);
1006
1006
  return {
1007
- ...u,
1008
- status: d,
1007
+ ...c,
1008
+ status: l,
1009
1009
  ocr: r,
1010
- canvas: h.canvas,
1011
- blob: h.blob,
1010
+ canvas: m.canvas,
1011
+ blob: m.blob,
1012
1012
  modelStatus: o,
1013
1013
  modelError: s,
1014
- faces: f,
1015
- faceStatus: p,
1016
- faceError: m
1014
+ faces: d,
1015
+ faceStatus: f,
1016
+ faceError: p
1017
1017
  };
1018
1018
  }
1019
1019
  //#endregion
1020
- export { _ as AutoTorchController, ge as DEFAULT_DOCUMENT_MODEL_URL, re as DEV_LICENSE_HOSTS, s as LicenseError, v as NEAR_BLACK_LUMINANCE, fe as QuadStabilityTracker, a as ScannerError, M as applyRedactions, c as assertLicense, se as autoCaptureControl, le as captureVideoFrame, be as createFinderSimulator, d as cropDocument, oe as detectBrowserEngine, t as detectDocument, te as formatCaptureDiagnosticsReport, u as getLicense, ee as isNearBlackFrame, ue as limitingFillTarget, ve as mapDocumentCornersToFrame, $ as matchRedactionRules, p as meanFrameLuminance, ne as measureQuadFill, me as mobileCameraConstraints, j as recognizeText, vt as redactProgrammatically, he as resolveDocumentModelUrl, f as scanDocument, m as selectFinderGuidance, ce as selectFinderHint, i as setLicenseKey, ye as simulatorQuad, _e as startCamera, de as startFinder, e as subscribeModelDownloads, h as torchControl };
1020
+ export { v as AutoTorchController, f as DEFAULT_DOCUMENT_MODEL_URL, s as DEV_LICENSE_HOSTS, c as LicenseError, ee as NEAR_BLACK_LUMINANCE, fe as QuadStabilityTracker, le as STILL_MAX_EDGE, o as ScannerError, N as applyRedactions, u as assertLicense, se as autoCaptureControl, oe as captureVideoFrame, be as createFinderSimulator, t as cropDocument, ne as detectBrowserEngine, he as detectDocument, te as formatCaptureDiagnosticsReport, i as getLicense, m as isNearBlackFrame, ue as limitingFillTarget, ve as mapDocumentCornersToFrame, $ as matchRedactionRules, me as meanFrameLuminance, re as measureQuadFill, _e as mobileCameraConstraints, M as recognizeText, yt as redactProgrammatically, p as resolveDocumentModelUrl, r as scanDocument, h as selectFinderGuidance, ce as selectFinderHint, a as setLicenseKey, ye as simulatorQuad, g as startCamera, de as startFinder, ie as subscribeModelDownloads, ge as torchControl };
1021
1021
 
1022
1022
  //# sourceMappingURL=scanner-sdk.js.map