@mleonard9/vin-scanner 0.2.9 → 1.1.0
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/lib/commonjs/vinUtils.js +44 -71
- package/lib/commonjs/vinUtils.js.map +1 -1
- package/lib/module/vinUtils.js +44 -71
- package/lib/module/vinUtils.js.map +1 -1
- package/lib/typescript/src/types.d.ts +0 -4
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/vinUtils.d.ts +0 -2
- package/lib/typescript/src/vinUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/types.ts +0 -4
- package/src/vinUtils.ts +72 -122
package/lib/commonjs/vinUtils.js
CHANGED
|
@@ -33,8 +33,6 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
33
33
|
preferBarcode: true,
|
|
34
34
|
validateChecksum: true,
|
|
35
35
|
emitDuplicates: false,
|
|
36
|
-
includePartialVins: false,
|
|
37
|
-
minPartialLength: 13,
|
|
38
36
|
maxFrameRate: 30,
|
|
39
37
|
forceOrientation: null
|
|
40
38
|
}
|
|
@@ -42,7 +40,7 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
42
40
|
const resolveOptions = options => {
|
|
43
41
|
'worklet';
|
|
44
42
|
|
|
45
|
-
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6
|
|
43
|
+
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6;
|
|
46
44
|
const resultMode = (options === null || options === void 0 || (_options$detection = options.detection) === null || _options$detection === void 0 ? void 0 : _options$detection.resultMode) ?? DEFAULT_RESOLVED_OPTIONS.detection.resultMode;
|
|
47
45
|
const emitDuplicates = (options === null || options === void 0 || (_options$detection2 = options.detection) === null || _options$detection2 === void 0 ? void 0 : _options$detection2.emitDuplicates) ?? (resultMode === 'all' ? true : DEFAULT_RESOLVED_OPTIONS.detection.emitDuplicates);
|
|
48
46
|
return {
|
|
@@ -59,10 +57,8 @@ const resolveOptions = options => {
|
|
|
59
57
|
preferBarcode: (options === null || options === void 0 || (_options$detection3 = options.detection) === null || _options$detection3 === void 0 ? void 0 : _options$detection3.preferBarcode) ?? DEFAULT_RESOLVED_OPTIONS.detection.preferBarcode,
|
|
60
58
|
validateChecksum: (options === null || options === void 0 || (_options$detection4 = options.detection) === null || _options$detection4 === void 0 ? void 0 : _options$detection4.validateChecksum) ?? DEFAULT_RESOLVED_OPTIONS.detection.validateChecksum,
|
|
61
59
|
emitDuplicates,
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
maxFrameRate: (options === null || options === void 0 || (_options$detection7 = options.detection) === null || _options$detection7 === void 0 ? void 0 : _options$detection7.maxFrameRate) ?? DEFAULT_RESOLVED_OPTIONS.detection.maxFrameRate,
|
|
65
|
-
forceOrientation: (options === null || options === void 0 || (_options$detection8 = options.detection) === null || _options$detection8 === void 0 ? void 0 : _options$detection8.forceOrientation) ?? DEFAULT_RESOLVED_OPTIONS.detection.forceOrientation
|
|
60
|
+
maxFrameRate: (options === null || options === void 0 || (_options$detection5 = options.detection) === null || _options$detection5 === void 0 ? void 0 : _options$detection5.maxFrameRate) ?? DEFAULT_RESOLVED_OPTIONS.detection.maxFrameRate,
|
|
61
|
+
forceOrientation: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.forceOrientation) ?? DEFAULT_RESOLVED_OPTIONS.detection.forceOrientation
|
|
66
62
|
}
|
|
67
63
|
};
|
|
68
64
|
};
|
|
@@ -203,14 +199,12 @@ const extractWithContext = text => {
|
|
|
203
199
|
/**
|
|
204
200
|
* Tokenize and extract VIN candidates from raw text
|
|
205
201
|
* Includes OCR error correction and context-aware extraction
|
|
206
|
-
*
|
|
202
|
+
* Only returns full 17-character VIN candidates
|
|
207
203
|
*/
|
|
208
|
-
const tokenizeCandidate =
|
|
204
|
+
const tokenizeCandidate = value => {
|
|
209
205
|
'worklet';
|
|
210
206
|
|
|
211
207
|
const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/;
|
|
212
|
-
const includePartial = (options === null || options === void 0 ? void 0 : options.includePartial) ?? false;
|
|
213
|
-
const minPartialLength = (options === null || options === void 0 ? void 0 : options.minPartialLength) ?? 13;
|
|
214
208
|
if (!value) {
|
|
215
209
|
return [];
|
|
216
210
|
}
|
|
@@ -224,13 +218,7 @@ const tokenizeCandidate = (value, options) => {
|
|
|
224
218
|
const cleaned = normalized.replace(/[^A-Z0-9]/g, ' ');
|
|
225
219
|
const tokens = cleaned.split(/\s+/).filter(token => token.length > 0);
|
|
226
220
|
tokens.forEach(token => {
|
|
227
|
-
//
|
|
228
|
-
if (includePartial && token.length >= minPartialLength && token.length < 17) {
|
|
229
|
-
const PARTIAL_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${token.length}}$`);
|
|
230
|
-
if (PARTIAL_PATTERN.test(token)) {
|
|
231
|
-
matches.add(token);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
221
|
+
// Only process tokens that are at least 17 characters
|
|
234
222
|
if (token.length < 17) {
|
|
235
223
|
return;
|
|
236
224
|
}
|
|
@@ -256,26 +244,6 @@ const tokenizeCandidate = (value, options) => {
|
|
|
256
244
|
});
|
|
257
245
|
}
|
|
258
246
|
}
|
|
259
|
-
|
|
260
|
-
// Also check for partial VINs at the start/end of longer strings
|
|
261
|
-
if (includePartial) {
|
|
262
|
-
for (let len = minPartialLength; len < 17 && len <= token.length; len += 1) {
|
|
263
|
-
// Check start of token
|
|
264
|
-
const startCandidate = token.slice(0, len);
|
|
265
|
-
const START_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${len}}$`);
|
|
266
|
-
if (START_PATTERN.test(startCandidate)) {
|
|
267
|
-
matches.add(startCandidate);
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Check end of token
|
|
271
|
-
if (token.length > len) {
|
|
272
|
-
const endCandidate = token.slice(token.length - len);
|
|
273
|
-
if (START_PATTERN.test(endCandidate)) {
|
|
274
|
-
matches.add(endCandidate);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
247
|
});
|
|
280
248
|
return Array.from(matches);
|
|
281
249
|
};
|
|
@@ -358,42 +326,48 @@ const toBoundingBox = (candidate, preferred) => {
|
|
|
358
326
|
|
|
359
327
|
/**
|
|
360
328
|
* Calculate confidence score for a barcode-based VIN candidate
|
|
361
|
-
* Barcodes are
|
|
329
|
+
* Barcodes/QR codes are hard values, so they should always return 100% confidence
|
|
362
330
|
*/
|
|
363
331
|
const calculateBarcodeConfidence = (value, validateChecksum) => {
|
|
364
332
|
'worklet';
|
|
365
333
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
// Check digit validation
|
|
334
|
+
// Barcodes/QR codes are hard values - always 100% confidence for valid VINs
|
|
369
335
|
const checksumValid = isValidVin(value);
|
|
370
336
|
if (checksumValid) {
|
|
371
|
-
|
|
372
|
-
}
|
|
373
|
-
|
|
337
|
+
return 1.0; // 100% confidence for valid VINs from barcodes
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
// If validation is disabled, still return high confidence
|
|
341
|
+
if (!validateChecksum) {
|
|
342
|
+
return 0.95;
|
|
374
343
|
}
|
|
375
|
-
|
|
344
|
+
|
|
345
|
+
// Invalid VINs should not be returned (handled by caller)
|
|
346
|
+
return 0;
|
|
376
347
|
};
|
|
377
|
-
const candidateFromBarcode = (detection, validateChecksum
|
|
348
|
+
const candidateFromBarcode = (detection, validateChecksum) => {
|
|
378
349
|
'worklet';
|
|
379
350
|
|
|
380
351
|
const values = new Set();
|
|
381
|
-
tokenizeCandidate(detection.rawValue ?? ''
|
|
382
|
-
tokenizeCandidate(detection.displayValue ?? ''
|
|
352
|
+
tokenizeCandidate(detection.rawValue ?? '').forEach(value => values.add(value));
|
|
353
|
+
tokenizeCandidate(detection.displayValue ?? '').forEach(value => values.add(value));
|
|
383
354
|
const boundingBox = toBoundingBox(detection, 'barcode');
|
|
384
|
-
return Array.from(values).
|
|
385
|
-
|
|
355
|
+
return Array.from(values).filter(value => {
|
|
356
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
357
|
+
if (validateChecksum) {
|
|
358
|
+
return isValidVin(value);
|
|
359
|
+
}
|
|
360
|
+
// If validation is disabled, still only return 17-character VINs
|
|
361
|
+
return value.length === 17;
|
|
362
|
+
}).map(value => {
|
|
386
363
|
const confidence = calculateBarcodeConfidence(value, validateChecksum);
|
|
387
364
|
return {
|
|
388
365
|
value,
|
|
389
366
|
source: 'barcode',
|
|
390
|
-
confidence
|
|
391
|
-
// Lower confidence for partial
|
|
367
|
+
confidence,
|
|
392
368
|
boundingBox,
|
|
393
369
|
origin: detection.displayValue ? 'displayValue' : 'rawValue',
|
|
394
|
-
rawPayload: detection
|
|
395
|
-
isPartial,
|
|
396
|
-
partialLength: isPartial ? value.length : undefined
|
|
370
|
+
rawPayload: detection
|
|
397
371
|
};
|
|
398
372
|
});
|
|
399
373
|
};
|
|
@@ -434,7 +408,7 @@ const calculateTextConfidence = (value, rawText, origin, validateChecksum) => {
|
|
|
434
408
|
// Cap at 0.98 (never 1.0 for text recognition)
|
|
435
409
|
return Math.min(confidence, 0.98);
|
|
436
410
|
};
|
|
437
|
-
const candidateFromText = (detection, validateChecksum
|
|
411
|
+
const candidateFromText = (detection, validateChecksum) => {
|
|
438
412
|
'worklet';
|
|
439
413
|
|
|
440
414
|
const valueMap = new Map();
|
|
@@ -457,7 +431,7 @@ const candidateFromText = (detection, validateChecksum, options) => {
|
|
|
457
431
|
order
|
|
458
432
|
}) => {
|
|
459
433
|
if (text) {
|
|
460
|
-
tokenizeCandidate(text
|
|
434
|
+
tokenizeCandidate(text).forEach(v => {
|
|
461
435
|
var _valueMap$get;
|
|
462
436
|
if (!valueMap.has(v) || (((_valueMap$get = valueMap.get(v)) === null || _valueMap$get === void 0 ? void 0 : _valueMap$get.order) ?? 999) > order) {
|
|
463
437
|
valueMap.set(v, {
|
|
@@ -469,23 +443,26 @@ const candidateFromText = (detection, validateChecksum, options) => {
|
|
|
469
443
|
}
|
|
470
444
|
});
|
|
471
445
|
const boundingBox = toBoundingBox(detection, 'line') ?? toBoundingBox(detection, 'element') ?? toBoundingBox(detection, 'block');
|
|
472
|
-
return Array.from(valueMap.entries()).
|
|
446
|
+
return Array.from(valueMap.entries()).filter(([value]) => {
|
|
447
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
448
|
+
if (validateChecksum) {
|
|
449
|
+
return isValidVin(value);
|
|
450
|
+
}
|
|
451
|
+
// If validation is disabled, still only return 17-character VINs
|
|
452
|
+
return value.length === 17;
|
|
453
|
+
}).map(([value, {
|
|
473
454
|
rawText
|
|
474
455
|
}]) => {
|
|
475
456
|
var _detection$elementTex, _detection$lineText;
|
|
476
457
|
const origin = (_detection$elementTex = detection.elementText) !== null && _detection$elementTex !== void 0 && _detection$elementTex.includes(value) ? 'element' : (_detection$lineText = detection.lineText) !== null && _detection$lineText !== void 0 && _detection$lineText.includes(value) ? 'line' : 'block';
|
|
477
|
-
const isPartial = value.length < 17;
|
|
478
458
|
const confidence = calculateTextConfidence(value, rawText, origin, validateChecksum);
|
|
479
459
|
return {
|
|
480
460
|
value,
|
|
481
461
|
source: 'text',
|
|
482
|
-
confidence
|
|
483
|
-
// Lower confidence for partial
|
|
462
|
+
confidence,
|
|
484
463
|
boundingBox,
|
|
485
464
|
origin,
|
|
486
|
-
rawPayload: detection
|
|
487
|
-
isPartial,
|
|
488
|
-
partialLength: isPartial ? value.length : undefined
|
|
465
|
+
rawPayload: detection
|
|
489
466
|
};
|
|
490
467
|
});
|
|
491
468
|
};
|
|
@@ -507,18 +484,14 @@ const buildVinCandidates = (payload, options) => {
|
|
|
507
484
|
'worklet';
|
|
508
485
|
|
|
509
486
|
const list = [];
|
|
510
|
-
const partialOptions = {
|
|
511
|
-
includePartial: options.detection.includePartialVins,
|
|
512
|
-
minPartialLength: options.detection.minPartialLength
|
|
513
|
-
};
|
|
514
487
|
if (options.barcode.enabled) {
|
|
515
488
|
(payload.barcodes ?? []).forEach(barcode => {
|
|
516
|
-
list.push(...candidateFromBarcode(barcode, options.detection.validateChecksum
|
|
489
|
+
list.push(...candidateFromBarcode(barcode, options.detection.validateChecksum));
|
|
517
490
|
});
|
|
518
491
|
}
|
|
519
492
|
if (options.text.enabled) {
|
|
520
493
|
(payload.textBlocks ?? []).forEach(textBlock => {
|
|
521
|
-
list.push(...candidateFromText(textBlock, options.detection.validateChecksum
|
|
494
|
+
list.push(...candidateFromText(textBlock, options.detection.validateChecksum));
|
|
522
495
|
});
|
|
523
496
|
}
|
|
524
497
|
return dedupeCandidates(list);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_RESOLVED_OPTIONS","barcode","enabled","formats","text","language","detection","resultMode","preferBarcode","validateChecksum","emitDuplicates","includePartialVins","minPartialLength","maxFrameRate","forceOrientation","resolveOptions","options","_options$detection","_options$detection2","_options$barcode","_options$barcode2","_options$text","_options$text2","_options$detection3","_options$detection4","_options$detection5","_options$detection6","_options$detection7","_options$detection8","length","exports","transliteration","A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z","weights","OCR_SUBSTITUTIONS","generateSubstitutionCandidates","value","maxSubstitutions","candidates","Set","positions","i","char","push","positionsToTry","slice","generate","current","posIndex","substitutionCount","add","pos","undefined","replacements","forEach","replacement","newValue","Array","from","extractWithContext","matches","VIN_PATTERN","patterns","pattern","match","exec","captured","replace","candidate","toUpperCase","test","tokenizeCandidate","includePartial","normalized","vin","cleaned","tokens","split","filter","token","PARTIAL_PATTERN","RegExp","hasSubstitutableChars","substitutions","sub","len","startCandidate","START_PATTERN","endCandidate","isValidVin","chars","sum","numeric","Number","parseInt","weight","remainder","expected","toString","checkDigit","toBoundingBox","preferred","maybe","top","bottom","left","right","width","height","block","blockBox","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineBox","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementBox","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","calculateBarcodeConfidence","confidence","checksumValid","candidateFromBarcode","values","rawValue","displayValue","boundingBox","map","isPartial","source","origin","rawPayload","partialLength","calculateTextConfidence","rawText","hasVinPrefix","Math","min","candidateFromText","valueMap","Map","elementText","order","lineText","blockText","resultText","v","_valueMap$get","has","get","set","entries","_detection$elementTex","_detection$lineText","includes","dedupeCandidates","_candidate$boundingBo","_candidate$boundingBo2","key","join","existing","buildVinCandidates","payload","list","partialOptions","barcodes","textBlocks","textBlock","pickBestCandidate","sorted","sort","a","b"],"sourceRoot":"../../src","sources":["vinUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DEFAULT_RESOLVED_OPTIONS","barcode","enabled","formats","text","language","detection","resultMode","preferBarcode","validateChecksum","emitDuplicates","maxFrameRate","forceOrientation","resolveOptions","options","_options$detection","_options$detection2","_options$barcode","_options$barcode2","_options$text","_options$text2","_options$detection3","_options$detection4","_options$detection5","_options$detection6","length","exports","transliteration","A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z","weights","OCR_SUBSTITUTIONS","generateSubstitutionCandidates","value","maxSubstitutions","candidates","Set","positions","i","char","push","positionsToTry","slice","generate","current","posIndex","substitutionCount","add","pos","undefined","replacements","forEach","replacement","newValue","Array","from","extractWithContext","matches","VIN_PATTERN","patterns","pattern","match","exec","captured","replace","candidate","toUpperCase","test","tokenizeCandidate","normalized","vin","cleaned","tokens","split","filter","token","hasSubstitutableChars","substitutions","sub","isValidVin","chars","sum","numeric","Number","parseInt","weight","remainder","expected","toString","checkDigit","toBoundingBox","preferred","maybe","top","bottom","left","right","width","height","block","blockBox","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineBox","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementBox","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","calculateBarcodeConfidence","checksumValid","candidateFromBarcode","values","rawValue","displayValue","boundingBox","map","confidence","source","origin","rawPayload","calculateTextConfidence","rawText","hasVinPrefix","Math","min","candidateFromText","valueMap","Map","elementText","order","lineText","blockText","resultText","v","_valueMap$get","has","get","set","entries","_detection$elementTex","_detection$lineText","includes","dedupeCandidates","_candidate$boundingBo","_candidate$boundingBo2","key","join","existing","buildVinCandidates","payload","list","barcodes","textBlocks","textBlock","pickBestCandidate","sorted","sort","a","b"],"sourceRoot":"../../src","sources":["vinUtils.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/vinUtils.js
CHANGED
|
@@ -27,8 +27,6 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
27
27
|
preferBarcode: true,
|
|
28
28
|
validateChecksum: true,
|
|
29
29
|
emitDuplicates: false,
|
|
30
|
-
includePartialVins: false,
|
|
31
|
-
minPartialLength: 13,
|
|
32
30
|
maxFrameRate: 30,
|
|
33
31
|
forceOrientation: null
|
|
34
32
|
}
|
|
@@ -36,7 +34,7 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
36
34
|
export const resolveOptions = options => {
|
|
37
35
|
'worklet';
|
|
38
36
|
|
|
39
|
-
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6
|
|
37
|
+
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6;
|
|
40
38
|
const resultMode = (options === null || options === void 0 || (_options$detection = options.detection) === null || _options$detection === void 0 ? void 0 : _options$detection.resultMode) ?? DEFAULT_RESOLVED_OPTIONS.detection.resultMode;
|
|
41
39
|
const emitDuplicates = (options === null || options === void 0 || (_options$detection2 = options.detection) === null || _options$detection2 === void 0 ? void 0 : _options$detection2.emitDuplicates) ?? (resultMode === 'all' ? true : DEFAULT_RESOLVED_OPTIONS.detection.emitDuplicates);
|
|
42
40
|
return {
|
|
@@ -53,10 +51,8 @@ export const resolveOptions = options => {
|
|
|
53
51
|
preferBarcode: (options === null || options === void 0 || (_options$detection3 = options.detection) === null || _options$detection3 === void 0 ? void 0 : _options$detection3.preferBarcode) ?? DEFAULT_RESOLVED_OPTIONS.detection.preferBarcode,
|
|
54
52
|
validateChecksum: (options === null || options === void 0 || (_options$detection4 = options.detection) === null || _options$detection4 === void 0 ? void 0 : _options$detection4.validateChecksum) ?? DEFAULT_RESOLVED_OPTIONS.detection.validateChecksum,
|
|
55
53
|
emitDuplicates,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
maxFrameRate: (options === null || options === void 0 || (_options$detection7 = options.detection) === null || _options$detection7 === void 0 ? void 0 : _options$detection7.maxFrameRate) ?? DEFAULT_RESOLVED_OPTIONS.detection.maxFrameRate,
|
|
59
|
-
forceOrientation: (options === null || options === void 0 || (_options$detection8 = options.detection) === null || _options$detection8 === void 0 ? void 0 : _options$detection8.forceOrientation) ?? DEFAULT_RESOLVED_OPTIONS.detection.forceOrientation
|
|
54
|
+
maxFrameRate: (options === null || options === void 0 || (_options$detection5 = options.detection) === null || _options$detection5 === void 0 ? void 0 : _options$detection5.maxFrameRate) ?? DEFAULT_RESOLVED_OPTIONS.detection.maxFrameRate,
|
|
55
|
+
forceOrientation: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.forceOrientation) ?? DEFAULT_RESOLVED_OPTIONS.detection.forceOrientation
|
|
60
56
|
}
|
|
61
57
|
};
|
|
62
58
|
};
|
|
@@ -196,14 +192,12 @@ const extractWithContext = text => {
|
|
|
196
192
|
/**
|
|
197
193
|
* Tokenize and extract VIN candidates from raw text
|
|
198
194
|
* Includes OCR error correction and context-aware extraction
|
|
199
|
-
*
|
|
195
|
+
* Only returns full 17-character VIN candidates
|
|
200
196
|
*/
|
|
201
|
-
const tokenizeCandidate =
|
|
197
|
+
const tokenizeCandidate = value => {
|
|
202
198
|
'worklet';
|
|
203
199
|
|
|
204
200
|
const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/;
|
|
205
|
-
const includePartial = (options === null || options === void 0 ? void 0 : options.includePartial) ?? false;
|
|
206
|
-
const minPartialLength = (options === null || options === void 0 ? void 0 : options.minPartialLength) ?? 13;
|
|
207
201
|
if (!value) {
|
|
208
202
|
return [];
|
|
209
203
|
}
|
|
@@ -217,13 +211,7 @@ const tokenizeCandidate = (value, options) => {
|
|
|
217
211
|
const cleaned = normalized.replace(/[^A-Z0-9]/g, ' ');
|
|
218
212
|
const tokens = cleaned.split(/\s+/).filter(token => token.length > 0);
|
|
219
213
|
tokens.forEach(token => {
|
|
220
|
-
//
|
|
221
|
-
if (includePartial && token.length >= minPartialLength && token.length < 17) {
|
|
222
|
-
const PARTIAL_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${token.length}}$`);
|
|
223
|
-
if (PARTIAL_PATTERN.test(token)) {
|
|
224
|
-
matches.add(token);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
214
|
+
// Only process tokens that are at least 17 characters
|
|
227
215
|
if (token.length < 17) {
|
|
228
216
|
return;
|
|
229
217
|
}
|
|
@@ -249,26 +237,6 @@ const tokenizeCandidate = (value, options) => {
|
|
|
249
237
|
});
|
|
250
238
|
}
|
|
251
239
|
}
|
|
252
|
-
|
|
253
|
-
// Also check for partial VINs at the start/end of longer strings
|
|
254
|
-
if (includePartial) {
|
|
255
|
-
for (let len = minPartialLength; len < 17 && len <= token.length; len += 1) {
|
|
256
|
-
// Check start of token
|
|
257
|
-
const startCandidate = token.slice(0, len);
|
|
258
|
-
const START_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${len}}$`);
|
|
259
|
-
if (START_PATTERN.test(startCandidate)) {
|
|
260
|
-
matches.add(startCandidate);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Check end of token
|
|
264
|
-
if (token.length > len) {
|
|
265
|
-
const endCandidate = token.slice(token.length - len);
|
|
266
|
-
if (START_PATTERN.test(endCandidate)) {
|
|
267
|
-
matches.add(endCandidate);
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
240
|
});
|
|
273
241
|
return Array.from(matches);
|
|
274
242
|
};
|
|
@@ -350,42 +318,48 @@ const toBoundingBox = (candidate, preferred) => {
|
|
|
350
318
|
|
|
351
319
|
/**
|
|
352
320
|
* Calculate confidence score for a barcode-based VIN candidate
|
|
353
|
-
* Barcodes are
|
|
321
|
+
* Barcodes/QR codes are hard values, so they should always return 100% confidence
|
|
354
322
|
*/
|
|
355
323
|
const calculateBarcodeConfidence = (value, validateChecksum) => {
|
|
356
324
|
'worklet';
|
|
357
325
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
// Check digit validation
|
|
326
|
+
// Barcodes/QR codes are hard values - always 100% confidence for valid VINs
|
|
361
327
|
const checksumValid = isValidVin(value);
|
|
362
328
|
if (checksumValid) {
|
|
363
|
-
|
|
364
|
-
}
|
|
365
|
-
|
|
329
|
+
return 1.0; // 100% confidence for valid VINs from barcodes
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
// If validation is disabled, still return high confidence
|
|
333
|
+
if (!validateChecksum) {
|
|
334
|
+
return 0.95;
|
|
366
335
|
}
|
|
367
|
-
|
|
336
|
+
|
|
337
|
+
// Invalid VINs should not be returned (handled by caller)
|
|
338
|
+
return 0;
|
|
368
339
|
};
|
|
369
|
-
const candidateFromBarcode = (detection, validateChecksum
|
|
340
|
+
const candidateFromBarcode = (detection, validateChecksum) => {
|
|
370
341
|
'worklet';
|
|
371
342
|
|
|
372
343
|
const values = new Set();
|
|
373
|
-
tokenizeCandidate(detection.rawValue ?? ''
|
|
374
|
-
tokenizeCandidate(detection.displayValue ?? ''
|
|
344
|
+
tokenizeCandidate(detection.rawValue ?? '').forEach(value => values.add(value));
|
|
345
|
+
tokenizeCandidate(detection.displayValue ?? '').forEach(value => values.add(value));
|
|
375
346
|
const boundingBox = toBoundingBox(detection, 'barcode');
|
|
376
|
-
return Array.from(values).
|
|
377
|
-
|
|
347
|
+
return Array.from(values).filter(value => {
|
|
348
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
349
|
+
if (validateChecksum) {
|
|
350
|
+
return isValidVin(value);
|
|
351
|
+
}
|
|
352
|
+
// If validation is disabled, still only return 17-character VINs
|
|
353
|
+
return value.length === 17;
|
|
354
|
+
}).map(value => {
|
|
378
355
|
const confidence = calculateBarcodeConfidence(value, validateChecksum);
|
|
379
356
|
return {
|
|
380
357
|
value,
|
|
381
358
|
source: 'barcode',
|
|
382
|
-
confidence
|
|
383
|
-
// Lower confidence for partial
|
|
359
|
+
confidence,
|
|
384
360
|
boundingBox,
|
|
385
361
|
origin: detection.displayValue ? 'displayValue' : 'rawValue',
|
|
386
|
-
rawPayload: detection
|
|
387
|
-
isPartial,
|
|
388
|
-
partialLength: isPartial ? value.length : undefined
|
|
362
|
+
rawPayload: detection
|
|
389
363
|
};
|
|
390
364
|
});
|
|
391
365
|
};
|
|
@@ -426,7 +400,7 @@ const calculateTextConfidence = (value, rawText, origin, validateChecksum) => {
|
|
|
426
400
|
// Cap at 0.98 (never 1.0 for text recognition)
|
|
427
401
|
return Math.min(confidence, 0.98);
|
|
428
402
|
};
|
|
429
|
-
const candidateFromText = (detection, validateChecksum
|
|
403
|
+
const candidateFromText = (detection, validateChecksum) => {
|
|
430
404
|
'worklet';
|
|
431
405
|
|
|
432
406
|
const valueMap = new Map();
|
|
@@ -449,7 +423,7 @@ const candidateFromText = (detection, validateChecksum, options) => {
|
|
|
449
423
|
order
|
|
450
424
|
}) => {
|
|
451
425
|
if (text) {
|
|
452
|
-
tokenizeCandidate(text
|
|
426
|
+
tokenizeCandidate(text).forEach(v => {
|
|
453
427
|
var _valueMap$get;
|
|
454
428
|
if (!valueMap.has(v) || (((_valueMap$get = valueMap.get(v)) === null || _valueMap$get === void 0 ? void 0 : _valueMap$get.order) ?? 999) > order) {
|
|
455
429
|
valueMap.set(v, {
|
|
@@ -461,23 +435,26 @@ const candidateFromText = (detection, validateChecksum, options) => {
|
|
|
461
435
|
}
|
|
462
436
|
});
|
|
463
437
|
const boundingBox = toBoundingBox(detection, 'line') ?? toBoundingBox(detection, 'element') ?? toBoundingBox(detection, 'block');
|
|
464
|
-
return Array.from(valueMap.entries()).
|
|
438
|
+
return Array.from(valueMap.entries()).filter(([value]) => {
|
|
439
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
440
|
+
if (validateChecksum) {
|
|
441
|
+
return isValidVin(value);
|
|
442
|
+
}
|
|
443
|
+
// If validation is disabled, still only return 17-character VINs
|
|
444
|
+
return value.length === 17;
|
|
445
|
+
}).map(([value, {
|
|
465
446
|
rawText
|
|
466
447
|
}]) => {
|
|
467
448
|
var _detection$elementTex, _detection$lineText;
|
|
468
449
|
const origin = (_detection$elementTex = detection.elementText) !== null && _detection$elementTex !== void 0 && _detection$elementTex.includes(value) ? 'element' : (_detection$lineText = detection.lineText) !== null && _detection$lineText !== void 0 && _detection$lineText.includes(value) ? 'line' : 'block';
|
|
469
|
-
const isPartial = value.length < 17;
|
|
470
450
|
const confidence = calculateTextConfidence(value, rawText, origin, validateChecksum);
|
|
471
451
|
return {
|
|
472
452
|
value,
|
|
473
453
|
source: 'text',
|
|
474
|
-
confidence
|
|
475
|
-
// Lower confidence for partial
|
|
454
|
+
confidence,
|
|
476
455
|
boundingBox,
|
|
477
456
|
origin,
|
|
478
|
-
rawPayload: detection
|
|
479
|
-
isPartial,
|
|
480
|
-
partialLength: isPartial ? value.length : undefined
|
|
457
|
+
rawPayload: detection
|
|
481
458
|
};
|
|
482
459
|
});
|
|
483
460
|
};
|
|
@@ -499,18 +476,14 @@ export const buildVinCandidates = (payload, options) => {
|
|
|
499
476
|
'worklet';
|
|
500
477
|
|
|
501
478
|
const list = [];
|
|
502
|
-
const partialOptions = {
|
|
503
|
-
includePartial: options.detection.includePartialVins,
|
|
504
|
-
minPartialLength: options.detection.minPartialLength
|
|
505
|
-
};
|
|
506
479
|
if (options.barcode.enabled) {
|
|
507
480
|
(payload.barcodes ?? []).forEach(barcode => {
|
|
508
|
-
list.push(...candidateFromBarcode(barcode, options.detection.validateChecksum
|
|
481
|
+
list.push(...candidateFromBarcode(barcode, options.detection.validateChecksum));
|
|
509
482
|
});
|
|
510
483
|
}
|
|
511
484
|
if (options.text.enabled) {
|
|
512
485
|
(payload.textBlocks ?? []).forEach(textBlock => {
|
|
513
|
-
list.push(...candidateFromText(textBlock, options.detection.validateChecksum
|
|
486
|
+
list.push(...candidateFromText(textBlock, options.detection.validateChecksum));
|
|
514
487
|
});
|
|
515
488
|
}
|
|
516
489
|
return dedupeCandidates(list);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_RESOLVED_OPTIONS","barcode","enabled","formats","text","language","detection","resultMode","preferBarcode","validateChecksum","emitDuplicates","includePartialVins","minPartialLength","maxFrameRate","forceOrientation","resolveOptions","options","_options$detection","_options$detection2","_options$barcode","_options$barcode2","_options$text","_options$text2","_options$detection3","_options$detection4","_options$detection5","_options$detection6","_options$detection7","_options$detection8","length","transliteration","A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z","weights","OCR_SUBSTITUTIONS","generateSubstitutionCandidates","value","maxSubstitutions","candidates","Set","positions","i","char","push","positionsToTry","slice","generate","current","posIndex","substitutionCount","add","pos","undefined","replacements","forEach","replacement","newValue","Array","from","extractWithContext","matches","VIN_PATTERN","patterns","pattern","match","exec","captured","replace","candidate","toUpperCase","test","tokenizeCandidate","includePartial","normalized","vin","cleaned","tokens","split","filter","token","PARTIAL_PATTERN","RegExp","hasSubstitutableChars","substitutions","sub","len","startCandidate","START_PATTERN","endCandidate","isValidVin","chars","sum","numeric","Number","parseInt","weight","remainder","expected","toString","checkDigit","toBoundingBox","preferred","maybe","top","bottom","left","right","width","height","block","blockBox","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineBox","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementBox","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","calculateBarcodeConfidence","confidence","checksumValid","candidateFromBarcode","values","rawValue","displayValue","boundingBox","map","isPartial","source","origin","rawPayload","partialLength","calculateTextConfidence","rawText","hasVinPrefix","Math","min","candidateFromText","valueMap","Map","elementText","order","lineText","blockText","resultText","v","_valueMap$get","has","get","set","entries","_detection$elementTex","_detection$lineText","includes","dedupeCandidates","_candidate$boundingBo","_candidate$boundingBo2","key","join","existing","buildVinCandidates","payload","list","partialOptions","barcodes","textBlocks","textBlock","pickBestCandidate","sorted","sort","a","b"],"sourceRoot":"../../src","sources":["vinUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["DEFAULT_RESOLVED_OPTIONS","barcode","enabled","formats","text","language","detection","resultMode","preferBarcode","validateChecksum","emitDuplicates","maxFrameRate","forceOrientation","resolveOptions","options","_options$detection","_options$detection2","_options$barcode","_options$barcode2","_options$text","_options$text2","_options$detection3","_options$detection4","_options$detection5","_options$detection6","length","transliteration","A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z","weights","OCR_SUBSTITUTIONS","generateSubstitutionCandidates","value","maxSubstitutions","candidates","Set","positions","i","char","push","positionsToTry","slice","generate","current","posIndex","substitutionCount","add","pos","undefined","replacements","forEach","replacement","newValue","Array","from","extractWithContext","matches","VIN_PATTERN","patterns","pattern","match","exec","captured","replace","candidate","toUpperCase","test","tokenizeCandidate","normalized","vin","cleaned","tokens","split","filter","token","hasSubstitutableChars","substitutions","sub","isValidVin","chars","sum","numeric","Number","parseInt","weight","remainder","expected","toString","checkDigit","toBoundingBox","preferred","maybe","top","bottom","left","right","width","height","block","blockBox","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineBox","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementBox","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","calculateBarcodeConfidence","checksumValid","candidateFromBarcode","values","rawValue","displayValue","boundingBox","map","confidence","source","origin","rawPayload","calculateTextConfidence","rawText","hasVinPrefix","Math","min","candidateFromText","valueMap","Map","elementText","order","lineText","blockText","resultText","v","_valueMap$get","has","get","set","entries","_detection$elementTex","_detection$lineText","includes","dedupeCandidates","_candidate$boundingBo","_candidate$boundingBo2","key","join","existing","buildVinCandidates","payload","list","barcodes","textBlocks","textBlock","pickBestCandidate","sorted","sort","a","b"],"sourceRoot":"../../src","sources":["vinUtils.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -61,8 +61,6 @@ export type VinCandidate = {
|
|
|
61
61
|
boundingBox?: BoundingBox;
|
|
62
62
|
origin?: 'rawValue' | 'displayValue' | 'block' | 'line' | 'element';
|
|
63
63
|
rawPayload?: BarcodeDetection | TextDetection;
|
|
64
|
-
isPartial?: boolean;
|
|
65
|
-
partialLength?: number;
|
|
66
64
|
};
|
|
67
65
|
export type VinScannerEvent = {
|
|
68
66
|
mode: VinResultMode;
|
|
@@ -87,8 +85,6 @@ export type DetectionOptions = {
|
|
|
87
85
|
preferBarcode?: boolean;
|
|
88
86
|
validateChecksum?: boolean;
|
|
89
87
|
emitDuplicates?: boolean;
|
|
90
|
-
includePartialVins?: boolean;
|
|
91
|
-
minPartialLength?: number;
|
|
92
88
|
/**
|
|
93
89
|
* Maximum frame rate (in FPS) at which the frame processor should execute.
|
|
94
90
|
* Frames that arrive faster than this budget are dropped to keep the
|
|
@@ -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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"}
|
|
@@ -24,8 +24,6 @@ export type ResolvedVinScannerOptions = {
|
|
|
24
24
|
};
|
|
25
25
|
detection: Required<DetectionOptions> & {
|
|
26
26
|
resultMode: VinResultMode;
|
|
27
|
-
includePartialVins: boolean;
|
|
28
|
-
minPartialLength: number;
|
|
29
27
|
maxFrameRate: number;
|
|
30
28
|
forceOrientation: FrameOrientation | null;
|
|
31
29
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vinUtils.d.ts","sourceRoot":"","sources":["../../../src/vinUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAElB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,kBAAkB,CAAC;KAC7B,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,uBAAuB,CAAC;KACnC,CAAC;IACF,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG;QACtC,UAAU,EAAE,aAAa,CAAC;QAC1B,
|
|
1
|
+
{"version":3,"file":"vinUtils.d.ts","sourceRoot":"","sources":["../../../src/vinUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAEV,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAElB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,cAAc,EACf,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,kBAAkB,CAAC;KAC7B,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,uBAAuB,CAAC;KACnC,CAAC;IACF,SAAS,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG;QACtC,UAAU,EAAE,aAAa,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;KAC3C,CAAC;CACH,CAAC;AAqBF,eAAO,MAAM,cAAc,GACzB,UAAU,iBAAiB,KAC1B,yBAyCF,CAAC;AAwMF,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,OA6B1C,CAAC;AAoRF,eAAO,MAAM,kBAAkB,GAC7B,SAAS,cAAc,EACvB,SAAS,yBAAyB,KACjC,YAAY,EAmBd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,YAAY,YAAY,EAAE,EAC1B,SAAS,yBAAyB,KACjC,YAAY,GAAG,IAejB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mleonard9/vin-scanner",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "High-performance VIN scanner for React Native Vision Camera powered by Google ML Kit barcode + text recognition.",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
package/src/types.ts
CHANGED
|
@@ -100,8 +100,6 @@ export type VinCandidate = {
|
|
|
100
100
|
boundingBox?: BoundingBox;
|
|
101
101
|
origin?: 'rawValue' | 'displayValue' | 'block' | 'line' | 'element';
|
|
102
102
|
rawPayload?: BarcodeDetection | TextDetection;
|
|
103
|
-
isPartial?: boolean; // True if VIN is incomplete (< 17 characters)
|
|
104
|
-
partialLength?: number; // Length of partial VIN if isPartial is true
|
|
105
103
|
};
|
|
106
104
|
|
|
107
105
|
export type VinScannerEvent = {
|
|
@@ -130,8 +128,6 @@ export type DetectionOptions = {
|
|
|
130
128
|
preferBarcode?: boolean;
|
|
131
129
|
validateChecksum?: boolean;
|
|
132
130
|
emitDuplicates?: boolean;
|
|
133
|
-
includePartialVins?: boolean; // Allow detection of incomplete VINs (13-16 chars)
|
|
134
|
-
minPartialLength?: number; // Minimum length for partial VINs (default: 13)
|
|
135
131
|
/**
|
|
136
132
|
* Maximum frame rate (in FPS) at which the frame processor should execute.
|
|
137
133
|
* Frames that arrive faster than this budget are dropped to keep the
|
package/src/vinUtils.ts
CHANGED
|
@@ -37,8 +37,6 @@ export type ResolvedVinScannerOptions = {
|
|
|
37
37
|
};
|
|
38
38
|
detection: Required<DetectionOptions> & {
|
|
39
39
|
resultMode: VinResultMode;
|
|
40
|
-
includePartialVins: boolean;
|
|
41
|
-
minPartialLength: number;
|
|
42
40
|
maxFrameRate: number;
|
|
43
41
|
forceOrientation: FrameOrientation | null;
|
|
44
42
|
};
|
|
@@ -58,8 +56,6 @@ const DEFAULT_RESOLVED_OPTIONS: ResolvedVinScannerOptions = {
|
|
|
58
56
|
preferBarcode: true,
|
|
59
57
|
validateChecksum: true,
|
|
60
58
|
emitDuplicates: false,
|
|
61
|
-
includePartialVins: false,
|
|
62
|
-
minPartialLength: 13,
|
|
63
59
|
maxFrameRate: 30,
|
|
64
60
|
forceOrientation: null,
|
|
65
61
|
},
|
|
@@ -100,12 +96,6 @@ export const resolveOptions = (
|
|
|
100
96
|
options?.detection?.validateChecksum ??
|
|
101
97
|
DEFAULT_RESOLVED_OPTIONS.detection.validateChecksum,
|
|
102
98
|
emitDuplicates,
|
|
103
|
-
includePartialVins:
|
|
104
|
-
options?.detection?.includePartialVins ??
|
|
105
|
-
DEFAULT_RESOLVED_OPTIONS.detection.includePartialVins,
|
|
106
|
-
minPartialLength:
|
|
107
|
-
options?.detection?.minPartialLength ??
|
|
108
|
-
DEFAULT_RESOLVED_OPTIONS.detection.minPartialLength,
|
|
109
99
|
maxFrameRate:
|
|
110
100
|
options?.detection?.maxFrameRate ??
|
|
111
101
|
DEFAULT_RESOLVED_OPTIONS.detection.maxFrameRate,
|
|
@@ -262,16 +252,11 @@ const extractWithContext = (text: string): string[] => {
|
|
|
262
252
|
/**
|
|
263
253
|
* Tokenize and extract VIN candidates from raw text
|
|
264
254
|
* Includes OCR error correction and context-aware extraction
|
|
265
|
-
*
|
|
255
|
+
* Only returns full 17-character VIN candidates
|
|
266
256
|
*/
|
|
267
|
-
const tokenizeCandidate = (
|
|
268
|
-
value: string,
|
|
269
|
-
options?: { includePartial?: boolean; minPartialLength?: number }
|
|
270
|
-
): string[] => {
|
|
257
|
+
const tokenizeCandidate = (value: string): string[] => {
|
|
271
258
|
'worklet';
|
|
272
259
|
const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/;
|
|
273
|
-
const includePartial = options?.includePartial ?? false;
|
|
274
|
-
const minPartialLength = options?.minPartialLength ?? 13;
|
|
275
260
|
|
|
276
261
|
if (!value) {
|
|
277
262
|
return [];
|
|
@@ -288,18 +273,7 @@ const tokenizeCandidate = (
|
|
|
288
273
|
const tokens = cleaned.split(/\s+/).filter((token) => token.length > 0);
|
|
289
274
|
|
|
290
275
|
tokens.forEach((token) => {
|
|
291
|
-
//
|
|
292
|
-
if (
|
|
293
|
-
includePartial &&
|
|
294
|
-
token.length >= minPartialLength &&
|
|
295
|
-
token.length < 17
|
|
296
|
-
) {
|
|
297
|
-
const PARTIAL_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${token.length}}$`);
|
|
298
|
-
if (PARTIAL_PATTERN.test(token)) {
|
|
299
|
-
matches.add(token);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
276
|
+
// Only process tokens that are at least 17 characters
|
|
303
277
|
if (token.length < 17) {
|
|
304
278
|
return;
|
|
305
279
|
}
|
|
@@ -325,30 +299,6 @@ const tokenizeCandidate = (
|
|
|
325
299
|
});
|
|
326
300
|
}
|
|
327
301
|
}
|
|
328
|
-
|
|
329
|
-
// Also check for partial VINs at the start/end of longer strings
|
|
330
|
-
if (includePartial) {
|
|
331
|
-
for (
|
|
332
|
-
let len = minPartialLength;
|
|
333
|
-
len < 17 && len <= token.length;
|
|
334
|
-
len += 1
|
|
335
|
-
) {
|
|
336
|
-
// Check start of token
|
|
337
|
-
const startCandidate = token.slice(0, len);
|
|
338
|
-
const START_PATTERN = new RegExp(`^[A-HJ-NPR-Z0-9]{${len}}$`);
|
|
339
|
-
if (START_PATTERN.test(startCandidate)) {
|
|
340
|
-
matches.add(startCandidate);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// Check end of token
|
|
344
|
-
if (token.length > len) {
|
|
345
|
-
const endCandidate = token.slice(token.length - len);
|
|
346
|
-
if (START_PATTERN.test(endCandidate)) {
|
|
347
|
-
matches.add(endCandidate);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
302
|
});
|
|
353
303
|
|
|
354
304
|
return Array.from(matches);
|
|
@@ -480,54 +430,61 @@ const toBoundingBox = (
|
|
|
480
430
|
|
|
481
431
|
/**
|
|
482
432
|
* Calculate confidence score for a barcode-based VIN candidate
|
|
483
|
-
* Barcodes are
|
|
433
|
+
* Barcodes/QR codes are hard values, so they should always return 100% confidence
|
|
484
434
|
*/
|
|
485
435
|
const calculateBarcodeConfidence = (
|
|
486
436
|
value: string,
|
|
487
437
|
validateChecksum: boolean
|
|
488
438
|
): number => {
|
|
489
439
|
'worklet';
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
// Check digit validation
|
|
440
|
+
// Barcodes/QR codes are hard values - always 100% confidence for valid VINs
|
|
493
441
|
const checksumValid = isValidVin(value);
|
|
494
442
|
if (checksumValid) {
|
|
495
|
-
|
|
496
|
-
} else if (!validateChecksum) {
|
|
497
|
-
confidence = 0.9; // Still high if validation disabled
|
|
443
|
+
return 1.0; // 100% confidence for valid VINs from barcodes
|
|
498
444
|
}
|
|
499
445
|
|
|
500
|
-
return confidence
|
|
446
|
+
// If validation is disabled, still return high confidence
|
|
447
|
+
if (!validateChecksum) {
|
|
448
|
+
return 0.95;
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
// Invalid VINs should not be returned (handled by caller)
|
|
452
|
+
return 0;
|
|
501
453
|
};
|
|
502
454
|
|
|
503
455
|
const candidateFromBarcode = (
|
|
504
456
|
detection: BarcodeDetection,
|
|
505
|
-
validateChecksum: boolean
|
|
506
|
-
options?: { includePartial?: boolean; minPartialLength?: number }
|
|
457
|
+
validateChecksum: boolean
|
|
507
458
|
): VinCandidate[] => {
|
|
508
459
|
'worklet';
|
|
509
460
|
const values = new Set<string>();
|
|
510
|
-
tokenizeCandidate(detection.rawValue ?? ''
|
|
461
|
+
tokenizeCandidate(detection.rawValue ?? '').forEach((value) =>
|
|
511
462
|
values.add(value)
|
|
512
463
|
);
|
|
513
|
-
tokenizeCandidate(detection.displayValue ?? ''
|
|
464
|
+
tokenizeCandidate(detection.displayValue ?? '').forEach((value) =>
|
|
514
465
|
values.add(value)
|
|
515
466
|
);
|
|
516
467
|
const boundingBox = toBoundingBox(detection, 'barcode');
|
|
517
|
-
return Array.from(values)
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
468
|
+
return Array.from(values)
|
|
469
|
+
.filter((value) => {
|
|
470
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
471
|
+
if (validateChecksum) {
|
|
472
|
+
return isValidVin(value);
|
|
473
|
+
}
|
|
474
|
+
// If validation is disabled, still only return 17-character VINs
|
|
475
|
+
return value.length === 17;
|
|
476
|
+
})
|
|
477
|
+
.map((value) => {
|
|
478
|
+
const confidence = calculateBarcodeConfidence(value, validateChecksum);
|
|
479
|
+
return {
|
|
480
|
+
value,
|
|
481
|
+
source: 'barcode' as const,
|
|
482
|
+
confidence,
|
|
483
|
+
boundingBox,
|
|
484
|
+
origin: detection.displayValue ? 'displayValue' : 'rawValue',
|
|
485
|
+
rawPayload: detection,
|
|
486
|
+
};
|
|
487
|
+
});
|
|
531
488
|
};
|
|
532
489
|
|
|
533
490
|
/**
|
|
@@ -574,8 +531,7 @@ const calculateTextConfidence = (
|
|
|
574
531
|
|
|
575
532
|
const candidateFromText = (
|
|
576
533
|
detection: TextDetection,
|
|
577
|
-
validateChecksum: boolean
|
|
578
|
-
options?: { includePartial?: boolean; minPartialLength?: number }
|
|
534
|
+
validateChecksum: boolean
|
|
579
535
|
): VinCandidate[] => {
|
|
580
536
|
'worklet';
|
|
581
537
|
const valueMap = new Map<string, { rawText: string; order: number }>();
|
|
@@ -588,7 +544,7 @@ const candidateFromText = (
|
|
|
588
544
|
{ text: detection.resultText, order: 4 },
|
|
589
545
|
].forEach(({ text, order }) => {
|
|
590
546
|
if (text) {
|
|
591
|
-
tokenizeCandidate(text
|
|
547
|
+
tokenizeCandidate(text).forEach((v) => {
|
|
592
548
|
if (!valueMap.has(v) || (valueMap.get(v)?.order ?? 999) > order) {
|
|
593
549
|
valueMap.set(v, { rawText: text, order });
|
|
594
550
|
}
|
|
@@ -601,32 +557,38 @@ const candidateFromText = (
|
|
|
601
557
|
toBoundingBox(detection, 'element') ??
|
|
602
558
|
toBoundingBox(detection, 'block');
|
|
603
559
|
|
|
604
|
-
return Array.from(valueMap.entries())
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
560
|
+
return Array.from(valueMap.entries())
|
|
561
|
+
.filter(([value]) => {
|
|
562
|
+
// Only return valid full VINs (17 characters that pass validation)
|
|
563
|
+
if (validateChecksum) {
|
|
564
|
+
return isValidVin(value);
|
|
565
|
+
}
|
|
566
|
+
// If validation is disabled, still only return 17-character VINs
|
|
567
|
+
return value.length === 17;
|
|
568
|
+
})
|
|
569
|
+
.map(([value, { rawText }]) => {
|
|
570
|
+
const origin = detection.elementText?.includes(value)
|
|
571
|
+
? 'element'
|
|
572
|
+
: detection.lineText?.includes(value)
|
|
573
|
+
? 'line'
|
|
574
|
+
: 'block';
|
|
575
|
+
|
|
576
|
+
const confidence = calculateTextConfidence(
|
|
577
|
+
value,
|
|
578
|
+
rawText,
|
|
579
|
+
origin,
|
|
580
|
+
validateChecksum
|
|
581
|
+
);
|
|
582
|
+
|
|
583
|
+
return {
|
|
584
|
+
value,
|
|
585
|
+
source: 'text' as const,
|
|
586
|
+
confidence,
|
|
587
|
+
boundingBox,
|
|
588
|
+
origin,
|
|
589
|
+
rawPayload: detection,
|
|
590
|
+
};
|
|
591
|
+
});
|
|
630
592
|
};
|
|
631
593
|
|
|
632
594
|
const dedupeCandidates = (candidates: VinCandidate[]): VinCandidate[] => {
|
|
@@ -653,30 +615,18 @@ export const buildVinCandidates = (
|
|
|
653
615
|
): VinCandidate[] => {
|
|
654
616
|
'worklet';
|
|
655
617
|
const list: VinCandidate[] = [];
|
|
656
|
-
const partialOptions = {
|
|
657
|
-
includePartial: options.detection.includePartialVins,
|
|
658
|
-
minPartialLength: options.detection.minPartialLength,
|
|
659
|
-
};
|
|
660
618
|
|
|
661
619
|
if (options.barcode.enabled) {
|
|
662
620
|
(payload.barcodes ?? []).forEach((barcode) => {
|
|
663
621
|
list.push(
|
|
664
|
-
...candidateFromBarcode(
|
|
665
|
-
barcode,
|
|
666
|
-
options.detection.validateChecksum,
|
|
667
|
-
partialOptions
|
|
668
|
-
)
|
|
622
|
+
...candidateFromBarcode(barcode, options.detection.validateChecksum)
|
|
669
623
|
);
|
|
670
624
|
});
|
|
671
625
|
}
|
|
672
626
|
if (options.text.enabled) {
|
|
673
627
|
(payload.textBlocks ?? []).forEach((textBlock) => {
|
|
674
628
|
list.push(
|
|
675
|
-
...candidateFromText(
|
|
676
|
-
textBlock,
|
|
677
|
-
options.detection.validateChecksum,
|
|
678
|
-
partialOptions
|
|
679
|
-
)
|
|
629
|
+
...candidateFromText(textBlock, options.detection.validateChecksum)
|
|
680
630
|
);
|
|
681
631
|
});
|
|
682
632
|
}
|