@mleonard9/vin-scanner 0.2.3 → 0.2.6

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.
Files changed (35) hide show
  1. package/README.md +7 -0
  2. package/android/src/main/java/com/visioncamerabarcodescanner/VisionCameraBarcodeScannerModule.kt +83 -53
  3. package/android/src/main/java/com/visioncamerabarcodescanner/VisionCameraBarcodeScannerPackage.kt +2 -2
  4. package/android/src/main/java/com/visioncameratextrecognition/VisionCameraTextRecognitionModule.kt +128 -95
  5. package/ios/VisionCameraBarcodeScanner.m +59 -37
  6. package/ios/VisionCameraTextRecognition.m +106 -56
  7. package/lib/commonjs/scanBarcodes.js +54 -6
  8. package/lib/commonjs/scanBarcodes.js.map +1 -1
  9. package/lib/commonjs/scanText.js +58 -4
  10. package/lib/commonjs/scanText.js.map +1 -1
  11. package/lib/commonjs/useVinScanner.js +11 -1
  12. package/lib/commonjs/useVinScanner.js.map +1 -1
  13. package/lib/commonjs/vinUtils.js +7 -4
  14. package/lib/commonjs/vinUtils.js.map +1 -1
  15. package/lib/module/scanBarcodes.js +54 -6
  16. package/lib/module/scanBarcodes.js.map +1 -1
  17. package/lib/module/scanText.js +58 -4
  18. package/lib/module/scanText.js.map +1 -1
  19. package/lib/module/useVinScanner.js +11 -1
  20. package/lib/module/useVinScanner.js.map +1 -1
  21. package/lib/module/vinUtils.js +7 -4
  22. package/lib/module/vinUtils.js.map +1 -1
  23. package/lib/typescript/src/scanBarcodes.d.ts.map +1 -1
  24. package/lib/typescript/src/scanText.d.ts.map +1 -1
  25. package/lib/typescript/src/types.d.ts +9 -2
  26. package/lib/typescript/src/types.d.ts.map +1 -1
  27. package/lib/typescript/src/useVinScanner.d.ts.map +1 -1
  28. package/lib/typescript/src/vinUtils.d.ts +1 -0
  29. package/lib/typescript/src/vinUtils.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/scanBarcodes.ts +71 -8
  32. package/src/scanText.ts +72 -4
  33. package/src/types.ts +16 -2
  34. package/src/useVinScanner.ts +16 -1
  35. package/src/vinUtils.ts +11 -5
@@ -8,11 +8,14 @@
8
8
  #import <VisionCamera/FrameProcessorPluginRegistry.h>
9
9
  #import <VisionCamera/VisionCameraProxyHolder.h>
10
10
  #import <VisionCamera/Frame.h>
11
+ #import <VisionCamera/SharedArray.h>
11
12
  @import MLKitVision;
12
13
 
13
14
  @interface VisionCameraTextRecognitionPlugin : FrameProcessorPlugin
14
15
 
15
- @property(nonatomic, strong) MLKTextRecognizer *textRecognizer;
16
+ @property(nonatomic, strong) NSMutableDictionary<NSString *, MLKTextRecognizer *> *recognizerCache;
17
+ @property(nonatomic, strong) VisionCameraProxyHolder *proxyHolder;
18
+ @property(nonatomic, copy) NSString *preferredLanguage;
16
19
 
17
20
  @end
18
21
 
@@ -22,31 +25,37 @@
22
25
  withOptions:(NSDictionary* _Nullable)options {
23
26
  self = [super initWithProxy:proxy withOptions:options];
24
27
  if (self) {
28
+ _recognizerCache = [NSMutableDictionary dictionary];
25
29
  NSString *language = options[@"language"];
30
+ _preferredLanguage = language.length > 0 ? language : @"latin";
31
+ _proxyHolder = proxy;
32
+ }
33
+ return self;
34
+ }
26
35
 
