@mleonard9/vin-scanner 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/README.md +9 -0
- package/android/src/main/java/com/visioncamerabarcodescanner/VisionCameraBarcodeScannerModule.kt +96 -54
- package/android/src/main/java/com/visioncamerabarcodescanner/VisionCameraBarcodeScannerPackage.kt +2 -2
- package/android/src/main/java/com/visioncameratextrecognition/VisionCameraTextRecognitionModule.kt +139 -95
- package/ios/VisionCameraBarcodeScanner.m +87 -37
- package/ios/VisionCameraTextRecognition.m +130 -56
- package/lib/commonjs/scanBarcodes.js +76 -6
- package/lib/commonjs/scanBarcodes.js.map +1 -1
- package/lib/commonjs/scanText.js +78 -4
- package/lib/commonjs/scanText.js.map +1 -1
- package/lib/commonjs/useVinScanner.js +20 -3
- package/lib/commonjs/useVinScanner.js.map +1 -1
- package/lib/commonjs/vinUtils.js +7 -3
- package/lib/commonjs/vinUtils.js.map +1 -1
- package/lib/module/scanBarcodes.js +76 -6
- package/lib/module/scanBarcodes.js.map +1 -1
- package/lib/module/scanText.js +78 -4
- package/lib/module/scanText.js.map +1 -1
- package/lib/module/useVinScanner.js +20 -3
- package/lib/module/useVinScanner.js.map +1 -1
- package/lib/module/vinUtils.js +7 -3
- package/lib/module/vinUtils.js.map +1 -1
- package/lib/typescript/src/scanBarcodes.d.ts.map +1 -1
- package/lib/typescript/src/scanText.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +21 -2
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/useVinScanner.d.ts.map +1 -1
- package/lib/typescript/src/vinUtils.d.ts +3 -1
- package/lib/typescript/src/vinUtils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/scanBarcodes.ts +90 -8
- package/src/scanText.ts +93 -4
- package/src/types.ts +31 -2
- package/src/useVinScanner.ts +30 -3
- package/src/vinUtils.ts +11 -0
|
@@ -13,6 +13,7 @@ var _vinUtils = require("./vinUtils");
|
|
|
13
13
|
function useVinScanner(options) {
|
|
14
14
|
const resolvedOptions = (0, _react.useMemo)(() => (0, _vinUtils.resolveOptions)(options), [options]);
|
|
15
15
|
const lastFingerprintRef = (0, _react.useRef)(undefined);
|
|
16
|
+
const lastFrameTimestampRef = (0, _react.useRef)(0);
|
|
16
17
|
const barcodeScanner = (0, _react.useMemo)(() => {
|
|
17
18
|
if (!resolvedOptions.barcode.enabled) {
|
|
18
19
|
return null;
|
|
@@ -35,12 +36,28 @@ function useVinScanner(options) {
|
|
|
35
36
|
const frameProcessor = (0, _reactNativeVisionCamera.useFrameProcessor)(frame => {
|
|
36
37
|
'worklet';
|
|
37
38
|
|
|
38
|
-
const
|
|
39
|
-
const
|
|
39
|
+
const now = typeof (frame === null || frame === void 0 ? void 0 : frame.timestamp) === 'number' ? frame.timestamp : Date.now();
|
|
40
|
+
const maxFps = resolvedOptions.detection.maxFrameRate;
|
|
41
|
+
if (maxFps > 0) {
|
|
42
|
+
const minInterval = 1000 / maxFps;
|
|
43
|
+
if (lastFrameTimestampRef.current > 0 && now - lastFrameTimestampRef.current < minInterval) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
lastFrameTimestampRef.current = now;
|
|
47
|
+
}
|
|
48
|
+
const orientationOverride = resolvedOptions.detection.forceOrientation ?? null;
|
|
49
|
+
const barcodeArgs = orientationOverride ? {
|
|
50
|
+
orientation: orientationOverride
|
|
51
|
+
} : undefined;
|
|
52
|
+
const barcodes = barcodeScanner ? barcodeScanner.scanBarcodes(frame, barcodeArgs) : [];
|
|
53
|
+
const textArgs = orientationOverride ? {
|
|
54
|
+
orientation: orientationOverride
|
|
55
|
+
} : undefined;
|
|
56
|
+
const textBlocks = textScanner ? textScanner.scanText(frame, textArgs) : [];
|
|
40
57
|
const payload = {
|
|
41
58
|
barcodes: barcodes ?? [],
|
|
42
59
|
textBlocks: textBlocks ?? [],
|
|
43
|
-
timestamp:
|
|
60
|
+
timestamp: now
|
|
44
61
|
};
|
|
45
62
|
const candidates = (0, _vinUtils.buildVinCandidates)(payload, resolvedOptions);
|
|
46
63
|
const best = (0, _vinUtils.pickBestCandidate)(candidates, resolvedOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNativeVisionCamera","_reactNativeWorkletsCore","_scanBarcodes","_scanText","_vinUtils","useVinScanner","options","resolvedOptions","useMemo","resolveOptions","lastFingerprintRef","useRef","undefined","barcodeScanner","barcode","enabled","createBarcodeScannerPlugin","formats","textScanner","text","createTextRecognitionPlugin","language","emitResult","useRunOnJS","result","event","onResult","frameProcessor","useFrameProcessor","frame","
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeVisionCamera","_reactNativeWorkletsCore","_scanBarcodes","_scanText","_vinUtils","useVinScanner","options","resolvedOptions","useMemo","resolveOptions","lastFingerprintRef","useRef","undefined","lastFrameTimestampRef","barcodeScanner","barcode","enabled","createBarcodeScannerPlugin","formats","textScanner","text","createTextRecognitionPlugin","language","emitResult","useRunOnJS","result","event","onResult","frameProcessor","useFrameProcessor","frame","now","timestamp","Date","maxFps","detection","maxFrameRate","minInterval","current","orientationOverride","forceOrientation","barcodeArgs","orientation","barcodes","scanBarcodes","textArgs","textBlocks","scanText","payload","candidates","buildVinCandidates","best","pickBestCandidate","mode","resultMode","normalizedResult","length","fingerprint","map","candidate","value","join","emitDuplicates","raw"],"sourceRoot":"../../src","sources":["useVinScanner.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/vinUtils.js
CHANGED
|
@@ -34,13 +34,15 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
34
34
|
validateChecksum: true,
|
|
35
35
|
emitDuplicates: false,
|
|
36
36
|
includePartialVins: false,
|
|
37
|
-
minPartialLength: 13
|
|
37
|
+
minPartialLength: 13,
|
|
38
|
+
maxFrameRate: 30,
|
|
39
|
+
forceOrientation: null
|
|
38
40
|
}
|
|
39
41
|
};
|
|
40
42
|
const resolveOptions = options => {
|
|
41
43
|
'worklet';
|
|
42
44
|
|
|
43
|
-
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6;
|
|
45
|
+
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6, _options$detection7, _options$detection8;
|
|
44
46
|
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;
|
|
45
47
|
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);
|
|
46
48
|
return {
|
|
@@ -58,7 +60,9 @@ const resolveOptions = options => {
|
|
|
58
60
|
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,
|
|
59
61
|
emitDuplicates,
|
|
60
62
|
includePartialVins: (options === null || options === void 0 || (_options$detection5 = options.detection) === null || _options$detection5 === void 0 ? void 0 : _options$detection5.includePartialVins) ?? DEFAULT_RESOLVED_OPTIONS.detection.includePartialVins,
|
|
61
|
-
minPartialLength: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.minPartialLength) ?? DEFAULT_RESOLVED_OPTIONS.detection.minPartialLength
|
|
63
|
+
minPartialLength: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.minPartialLength) ?? DEFAULT_RESOLVED_OPTIONS.detection.minPartialLength,
|
|
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
|
|
62
66
|
}
|
|
63
67
|
};
|
|
64
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_RESOLVED_OPTIONS","barcode","enabled","formats","text","language","detection","resultMode","preferBarcode","validateChecksum","emitDuplicates","includePartialVins","minPartialLength","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","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","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":[]}
|
|
@@ -20,20 +20,90 @@ const toNativeBarcodeOptions = formats => {
|
|
|
20
20
|
return acc;
|
|
21
21
|
}, {});
|
|
22
22
|
};
|
|
23
|
+
const BOX_STRIDE = 6;
|
|
24
|
+
const toFloat32Array = input => {
|
|
25
|
+
'worklet';
|
|
26
|
+
|
|
27
|
+
if (input && typeof input === 'object' && 'byteLength' in input) {
|
|
28
|
+
try {
|
|
29
|
+
return new Float32Array(input);
|
|
30
|
+
} catch {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
};
|
|
36
|
+
const normalizeBarcodeDetections = payload => {
|
|
37
|
+
'worklet';
|
|
38
|
+
|
|
39
|
+
if (!payload) {
|
|
40
|
+
return [];
|
|
41
|
+
}
|
|
42
|
+
if (Array.isArray(payload)) {
|
|
43
|
+
return payload;
|
|
44
|
+
}
|
|
45
|
+
const record = payload;
|
|
46
|
+
const detections = Array.isArray(record === null || record === void 0 ? void 0 : record.detections) ? record.detections : [];
|
|
47
|
+
const buffer = toFloat32Array(record === null || record === void 0 ? void 0 : record.boxes);
|
|
48
|
+
return detections.map((detection, index) => {
|
|
49
|
+
const output = {
|
|
50
|
+
...detection
|
|
51
|
+
};
|
|
52
|
+
const boxIndex = typeof (detection === null || detection === void 0 ? void 0 : detection.boxIndex) === 'number' ? detection.boxIndex : index;
|
|
53
|
+
if (buffer && boxIndex >= 0) {
|
|
54
|
+
const offset = boxIndex * BOX_STRIDE;
|
|
55
|
+
if (offset + BOX_STRIDE <= buffer.length) {
|
|
56
|
+
output.top = buffer[offset];
|
|
57
|
+
output.bottom = buffer[offset + 1];
|
|
58
|
+
output.left = buffer[offset + 2];
|
|
59
|
+
output.right = buffer[offset + 3];
|
|
60
|
+
output.width = buffer[offset + 4];
|
|
61
|
+
output.height = buffer[offset + 5];
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return output;
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
const mergeArgs = (baseArgs, overrides, orientation) => {
|
|
68
|
+
'worklet';
|
|
69
|
+
|
|
70
|
+
const merged = {
|
|
71
|
+
...baseArgs
|
|
72
|
+
};
|
|
73
|
+
if (overrides) {
|
|
74
|
+
const {
|
|
75
|
+
orientation: overrideOrientation,
|
|
76
|
+
...formatMap
|
|
77
|
+
} = overrides;
|
|
78
|
+
Object.entries(formatMap).forEach(([key, value]) => {
|
|
79
|
+
merged[key] = value;
|
|
80
|
+
});
|
|
81
|
+
if (overrideOrientation) {
|
|
82
|
+
merged.orientation = overrideOrientation;
|
|
83
|
+
} else if (orientation) {
|
|
84
|
+
merged.orientation = orientation;
|
|
85
|
+
}
|
|
86
|
+
} else if (orientation) {
|
|
87
|
+
merged.orientation = orientation;
|
|
88
|
+
}
|
|
89
|
+
return merged;
|
|
90
|
+
};
|
|
23
91
|
export function createBarcodeScannerPlugin(formats) {
|
|
24
|
-
const
|
|
25
|
-
const plugin = VisionCameraProxy.initFrameProcessorPlugin('
|
|
26
|
-
...
|
|
92
|
+
const baseOptions = toNativeBarcodeOptions(formats);
|
|
93
|
+
const plugin = VisionCameraProxy.initFrameProcessorPlugin('vinScannerBarcode', {
|
|
94
|
+
...baseOptions
|
|
27
95
|
});
|
|
28
96
|
if (!plugin) {
|
|
29
97
|
throw new Error(LINKING_ERROR);
|
|
30
98
|
}
|
|
31
99
|
return {
|
|
32
|
-
scanBarcodes: frame => {
|
|
100
|
+
scanBarcodes: (frame, overrides) => {
|
|
33
101
|
'worklet';
|
|
34
102
|
|
|
35
|
-
const
|
|
36
|
-
|
|
103
|
+
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
104
|
+
const args = overrides || orientation ? mergeArgs(baseOptions, overrides, orientation ?? null) : baseOptions;
|
|
105
|
+
const result = plugin.call(frame, args);
|
|
106
|
+
return normalizeBarcodeDetections(result);
|
|
37
107
|
}
|
|
38
108
|
};
|
|
39
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","createBarcodeScannerPlugin","
|
|
1
|
+
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","BOX_STRIDE","toFloat32Array","input","Float32Array","undefined","normalizeBarcodeDetections","payload","Array","isArray","record","detections","buffer","boxes","map","detection","index","output","boxIndex","offset","top","bottom","left","right","width","height","mergeArgs","baseArgs","overrides","orientation","merged","overrideOrientation","formatMap","Object","entries","forEach","key","value","createBarcodeScannerPlugin","baseOptions","plugin","initFrameProcessorPlugin","Error","scanBarcodes","frame","args","result","call"],"sourceRoot":"../../src","sources":["scanBarcodes.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/scanText.js
CHANGED
|
@@ -4,19 +4,93 @@ const LINKING_ERROR = `The package '@mleonard9/vin-scanner' doesn't seem to be l
|
|
|
4
4
|
ios: "- You have run 'pod install'\n",
|
|
5
5
|
default: ''
|
|
6
6
|
}) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
|
|
7
|
+
const TEXT_BOX_STRIDE = 12;
|
|
8
|
+
const toFloat32Array = input => {
|
|
9
|
+
'worklet';
|
|
10
|
+
|
|
11
|
+
if (input && typeof input === 'object' && 'byteLength' in input) {
|
|
12
|
+
try {
|
|
13
|
+
return new Float32Array(input);
|
|
14
|
+
} catch {
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return undefined;
|
|
19
|
+
};
|
|
20
|
+
const normalizeTextDetections = payload => {
|
|
21
|
+
'worklet';
|
|
22
|
+
|
|
23
|
+
if (!payload) {
|
|
24
|
+
return [];
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(payload)) {
|
|
27
|
+
return payload;
|
|
28
|
+
}
|
|
29
|
+
const record = payload;
|
|
30
|
+
const detections = Array.isArray(record === null || record === void 0 ? void 0 : record.detections) ? record.detections : [];
|
|
31
|
+
const buffer = toFloat32Array(record === null || record === void 0 ? void 0 : record.boxes);
|
|
32
|
+
return detections.map((detection, index) => {
|
|
33
|
+
const output = {
|
|
34
|
+
...detection
|
|
35
|
+
};
|
|
36
|
+
const boxIndex = typeof (detection === null || detection === void 0 ? void 0 : detection.boxIndex) === 'number' ? detection.boxIndex : index;
|
|
37
|
+
if (buffer && boxIndex >= 0) {
|
|
38
|
+
const offset = boxIndex * TEXT_BOX_STRIDE;
|
|
39
|
+
if (offset + TEXT_BOX_STRIDE <= buffer.length) {
|
|
40
|
+
output.blockFrameTop = buffer[offset];
|
|
41
|
+
output.blockFrameBottom = buffer[offset + 1];
|
|
42
|
+
output.blockFrameLeft = buffer[offset + 2];
|
|
43
|
+
output.blockFrameRight = buffer[offset + 3];
|
|
44
|
+
output.lineFrameTop = buffer[offset + 4];
|
|
45
|
+
output.lineFrameBottom = buffer[offset + 5];
|
|
46
|
+
output.lineFrameLeft = buffer[offset + 6];
|
|
47
|
+
output.lineFrameRight = buffer[offset + 7];
|
|
48
|
+
output.elementFrameTop = buffer[offset + 8];
|
|
49
|
+
output.elementFrameBottom = buffer[offset + 9];
|
|
50
|
+
output.elementFrameLeft = buffer[offset + 10];
|
|
51
|
+
output.elementFrameRight = buffer[offset + 11];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return output;
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const mergeTextArgs = (base, overrides, orientation) => {
|
|
58
|
+
'worklet';
|
|
59
|
+
|
|
60
|
+
const merged = {
|
|
61
|
+
...base
|
|
62
|
+
};
|
|
63
|
+
if (overrides) {
|
|
64
|
+
const {
|
|
65
|
+
orientation: overrideOrientation,
|
|
66
|
+
...rest
|
|
67
|
+
} = overrides;
|
|
68
|
+
Object.assign(merged, rest);
|
|
69
|
+
if (overrideOrientation) {
|
|
70
|
+
merged.orientation = overrideOrientation;
|
|
71
|
+
} else if (orientation) {
|
|
72
|
+
merged.orientation = orientation;
|
|
73
|
+
}
|
|
74
|
+
} else if (orientation) {
|
|
75
|
+
merged.orientation = orientation;
|
|
76
|
+
}
|
|
77
|
+
return merged;
|
|
78
|
+
};
|
|
7
79
|
export function createTextRecognitionPlugin(options) {
|
|
8
|
-
const plugin = VisionCameraProxy.initFrameProcessorPlugin('
|
|
80
|
+
const plugin = VisionCameraProxy.initFrameProcessorPlugin('vinScannerText', {
|
|
9
81
|
...options
|
|
10
82
|
});
|
|
11
83
|
if (!plugin) {
|
|
12
84
|
throw new Error(LINKING_ERROR);
|
|
13
85
|
}
|
|
14
86
|
return {
|
|
15
|
-
scanText: frame => {
|
|
87
|
+
scanText: (frame, overrides) => {
|
|
16
88
|
'worklet';
|
|
17
89
|
|
|
18
|
-
const
|
|
19
|
-
|
|
90
|
+
const orientation = overrides === null || overrides === void 0 ? void 0 : overrides.orientation;
|
|
91
|
+
const args = overrides || orientation ? mergeTextArgs(options, overrides, orientation ?? null) : options;
|
|
92
|
+
const result = plugin.call(frame, args);
|
|
93
|
+
return normalizeTextDetections(result);
|
|
20
94
|
}
|
|
21
95
|
};
|
|
22
96
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","createTextRecognitionPlugin","options","plugin","initFrameProcessorPlugin","Error","scanText","frame","
|
|
1
|
+
{"version":3,"names":["Platform","VisionCameraProxy","LINKING_ERROR","select","ios","default","TEXT_BOX_STRIDE","toFloat32Array","input","Float32Array","undefined","normalizeTextDetections","payload","Array","isArray","record","detections","buffer","boxes","map","detection","index","output","boxIndex","offset","length","blockFrameTop","blockFrameBottom","blockFrameLeft","blockFrameRight","lineFrameTop","lineFrameBottom","lineFrameLeft","lineFrameRight","elementFrameTop","elementFrameBottom","elementFrameLeft","elementFrameRight","mergeTextArgs","base","overrides","orientation","merged","overrideOrientation","rest","Object","assign","createTextRecognitionPlugin","options","plugin","initFrameProcessorPlugin","Error","scanText","frame","args","result","call"],"sourceRoot":"../../src","sources":["scanText.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,6 +7,7 @@ import { buildVinCandidates, pickBestCandidate, resolveOptions } from './vinUtil
|
|
|
7
7
|
export function useVinScanner(options) {
|
|
8
8
|
const resolvedOptions = useMemo(() => resolveOptions(options), [options]);
|
|
9
9
|
const lastFingerprintRef = useRef(undefined);
|
|
10
|
+
const lastFrameTimestampRef = useRef(0);
|
|
10
11
|
const barcodeScanner = useMemo(() => {
|
|
11
12
|
if (!resolvedOptions.barcode.enabled) {
|
|
12
13
|
return null;
|
|
@@ -29,12 +30,28 @@ export function useVinScanner(options) {
|
|
|
29
30
|
const frameProcessor = useFrameProcessor(frame => {
|
|
30
31
|
'worklet';
|
|
31
32
|
|
|
32
|
-
const
|
|
33
|
-
const
|
|
33
|
+
const now = typeof (frame === null || frame === void 0 ? void 0 : frame.timestamp) === 'number' ? frame.timestamp : Date.now();
|
|
34
|
+
const maxFps = resolvedOptions.detection.maxFrameRate;
|
|
35
|
+
if (maxFps > 0) {
|
|
36
|
+
const minInterval = 1000 / maxFps;
|
|
37
|
+
if (lastFrameTimestampRef.current > 0 && now - lastFrameTimestampRef.current < minInterval) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
lastFrameTimestampRef.current = now;
|
|
41
|
+
}
|
|
42
|
+
const orientationOverride = resolvedOptions.detection.forceOrientation ?? null;
|
|
43
|
+
const barcodeArgs = orientationOverride ? {
|
|
44
|
+
orientation: orientationOverride
|
|
45
|
+
} : undefined;
|
|
46
|
+
const barcodes = barcodeScanner ? barcodeScanner.scanBarcodes(frame, barcodeArgs) : [];
|
|
47
|
+
const textArgs = orientationOverride ? {
|
|
48
|
+
orientation: orientationOverride
|
|
49
|
+
} : undefined;
|
|
50
|
+
const textBlocks = textScanner ? textScanner.scanText(frame, textArgs) : [];
|
|
34
51
|
const payload = {
|
|
35
52
|
barcodes: barcodes ?? [],
|
|
36
53
|
textBlocks: textBlocks ?? [],
|
|
37
|
-
timestamp:
|
|
54
|
+
timestamp: now
|
|
38
55
|
};
|
|
39
56
|
const candidates = buildVinCandidates(payload, resolvedOptions);
|
|
40
57
|
const best = pickBestCandidate(candidates, resolvedOptions);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useRef","useFrameProcessor","useRunOnJS","createBarcodeScannerPlugin","createTextRecognitionPlugin","buildVinCandidates","pickBestCandidate","resolveOptions","useVinScanner","options","resolvedOptions","lastFingerprintRef","undefined","barcodeScanner","barcode","enabled","formats","textScanner","text","language","emitResult","result","event","onResult","frameProcessor","frame","
|
|
1
|
+
{"version":3,"names":["useMemo","useRef","useFrameProcessor","useRunOnJS","createBarcodeScannerPlugin","createTextRecognitionPlugin","buildVinCandidates","pickBestCandidate","resolveOptions","useVinScanner","options","resolvedOptions","lastFingerprintRef","undefined","lastFrameTimestampRef","barcodeScanner","barcode","enabled","formats","textScanner","text","language","emitResult","result","event","onResult","frameProcessor","frame","now","timestamp","Date","maxFps","detection","maxFrameRate","minInterval","current","orientationOverride","forceOrientation","barcodeArgs","orientation","barcodes","scanBarcodes","textArgs","textBlocks","scanText","payload","candidates","best","mode","resultMode","normalizedResult","length","fingerprint","map","candidate","value","join","emitDuplicates","raw"],"sourceRoot":"../../src","sources":["useVinScanner.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/vinUtils.js
CHANGED
|
@@ -28,13 +28,15 @@ const DEFAULT_RESOLVED_OPTIONS = {
|
|
|
28
28
|
validateChecksum: true,
|
|
29
29
|
emitDuplicates: false,
|
|
30
30
|
includePartialVins: false,
|
|
31
|
-
minPartialLength: 13
|
|
31
|
+
minPartialLength: 13,
|
|
32
|
+
maxFrameRate: 30,
|
|
33
|
+
forceOrientation: null
|
|
32
34
|
}
|
|
33
35
|
};
|
|
34
36
|
export const resolveOptions = options => {
|
|
35
37
|
'worklet';
|
|
36
38
|
|
|
37
|
-
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6;
|
|
39
|
+
var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6, _options$detection7, _options$detection8;
|
|
38
40
|
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;
|
|
39
41
|
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);
|
|
40
42
|
return {
|
|
@@ -52,7 +54,9 @@ export const resolveOptions = options => {
|
|
|
52
54
|
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,
|
|
53
55
|
emitDuplicates,
|
|
54
56
|
includePartialVins: (options === null || options === void 0 || (_options$detection5 = options.detection) === null || _options$detection5 === void 0 ? void 0 : _options$detection5.includePartialVins) ?? DEFAULT_RESOLVED_OPTIONS.detection.includePartialVins,
|
|
55
|
-
minPartialLength: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.minPartialLength) ?? DEFAULT_RESOLVED_OPTIONS.detection.minPartialLength
|
|
57
|
+
minPartialLength: (options === null || options === void 0 || (_options$detection6 = options.detection) === null || _options$detection6 === void 0 ? void 0 : _options$detection6.minPartialLength) ?? DEFAULT_RESOLVED_OPTIONS.detection.minPartialLength,
|
|
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
|
|
56
60
|
}
|
|
57
61
|
};
|
|
58
62
|
};
|