27
- if ([language isEqualToString:@"latin"]) {
28
- MLKTextRecognizerOptions *options = [[MLKTextRecognizerOptions alloc] init];
29
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:options];
30
- } else if ([language isEqualToString:@"chinese"]) {
31
- MLKChineseTextRecognizerOptions *chineseOptions = [[MLKChineseTextRecognizerOptions alloc] init];
32
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:chineseOptions];
33
- }else if ([language isEqualToString:@"devanagari"]) {
34
- MLKDevanagariTextRecognizerOptions *devanagariOptions = [[MLKDevanagariTextRecognizerOptions alloc] init];
35
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:devanagariOptions];
36
- }
37
- else if ([language isEqualToString:@"japanese"]) {
38
- MLKJapaneseTextRecognizerOptions *japaneseOptions = [[MLKJapaneseTextRecognizerOptions alloc] init];
39
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:japaneseOptions];
40
- }
41
- else if ([language isEqualToString:@"korean"]) {
42
- MLKKoreanTextRecognizerOptions *koreanOptions = [[MLKKoreanTextRecognizerOptions alloc] init];
43
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:koreanOptions];
44
- }else {
45
- MLKTextRecognizerOptions *defaultOptions = [[MLKTextRecognizerOptions alloc] init];
46
- _textRecognizer = [MLKTextRecognizer textRecognizerWithOptions:defaultOptions]; }
36
+ - (MLKTextRecognizer *)recognizerForLanguage:(NSString *)language {
37
+ MLKTextRecognizer *recognizer = self.recognizerCache[language];
38
+ if (recognizer != nil) {
39
+ return recognizer;
40
+ }
47
41
 
42
+ MLKTextRecognizer *created = nil;
43
+ if ([language isEqualToString:@"chinese"]) {
44
+ created = [MLKTextRecognizer textRecognizerWithOptions:[[MLKChineseTextRecognizerOptions alloc] init]];
45
+ } else if ([language isEqualToString:@"devanagari"]) {
46
+ created = [MLKTextRecognizer textRecognizerWithOptions:[[MLKDevanagariTextRecognizerOptions alloc] init]];
47
+ } else if ([language isEqualToString:@"japanese"]) {
48
+ created = [MLKTextRecognizer textRecognizerWithOptions:[[MLKJapaneseTextRecognizerOptions alloc] init]];
49
+ } else if ([language isEqualToString:@"korean"]) {
50
+ created = [MLKTextRecognizer textRecognizerWithOptions:[[MLKKoreanTextRecognizerOptions alloc] init]];
51
+ } else {
52
+ created = [MLKTextRecognizer textRecognizerWithOptions:[[MLKTextRecognizerOptions alloc] init]];
48
53
  }
49
- return self;
54
+
55
+ if (created != nil) {
56
+ self.recognizerCache[language] = created;
57
+ }
58
+ return created;
50
59
  }
51
60
 
52
61
  - (id _Nullable)callback:(Frame* _Nonnull)frame
@@ -55,60 +64,101 @@
55
64
  UIImageOrientation orientation = frame.orientation;
56
65
  MLKVisionImage *image = [[MLKVisionImage alloc] initWithBuffer:buffer];
57
66
  image.orientation = orientation;
58
- NSMutableArray *data = [NSMutableArray array];
67
+ NSMutableArray *detections = [NSMutableArray array];
68
+ NSMutableArray<NSArray<NSNumber *> *> *boxValues = [NSMutableArray array];
69
+ NSString *language = arguments[@"language"] ?: self.preferredLanguage ?: @"latin";
70
+ MLKTextRecognizer *recognizer = [self recognizerForLanguage:language];
59
71
  dispatch_group_t dispatchGroup = dispatch_group_create();
60
72
  dispatch_group_enter(dispatchGroup);
61
73
  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
62
- [self.textRecognizer processImage:image
74
+ [recognizer processImage:image
63
75
  completion:^(MLKText *_Nullable result,
64
76
  NSError *_Nullable error) {
65
77
  if (error || !result ) {
66
78
  dispatch_group_leave(dispatchGroup);
67
79
  return;
68
80
  }
81
+ NSString *resultText = result.text;
69
82
  for (MLKTextBlock *block in result.blocks) {
70
- NSMutableDictionary *objData = [[NSMutableDictionary alloc] init];
71
- NSString *resultText = result.text;
72
- objData[@"resultText"] = resultText;
73
- NSString *blockText = block.text;
74
- objData[@"blockText"] = blockText;
75
83
  CGRect blockFrame = block.frame;
76
- objData[@"blockFrameLeft"] = @(CGRectGetMinX(blockFrame));
77
- objData[@"blockFrameTop"] = @(CGRectGetMinY(blockFrame));
78
- objData[@"blockFrameRight"] = @(CGRectGetMaxX(blockFrame));
79
- objData[@"blockFrameBottom"] = @(CGRectGetMaxY(blockFrame));
80
- objData[@"size"] = @(blockFrame.size.height);
81
- for (MLKTextLine *line in block.lines) {
82
- NSString *lineText = line.text;
83
- objData[@"lineText"] = lineText;
84
- CGRect lineFrame = line.frame;
85
- objData[@"lineFrameLeft"] = @(CGRectGetMinX(lineFrame));
86
- objData[@"lineFrameTop"] = @(CGRectGetMinY(lineFrame));
87
- objData[@"lineFrameRight"] = @(CGRectGetMaxX(lineFrame));
88
- objData[@"lineFrameBottom"] = @(CGRectGetMaxY(lineFrame));
89
- objData[@"size"] = @(lineFrame.size.height);
90
- for (MLKTextElement *element in line.elements) {
91
- NSString *elementText = element.text;
92
- CGRect elementFrame = element.frame;
93
- objData[@"elementText"] = elementText;
94
- objData[@"elementFrameLeft"] = @(CGRectGetMinX(elementFrame));
95
- objData[@"elementFrameTop"] = @(CGRectGetMinY(elementFrame));
96
- objData[@"elementFrameRight"] = @(CGRectGetMaxX(elementFrame));
97
- objData[@"elementFrameBottom"] = @(CGRectGetMaxY(elementFrame));
98
- objData[@"size"] = @(elementFrame.size.height);
84
+ if (block.lines.count == 0) {
85
+ NSMutableDictionary *entry = [[NSMutableDictionary alloc] init];
86
+ entry[@"resultText"] = resultText ?: (id)kCFNull;
87
+ entry[@"blockText"] = block.text ?: (id)kCFNull;
88
+ entry[@"boxIndex"] = @(boxValues.count);
89
+ [detections addObject:entry];
90
+ [boxValues addObject:@[
91
+ @(CGRectGetMinY(blockFrame)), @(CGRectGetMaxY(blockFrame)),
92
+ @(CGRectGetMinX(blockFrame)), @(CGRectGetMaxX(blockFrame)),
93
+ @(-1.f), @(-1.f), @(-1.f), @(-1.f),
94
+ @(-1.f), @(-1.f), @(-1.f), @(-1.f)
95
+ ]];
96
+ }
97
+ for (MLKTextLine *line in block.lines) {
98
+ CGRect lineFrame = line.frame;
99
+ if (line.elements.count == 0) {
100
+ NSMutableDictionary *entry = [[NSMutableDictionary alloc] init];
101
+ entry[@"resultText"] = resultText ?: (id)kCFNull;
102
+ entry[@"blockText"] = block.text ?: (id)kCFNull;
103
+ entry[@"lineText"] = line.text ?: (id)kCFNull;
104
+ entry[@"boxIndex"] = @(boxValues.count);
105
+ [detections addObject:entry];
106
+ [boxValues addObject:@[
107
+ @(CGRectGetMinY(blockFrame)), @(CGRectGetMaxY(blockFrame)),
108
+ @(CGRectGetMinX(blockFrame)), @(CGRectGetMaxX(blockFrame)),
109
+ @(CGRectGetMinY(lineFrame)), @(CGRectGetMaxY(lineFrame)),
110
+ @(CGRectGetMinX(lineFrame)), @(CGRectGetMaxX(lineFrame)),
111
+ @(-1.f), @(-1.f), @(-1.f), @(-1.f)
112
+ ]];
113
+ }
114
+ for (MLKTextElement *element in line.elements) {
115
+ CGRect elementFrame = element.frame;
116
+ NSMutableDictionary *entry = [[NSMutableDictionary alloc] init];
117
+ entry[@"resultText"] = resultText ?: (id)kCFNull;
118
+ entry[@"blockText"] = block.text ?: (id)kCFNull;
119
+ entry[@"lineText"] = line.text ?: (id)kCFNull;
120
+ entry[@"elementText"] = element.text ?: (id)kCFNull;
121
+ entry[@"boxIndex"] = @(boxValues.count);
122
+ [detections addObject:entry];
123
+ [boxValues addObject:@[
124
+ @(CGRectGetMinY(blockFrame)), @(CGRectGetMaxY(blockFrame)),
125
+ @(CGRectGetMinX(blockFrame)), @(CGRectGetMaxX(blockFrame)),
126
+ @(CGRectGetMinY(lineFrame)), @(CGRectGetMaxY(lineFrame)),
127
+ @(CGRectGetMinX(lineFrame)), @(CGRectGetMaxX(lineFrame)),
128
+ @(CGRectGetMinY(elementFrame)), @(CGRectGetMaxY(elementFrame)),
129
+ @(CGRectGetMinX(elementFrame)), @(CGRectGetMaxX(elementFrame))
130
+ ]];
131
+ }
99
132
  }
100
- }
101
- [data addObject:objData];
102
133
  }
103
134
  dispatch_group_leave(dispatchGroup);
104
135
  }];
105
136
 
106
137
  });
107
138
  dispatch_group_wait(dispatchGroup, DISPATCH_TIME_FOREVER);
108
- return data;
139
+ SharedArray *sharedBoxes = nil;
140
+ float *boxData = nil;
141
+ if (boxValues.count > 0 && self.proxyHolder != nil) {
142
+ sharedBoxes = [[SharedArray alloc] initWithProxy:self.proxyHolder
143
+ allocateWithSize:boxValues.count * sizeof(float) * 12];
144
+ boxData = (float *)sharedBoxes.data;
145
+ [boxValues enumerateObjectsUsingBlock:^(NSArray<NSNumber *> * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
146
+ NSUInteger base = idx * 12;
147
+ for (NSUInteger offset = 0; offset < 12; offset += 1) {
148
+ boxData[base + offset] = obj[offset].floatValue;
149
+ }
150
+ }];
151
+ }
152
+
153
+ NSMutableDictionary *payload = [NSMutableDictionary dictionary];
154
+ payload[@"detections"] = detections;
155
+ if (sharedBoxes != nil) {
156
+ payload[@"boxes"] = sharedBoxes;
157
+ }
158
+ return payload;
109
159
  }
110
160
 
111
- VISION_EXPORT_FRAME_PROCESSOR(VisionCameraTextRecognitionPlugin, scanText)
161
+ VISION_EXPORT_FRAME_PROCESSOR(VisionCameraTextRecognitionPlugin, vinScannerText)
112
162
 
113
163
  @end
114
164
 
@@ -26,20 +26,68 @@ const toNativeBarcodeOptions = formats => {
26
26
  return acc;
27
27
  }, {});
28
28
  };
29
+ const BOX_STRIDE = 6;
30
+ const toFloat32Array = input => {
31
+ 'worklet';
32
+
33
+ if (input && typeof input === 'object' && 'byteLength' in input) {
34
+ try {
35
+ return new Float32Array(input);
36
+ } catch {
37
+ return undefined;
38
+ }
39
+ }
40
+ return undefined;
41
+ };
42
+ const normalizeBarcodeDetections = payload => {
43
+ 'worklet';
44
+
45
+ if (!payload) {
46
+ return [];
47
+ }
48
+ if (Array.isArray(payload)) {
49
+ return payload;
50
+ }
51
+ const record = payload;
52
+ const detections = Array.isArray(record === null || record === void 0 ? void 0 : record.detections) ? record.detections : [];
53
+ const buffer = toFloat32Array(record === null || record === void 0 ? void 0 : record.boxes);
54
+ return detections.map((detection, index) => {
55
+ const output = {
56
+ ...detection
57
+ };
58
+ const boxIndex = typeof (detection === null || detection === void 0 ? void 0 : detection.boxIndex) === 'number' ? detection.boxIndex : index;
59
+ if (buffer && boxIndex >= 0) {
60
+ const offset = boxIndex * BOX_STRIDE;
61
+ if (offset + BOX_STRIDE <= buffer.length) {
62
+ output.top = buffer[offset];
63
+ output.bottom = buffer[offset + 1];
64
+ output.left = buffer[offset + 2];
65
+ output.right = buffer[offset + 3];
66
+ output.width = buffer[offset + 4];
67
+ output.height = buffer[offset + 5];
68
+ }
69
+ }
70
+ return output;
71
+ });
72
+ };
29
73
  function createBarcodeScannerPlugin(formats) {
30
- const pluginOptions = toNativeBarcodeOptions(formats);
31
- const plugin = _reactNativeVisionCamera.VisionCameraProxy.initFrameProcessorPlugin('scanBarcodes', {
32
- ...pluginOptions
74
+ const baseOptions = toNativeBarcodeOptions(formats);
75
+ const plugin = _reactNativeVisionCamera.VisionCameraProxy.initFrameProcessorPlugin('vinScannerBarcode', {
76
+ ...baseOptions
33
77
  });
34
78
  if (!plugin) {
35
79
  throw new Error(LINKING_ERROR);
36
80
  }
37
81
  return {
38
- scanBarcodes: frame => {
82
+ scanBarcodes: (frame, overrides) => {
39
83
  'worklet';
40
84
 
41
- const result = plugin.call(frame);
42
- return Array.isArray(result) ? result : [];
85
+ const args = overrides && Object.keys(overrides).length > 0 ? {
86
+ ...baseOptions,
87
+ ...overrides
88
+ } : baseOptions;
89
+ const result = plugin.call(frame, args);
90
+ return normalizeBarcodeDetections(result);
43
91
  }
44
92
  };
45
93
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","DEFAULT_FORMATS","KNOWN_FORMATS","toNativeBarcodeOptions","formats","sanitized","length","includes","all","reduce","acc","format","createBarcodeScannerPlugin","pluginOptions","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanBarcodes","frame","result","call","Array","isArray"],"sourceRoot":"../../src","sources":["scanBarcodes.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAYA,MAAME,aAAqB,GACzB,iFAAiF,GACjFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,eAAmC,GAAG,CAAC,KAAK,CAAC;AAEnD,MAAMC,aAA8B,GAAG,CACrC,KAAK,EACL,OAAO,EACP,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,QAAQ,EACR,OAAO,EACP,KAAK,EACL,SAAS,EACT,IAAI,EACJ,OAAO,EACP,OAAO,CACR;AAID,MAAMC,sBAAsB,GAC1BC,OAA4B,IACD;EAC3B,MAAMC,SAAS,GAAGD,OAAO,IAAIA,OAAO,CAACE,MAAM,GAAG,CAAC,GAAGF,OAAO,GAAGH,eAAe;EAC3E,IAAII,SAAS,CAACE,QAAQ,CAAC,KAAK,CAAC,EAAE;IAC7B,OAAO;MAAEC,GAAG,EAAE;IAAK,CAAC;EACtB;EACA,OAAOH,SAAS,CAACI,MAAM,CAAyB,CAACC,GAAG,EAAEC,MAAM,KAAK;IAC/D,IAAKT,aAAa,CAAcK,QAAQ,CAACI,MAAM,CAAC,EAAE;MAChDD,GAAG,CAACC,MAAM,CAAkB,GAAG,IAAI;IACrC;IACA,OAAOD,GAAG;EACZ,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAEM,SAASE,0BAA0BA,CACxCR,OAA2B,EACL;EACtB,MAAMS,aAAa,GAAGV,sBAAsB,CAACC,OAAO,CAAC;EACrD,MAAMU,MAAwC,GAC5CC,0CAAiB,CAACC,wBAAwB,CAAC,cAAc,EAAE;IACzD,GAAGH;EACL,CAAC,CAAC;EACJ,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAACrB,aAAa,CAAC;EAChC;EACA,OAAO;IACLsB,YAAY,EAAGC,KAAY,IAAyB;MAClD,SAAS;;MACT,MAAMC,MAAM,GAAGN,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;MACjC,OAAQG,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GACzBA,MAAM,GACN,EAAE;IACR;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","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","createBarcodeScannerPlugin","baseOptions","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanBarcodes","frame","overrides","args","Object","keys","result","call"],"sourceRoot":"../../src","sources":["scanBarcodes.ts"],"mappings":"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","ignoreList":[]}
@@ -10,19 +10,73 @@ const LINKING_ERROR = `The package '@mleonard9/vin-scanner' doesn't seem to be l
10
10
  ios: "- You have run 'pod install'\n",
11
11
  default: ''
12
12
  }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
13
+ const TEXT_BOX_STRIDE = 12;
14
+ const toFloat32Array = input => {
15
+ 'worklet';
16
+
17
+ if (input && typeof input === 'object' && 'byteLength' in input) {
18
+ try {
19
+ return new Float32Array(input);
20
+ } catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ return undefined;
25
+ };
26
+ const normalizeTextDetections = payload => {
27
+ 'worklet';
28
+
29
+ if (!payload) {
30
+ return [];
31
+ }
32
+ if (Array.isArray(payload)) {
33
+ return payload;
34
+ }
35
+ const record = payload;
36
+ const detections = Array.isArray(record === null || record === void 0 ? void 0 : record.detections) ? record.detections : [];
37
+ const buffer = toFloat32Array(record === null || record === void 0 ? void 0 : record.boxes);
38
+ return detections.map((detection, index) => {
39
+ const output = {
40
+ ...detection
41
+ };
42
+ const boxIndex = typeof (detection === null || detection === void 0 ? void 0 : detection.boxIndex) === 'number' ? detection.boxIndex : index;
43
+ if (buffer && boxIndex >= 0) {
44
+ const offset = boxIndex * TEXT_BOX_STRIDE;
45
+ if (offset + TEXT_BOX_STRIDE <= buffer.length) {
46
+ output.blockFrameTop = buffer[offset];
47
+ output.blockFrameBottom = buffer[offset + 1];
48
+ output.blockFrameLeft = buffer[offset + 2];
49
+ output.blockFrameRight = buffer[offset + 3];
50
+ output.lineFrameTop = buffer[offset + 4];
51
+ output.lineFrameBottom = buffer[offset + 5];
52
+ output.lineFrameLeft = buffer[offset + 6];
53
+ output.lineFrameRight = buffer[offset + 7];
54
+ output.elementFrameTop = buffer[offset + 8];
55
+ output.elementFrameBottom = buffer[offset + 9];
56
+ output.elementFrameLeft = buffer[offset + 10];
57
+ output.elementFrameRight = buffer[offset + 11];
58
+ }
59
+ }
60
+ return output;
61
+ });
62
+ };
13
63
  function createTextRecognitionPlugin(options) {
14
- const plugin = _reactNativeVisionCamera.VisionCameraProxy.initFrameProcessorPlugin('scanText', {
64
+ const plugin = _reactNativeVisionCamera.VisionCameraProxy.initFrameProcessorPlugin('vinScannerText', {
15
65
  ...options
16
66
  });
17
67
  if (!plugin) {
18
68
  throw new Error(LINKING_ERROR);
19
69
  }
20
70
  return {
21
- scanText: frame => {
71
+ scanText: (frame, overrides) => {
22
72
  'worklet';
23
73
 
24
- const result = plugin.call(frame);
25
- return Array.isArray(result) ? result : [];
74
+ const args = overrides && Object.keys(overrides).length > 0 ? {
75
+ ...options,
76
+ ...overrides
77
+ } : options;
78
+ const result = plugin.call(frame, args);
79
+ return normalizeTextDetections(result);
26
80
  }
27
81
  };
28
82
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","select","ios","default","createTextRecognitionPlugin","options","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanText","frame","result","call","Array","isArray"],"sourceRoot":"../../src","sources":["scanText.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAWA,MAAME,aAAqB,GACzB,iFAAiF,GACjFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAE1B,SAASC,2BAA2BA,CACzCC,OAA+B,EACR;EACvB,MAAMC,MAAwC,GAC5CC,0CAAiB,CAACC,wBAAwB,CAAC,UAAU,EAAE;IACrD,GAAGH;EACL,CAAC,CAAC;EACJ,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAACV,aAAa,CAAC;EAChC;EACA,OAAO;IACLW,QAAQ,EAAGC,KAAY,IAAsB;MAC3C,SAAS;;MACT,MAAMC,MAAM,GAAGN,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;MACjC,OAAQG,KAAK,CAACC,OAAO,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAG,EAAE;IAC7C;EACF,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_reactNativeVisionCamera","LINKING_ERROR","Platform","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","createTextRecognitionPlugin","options","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","scanText","frame","overrides","args","Object","keys","result","call"],"sourceRoot":"../../src","sources":["scanText.ts"],"mappings":"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","ignoreList":[]}
@@ -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,21 @@ function useVinScanner(options) {
35
36
  const frameProcessor = (0, _reactNativeVisionCamera.useFrameProcessor)(frame => {
36
37
  'worklet';
37
38
 
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
+ }
38
48
  const barcodes = barcodeScanner ? barcodeScanner.scanBarcodes(frame) : [];
39
49
  const textBlocks = textScanner ? textScanner.scanText(frame) : [];
40
50
  const payload = {
41
51
  barcodes: barcodes ?? [],
42
52
  textBlocks: textBlocks ?? [],
43
- timestamp: Date.now()
53
+ timestamp: now
44
54
  };
45
55
  const candidates = (0, _vinUtils.buildVinCandidates)(payload, resolvedOptions);
46
56
  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","barcodes","scanBarcodes","textBlocks","scanText","payload","timestamp","Date","now","candidates","buildVinCandidates","best","pickBestCandidate","mode","detection","resultMode","normalizedResult","length","fingerprint","map","candidate","value","join","emitDuplicates","current","raw"],"sourceRoot":"../../src","sources":["useVinScanner.ts"],"mappings":"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","ignoreList":[]}
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","barcodes","scanBarcodes","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":[]}
@@ -34,13 +34,14 @@ 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
38
39
  }
39
40
  };
40
41
  const resolveOptions = options => {
41
42
  'worklet';
42
43
 
43
- var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6;
44
+ var _options$detection, _options$detection2, _options$barcode, _options$barcode2, _options$text, _options$text2, _options$detection3, _options$detection4, _options$detection5, _options$detection6, _options$detection7;
44
45
  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
46
  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
47
  return {
@@ -58,7 +59,8 @@ const resolveOptions = options => {
58
59
  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
60
  emitDuplicates,
60
61
  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
62
+ 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
+ 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
62
64
  }
63
65
  };
64
66
  };
@@ -178,7 +180,8 @@ const extractWithContext = text => {
178
180
  const VIN_PATTERN = /^[A-HJ-NPR-Z0-9]{17}$/;
179
181
 
180
182
  // Define patterns inside worklet to ensure they're available in the worklet context
181
- const patterns = [/(?:^|[\s:])VIN[:\s]+([A-Z0-9]{17,})/i, /(?:^|[\s:])V\.?I\.?N\.?[:\s]+([A-Z0-9]{17,})/i, /Vehicle\s+(?:Identification\s+)?(?:Number|ID|Id)[:\s]+([A-Z0-9]{17,})/i, /(?:^|[\s:])Chassis\s+(?:Number|No\.?)[:\s]+([A-Z0-9]{17,})/i, /(?:^|[\s:])Serial\s+(?:Number|No\.?)[:\s]+([A-Z0-9]{17,})/i];
183
+ // Made more flexible to handle: "VIN #", "VIN:", "VIN ", "Serial #:", etc.
184
+ const patterns = [/VIN[\s#:]*([A-Z0-9\s]{17,})/i, /V\.?I\.?N\.?[\s#:]*([A-Z0-9\s]{17,})/i, /Vehicle\s+Identification\s+Number[\s#:]*([A-Z0-9\s]{17,})/i, /Chassis[\s#:]+(?:Number|No\.?|#)?[\s#:]*([A-Z0-9\s]{17,})/i, /Serial[\s#:]+(?:Number|No\.?|#)?[\s#:]*([A-Z0-9\s]{17,})/i];
182
185
  patterns.forEach(pattern => {
183
186
  const match = pattern.exec(text);
184
187
  if (match && match[1]) {
@@ -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","resolveOptions","options","_options$detection","_options$detection2","_options$barcode","_options$barcode2","_options$text","_options$text2","_options$detection3","_options$detection4","_options$detection5","_options$detection6","_options$detection7","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":[]}