@souscheflabs/ml-vision 0.1.1 → 0.1.2
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/CHANGELOG.md +54 -0
- package/LICENSE +15 -0
- package/README.md +50 -5
- package/dist/{components → cjs/components}/DetectionOverlay.js +1 -0
- package/dist/cjs/components/DetectionOverlay.js.map +1 -0
- package/dist/{components → cjs/components}/index.js +1 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/{core → cjs/core}/CacheManager.js +1 -0
- package/dist/cjs/core/CacheManager.js.map +1 -0
- package/dist/{core → cjs/core}/MLVisionProvider.js +4 -2
- package/dist/cjs/core/MLVisionProvider.js.map +1 -0
- package/dist/{core → cjs/core}/ServerClient.js +33 -13
- package/dist/cjs/core/ServerClient.js.map +1 -0
- package/dist/{core → cjs/core}/index.js +1 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabels.js +1 -0
- package/dist/cjs/hooks/classLabels.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/classLabelsCoco.js +1 -0
- package/dist/cjs/hooks/classLabelsCoco.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/index.js +1 -0
- package/dist/cjs/hooks/index.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useMultiBarcodeScanner.js +6 -3
- package/dist/cjs/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useProductDetector.js +161 -90
- package/dist/cjs/hooks/useProductDetector.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useReceiptScanner.js +60 -52
- package/dist/cjs/hooks/useReceiptScanner.js.map +1 -0
- package/dist/{hooks → cjs/hooks}/useVideoScanner.js +8 -5
- package/dist/cjs/hooks/useVideoScanner.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +8 -4
- package/dist/cjs/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/detectionProcessor.js +1 -0
- package/dist/cjs/processors/detectionProcessor.js.map +1 -0
- package/dist/{processors → cjs/processors}/index.js +1 -0
- package/dist/cjs/processors/index.js.map +1 -0
- package/dist/{processors → cjs/processors}/tfliteFrameProcessor.js +108 -25
- package/dist/cjs/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/{types → cjs/types}/barcode.js +1 -0
- package/dist/cjs/types/barcode.js.map +1 -0
- package/dist/{types → cjs/types}/detection.js +1 -0
- package/dist/cjs/types/detection.js.map +1 -0
- package/dist/{types → cjs/types}/index.js +1 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/{types → cjs/types}/ocr.js +1 -0
- package/dist/cjs/types/ocr.js.map +1 -0
- package/dist/{utils → cjs/utils}/imagePreprocessor.js +30 -25
- package/dist/cjs/utils/imagePreprocessor.js.map +1 -0
- package/dist/cjs/utils/logger.js +99 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/{utils → cjs/utils}/yoloProcessor.js +1 -0
- package/dist/cjs/utils/yoloProcessor.js.map +1 -0
- package/dist/esm/components/DetectionOverlay.js +130 -0
- package/dist/esm/components/DetectionOverlay.js.map +1 -0
- package/dist/esm/components/index.js +5 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/core/CacheManager.js +327 -0
- package/dist/esm/core/CacheManager.js.map +1 -0
- package/dist/esm/core/MLVisionProvider.js +185 -0
- package/dist/esm/core/MLVisionProvider.js.map +1 -0
- package/dist/esm/core/ServerClient.js +305 -0
- package/dist/esm/core/ServerClient.js.map +1 -0
- package/dist/esm/core/index.js +7 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/hooks/classLabels.js +436 -0
- package/dist/esm/hooks/classLabels.js.map +1 -0
- package/dist/esm/hooks/classLabelsCoco.js +98 -0
- package/dist/esm/hooks/classLabelsCoco.js.map +1 -0
- package/dist/esm/hooks/index.js +9 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js +290 -0
- package/dist/esm/hooks/useMultiBarcodeScanner.js.map +1 -0
- package/dist/esm/hooks/useProductDetector.js +714 -0
- package/dist/esm/hooks/useProductDetector.js.map +1 -0
- package/dist/esm/hooks/useReceiptScanner.js +407 -0
- package/dist/esm/hooks/useReceiptScanner.js.map +1 -0
- package/dist/esm/hooks/useVideoScanner.js +383 -0
- package/dist/esm/hooks/useVideoScanner.js.map +1 -0
- package/dist/esm/index.js +93 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/processors/detectionProcessor.js +121 -0
- package/dist/esm/processors/detectionProcessor.js.map +1 -0
- package/dist/esm/processors/index.js +7 -0
- package/dist/esm/processors/index.js.map +1 -0
- package/dist/esm/processors/tfliteFrameProcessor.js +292 -0
- package/dist/esm/processors/tfliteFrameProcessor.js.map +1 -0
- package/dist/esm/types/barcode.js +17 -0
- package/dist/esm/types/barcode.js.map +1 -0
- package/dist/esm/types/detection.js +8 -0
- package/dist/esm/types/detection.js.map +1 -0
- package/dist/esm/types/index.js +10 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/ocr.js +8 -0
- package/dist/esm/types/ocr.js.map +1 -0
- package/dist/esm/utils/imagePreprocessor.js +268 -0
- package/dist/esm/utils/imagePreprocessor.js.map +1 -0
- package/dist/esm/utils/logger.js +94 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/yoloProcessor.js +151 -0
- package/dist/esm/utils/yoloProcessor.js.map +1 -0
- package/dist/{components → types/components}/DetectionOverlay.d.ts +1 -0
- package/dist/types/components/DetectionOverlay.d.ts.map +1 -0
- package/dist/{components → types/components}/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -0
- package/dist/{core → types/core}/CacheManager.d.ts +1 -0
- package/dist/types/core/CacheManager.d.ts.map +1 -0
- package/dist/{core → types/core}/MLVisionProvider.d.ts +1 -0
- package/dist/types/core/MLVisionProvider.d.ts.map +1 -0
- package/dist/{core → types/core}/ServerClient.d.ts +1 -0
- package/dist/types/core/ServerClient.d.ts.map +1 -0
- package/dist/{core → types/core}/index.d.ts +1 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabels.d.ts +1 -0
- package/dist/types/hooks/classLabels.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/classLabelsCoco.d.ts +1 -0
- package/dist/types/hooks/classLabelsCoco.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useMultiBarcodeScanner.d.ts +1 -0
- package/dist/types/hooks/useMultiBarcodeScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useProductDetector.d.ts +1 -0
- package/dist/types/hooks/useProductDetector.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useReceiptScanner.d.ts +2 -1
- package/dist/types/hooks/useReceiptScanner.d.ts.map +1 -0
- package/dist/{hooks → types/hooks}/useVideoScanner.d.ts +1 -0
- package/dist/types/hooks/useVideoScanner.d.ts.map +1 -0
- package/dist/types/index.d.ts +58 -124
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/detectionProcessor.d.ts +1 -0
- package/dist/types/processors/detectionProcessor.d.ts.map +1 -0
- package/dist/{processors → types/processors}/index.d.ts +1 -0
- package/dist/types/processors/index.d.ts.map +1 -0
- package/dist/{processors → types/processors}/tfliteFrameProcessor.d.ts +5 -4
- package/dist/types/processors/tfliteFrameProcessor.d.ts.map +1 -0
- package/dist/types/{barcode.d.ts → types/barcode.d.ts} +1 -0
- package/dist/types/types/barcode.d.ts.map +1 -0
- package/dist/types/{detection.d.ts → types/detection.d.ts} +1 -0
- package/dist/types/types/detection.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +127 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/{ocr.d.ts → types/ocr.d.ts} +1 -0
- package/dist/types/types/ocr.d.ts.map +1 -0
- package/dist/{utils → types/utils}/imagePreprocessor.d.ts +1 -0
- package/dist/types/utils/imagePreprocessor.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +52 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/{utils → types/utils}/yoloProcessor.d.ts +1 -0
- package/dist/types/utils/yoloProcessor.d.ts.map +1 -0
- package/package.json +62 -21
- package/dist/index.d.ts +0 -58
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility for @souscheflabs/ml-vision
|
|
3
|
+
*
|
|
4
|
+
* Provides configurable logging with different levels.
|
|
5
|
+
* In production, set LOG_LEVEL to 'none' or 'error' to reduce noise.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { logger, setLogLevel } from './utils/logger';
|
|
10
|
+
*
|
|
11
|
+
* // Set log level (default: 'warn' in production, 'debug' in development)
|
|
12
|
+
* setLogLevel('debug');
|
|
13
|
+
*
|
|
14
|
+
* // Use logger
|
|
15
|
+
* logger.debug('Detailed info for debugging');
|
|
16
|
+
* logger.info('General information');
|
|
17
|
+
* logger.warn('Warning message');
|
|
18
|
+
* logger.error('Error occurred', error);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
const LOG_LEVELS = {
|
|
22
|
+
debug: 0,
|
|
23
|
+
info: 1,
|
|
24
|
+
warn: 2,
|
|
25
|
+
error: 3,
|
|
26
|
+
none: 4,
|
|
27
|
+
};
|
|
28
|
+
// Default to 'warn' in production, 'debug' in development
|
|
29
|
+
let currentLevel = __DEV__ ? 'debug' : 'warn';
|
|
30
|
+
/**
|
|
31
|
+
* Set the current log level
|
|
32
|
+
*/
|
|
33
|
+
export function setLogLevel(level) {
|
|
34
|
+
currentLevel = level;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Get the current log level
|
|
38
|
+
*/
|
|
39
|
+
export function getLogLevel() {
|
|
40
|
+
return currentLevel;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Check if a log level should be printed
|
|
44
|
+
*/
|
|
45
|
+
function shouldLog(level) {
|
|
46
|
+
return LOG_LEVELS[level] >= LOG_LEVELS[currentLevel];
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Format log message with prefix
|
|
50
|
+
*/
|
|
51
|
+
function formatMessage(prefix, message) {
|
|
52
|
+
return `[MLVision:${prefix}] ${message}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Logger instance with configurable levels
|
|
56
|
+
*/
|
|
57
|
+
export const logger = {
|
|
58
|
+
/**
|
|
59
|
+
* Debug level - detailed information for debugging
|
|
60
|
+
*/
|
|
61
|
+
debug(message, ...args) {
|
|
62
|
+
if (shouldLog('debug')) {
|
|
63
|
+
// eslint-disable-next-line no-console
|
|
64
|
+
console.log(formatMessage('DEBUG', message), ...args);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
/**
|
|
68
|
+
* Info level - general information
|
|
69
|
+
*/
|
|
70
|
+
info(message, ...args) {
|
|
71
|
+
if (shouldLog('info')) {
|
|
72
|
+
// eslint-disable-next-line no-console
|
|
73
|
+
console.log(formatMessage('INFO', message), ...args);
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
/**
|
|
77
|
+
* Warn level - warning messages
|
|
78
|
+
*/
|
|
79
|
+
warn(message, ...args) {
|
|
80
|
+
if (shouldLog('warn')) {
|
|
81
|
+
console.warn(formatMessage('WARN', message), ...args);
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Error level - error messages
|
|
86
|
+
*/
|
|
87
|
+
error(message, ...args) {
|
|
88
|
+
if (shouldLog('error')) {
|
|
89
|
+
console.error(formatMessage('ERROR', message), ...args);
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
export default logger;
|
|
94
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACR,CAAC;AAEF,0DAA0D;AAC1D,IAAI,YAAY,GAAa,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAExD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAe;IACzC,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,MAAc,EAAE,OAAe;IACpD,OAAO,aAAa,MAAM,KAAK,OAAO,EAAE,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe,EAAE,GAAG,IAAe;QACtC,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe,EAAE,GAAG,IAAe;QACvC,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* YOLO Output Processor
|
|
3
|
+
*
|
|
4
|
+
* Processes raw YOLOv8 TFLite model output into detection results.
|
|
5
|
+
* YOLOv8 output format: [1, 84, 8400] where:
|
|
6
|
+
* - 84 = 4 (bbox) + 80 (class scores for COCO)
|
|
7
|
+
* - 8400 = number of predictions (from 3 detection heads)
|
|
8
|
+
*
|
|
9
|
+
* For custom models with N classes: [1, 4+N, 8400]
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Process YOLOv8 model output into detections
|
|
13
|
+
*
|
|
14
|
+
* @param output Raw model output as Float32Array
|
|
15
|
+
* @param numClasses Number of classes in the model
|
|
16
|
+
* @param confThreshold Minimum confidence threshold (0-1)
|
|
17
|
+
* @param iouThreshold IoU threshold for NMS (0-1)
|
|
18
|
+
* @returns Array of processed detections
|
|
19
|
+
*/
|
|
20
|
+
export function processYoloOutput(output, numClasses, confThreshold = 0.25, iouThreshold = 0.45) {
|
|
21
|
+
// YOLOv8 output shape: [1, 4+numClasses, 8400]
|
|
22
|
+
// We need to transpose to [8400, 4+numClasses] for easier processing
|
|
23
|
+
const numPredictions = 8400;
|
|
24
|
+
// Note: numOutputs = 4 + numClasses (4 bbox coords + class scores)
|
|
25
|
+
// Extract raw detections above confidence threshold
|
|
26
|
+
const rawDetections = [];
|
|
27
|
+
for (let i = 0; i < numPredictions; i++) {
|
|
28
|
+
// Find the class with highest score
|
|
29
|
+
let maxScore = 0;
|
|
30
|
+
let maxClassIdx = 0;
|
|
31
|
+
for (let c = 0; c < numClasses; c++) {
|
|
32
|
+
// Output is in format [1, 84, 8400], so index is: (4 + c) * 8400 + i
|
|
33
|
+
const score = output[(4 + c) * numPredictions + i];
|
|
34
|
+
if (score > maxScore) {
|
|
35
|
+
maxScore = score;
|
|
36
|
+
maxClassIdx = c;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (maxScore >= confThreshold) {
|
|
40
|
+
// Extract bounding box (center x, center y, width, height)
|
|
41
|
+
const cx = output[0 * numPredictions + i];
|
|
42
|
+
const cy = output[1 * numPredictions + i];
|
|
43
|
+
const w = output[2 * numPredictions + i];
|
|
44
|
+
const h = output[3 * numPredictions + i];
|
|
45
|
+
rawDetections.push({
|
|
46
|
+
x: cx,
|
|
47
|
+
y: cy,
|
|
48
|
+
width: w,
|
|
49
|
+
height: h,
|
|
50
|
+
classIndex: maxClassIdx,
|
|
51
|
+
confidence: maxScore,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Apply Non-Maximum Suppression
|
|
56
|
+
const nmsDetections = nonMaxSuppression(rawDetections, iouThreshold);
|
|
57
|
+
// Convert from center format to corner format
|
|
58
|
+
return nmsDetections.map((det) => ({
|
|
59
|
+
x: Math.max(0, det.x - det.width / 2),
|
|
60
|
+
y: Math.max(0, det.y - det.height / 2),
|
|
61
|
+
width: det.width,
|
|
62
|
+
height: det.height,
|
|
63
|
+
classIndex: det.classIndex,
|
|
64
|
+
confidence: det.confidence,
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Non-Maximum Suppression to remove overlapping detections
|
|
69
|
+
*/
|
|
70
|
+
function nonMaxSuppression(detections, iouThreshold) {
|
|
71
|
+
if (detections.length === 0)
|
|
72
|
+
return [];
|
|
73
|
+
// Sort by confidence (highest first)
|
|
74
|
+
const sorted = [...detections].sort((a, b) => b.confidence - a.confidence);
|
|
75
|
+
const kept = [];
|
|
76
|
+
const suppressed = new Set();
|
|
77
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
78
|
+
if (suppressed.has(i))
|
|
79
|
+
continue;
|
|
80
|
+
const current = sorted[i];
|
|
81
|
+
kept.push(current);
|
|
82
|
+
// Suppress overlapping detections of the same class
|
|
83
|
+
for (let j = i + 1; j < sorted.length; j++) {
|
|
84
|
+
if (suppressed.has(j))
|
|
85
|
+
continue;
|
|
86
|
+
const other = sorted[j];
|
|
87
|
+
// Only suppress same class
|
|
88
|
+
if (current.classIndex !== other.classIndex)
|
|
89
|
+
continue;
|
|
90
|
+
const iou = calculateIoU(current, other);
|
|
91
|
+
if (iou > iouThreshold) {
|
|
92
|
+
suppressed.add(j);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return kept;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Calculate Intersection over Union between two boxes
|
|
100
|
+
* Boxes are in center format (cx, cy, w, h)
|
|
101
|
+
*/
|
|
102
|
+
function calculateIoU(box1, box2) {
|
|
103
|
+
// Convert to corner format
|
|
104
|
+
const x1_min = box1.x - box1.width / 2;
|
|
105
|
+
const y1_min = box1.y - box1.height / 2;
|
|
106
|
+
const x1_max = box1.x + box1.width / 2;
|
|
107
|
+
const y1_max = box1.y + box1.height / 2;
|
|
108
|
+
const x2_min = box2.x - box2.width / 2;
|
|
109
|
+
const y2_min = box2.y - box2.height / 2;
|
|
110
|
+
const x2_max = box2.x + box2.width / 2;
|
|
111
|
+
const y2_max = box2.y + box2.height / 2;
|
|
112
|
+
// Calculate intersection
|
|
113
|
+
const intersect_x_min = Math.max(x1_min, x2_min);
|
|
114
|
+
const intersect_y_min = Math.max(y1_min, y2_min);
|
|
115
|
+
const intersect_x_max = Math.min(x1_max, x2_max);
|
|
116
|
+
const intersect_y_max = Math.min(y1_max, y2_max);
|
|
117
|
+
const intersect_width = Math.max(0, intersect_x_max - intersect_x_min);
|
|
118
|
+
const intersect_height = Math.max(0, intersect_y_max - intersect_y_min);
|
|
119
|
+
const intersect_area = intersect_width * intersect_height;
|
|
120
|
+
// Calculate union
|
|
121
|
+
const area1 = box1.width * box1.height;
|
|
122
|
+
const area2 = box2.width * box2.height;
|
|
123
|
+
const union_area = area1 + area2 - intersect_area;
|
|
124
|
+
if (union_area === 0)
|
|
125
|
+
return 0;
|
|
126
|
+
return intersect_area / union_area;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Scale detection coordinates to actual image dimensions
|
|
130
|
+
*/
|
|
131
|
+
export function scaleDetections(detections, modelSize, imageWidth, imageHeight) {
|
|
132
|
+
// The model was trained on square images, so we need to account for letterboxing
|
|
133
|
+
const scale = Math.min(modelSize / imageWidth, modelSize / imageHeight);
|
|
134
|
+
const padX = (modelSize - imageWidth * scale) / 2;
|
|
135
|
+
const padY = (modelSize - imageHeight * scale) / 2;
|
|
136
|
+
return detections.map((det) => {
|
|
137
|
+
// Remove padding and scale back to original image dimensions
|
|
138
|
+
const x = (det.x * modelSize - padX) / scale / imageWidth;
|
|
139
|
+
const y = (det.y * modelSize - padY) / scale / imageHeight;
|
|
140
|
+
const w = (det.width * modelSize) / scale / imageWidth;
|
|
141
|
+
const h = (det.height * modelSize) / scale / imageHeight;
|
|
142
|
+
return {
|
|
143
|
+
...det,
|
|
144
|
+
x: Math.max(0, Math.min(1, x)),
|
|
145
|
+
y: Math.max(0, Math.min(1, y)),
|
|
146
|
+
width: Math.max(0, Math.min(1 - x, w)),
|
|
147
|
+
height: Math.max(0, Math.min(1 - y, h)),
|
|
148
|
+
};
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=yoloProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yoloProcessor.js","sourceRoot":"","sources":["../../../src/utils/yoloProcessor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DetectionOverlay.d.ts","sourceRoot":"","sources":["../../../src/components/DetectionOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAMxE,MAAM,WAAW,qBAAqB;IACpC,4CAA4C;IAC5C,UAAU,EAAE,sBAAsB,EAAE,CAAC;IACrC,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uCAAuC;IACvC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1D,gCAAgC;IAChC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kCAAkC;IAClC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,0CAA0C;IAC1C,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAChE;AAwBD,wBAAgB,gBAAgB,CAAC,EAC/B,UAAU,EACV,UAAU,EAAE,WAAW,EACvB,WAAW,EAAE,YAAY,EACzB,cAAqB,EACrB,SAAgB,EAChB,aAAiB,EACjB,cAAmB,EACnB,QAAQ,EACR,UAAU,EACV,gBAAgB,GACjB,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAyD5C;AAmCD;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,KAAK,CAAC,YAAY,CAQ5D;AAsBD,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CacheManager.d.ts","sourceRoot":"","sources":["../../../src/core/CacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MLVisionProvider.d.ts","sourceRoot":"","sources":["../../../src/core/MLVisionProvider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAsB,MAAM,gBAAgB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAoBrE;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjC,gDAAgD;IAChD,aAAa,EAAE,OAAO,CAAC;IACvB,wDAAwD;IACxD,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,kEAAkE;IAClE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,sCAAsC;IACtC,eAAe,EAAE,OAAO,CAAC;IACzB,yBAAyB;IACzB,YAAY,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1C,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAC9D,sCAAsC;IACtC,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC;CAC1D;AAYD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,mEAAmE;IACnE,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,6CAA6C;IAC7C,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,uCAAuC;IACvC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,OAAO,EACP,aAAa,EACb,OAAO,GACR,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAmH5C;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,IAAI,oBAAoB,CAWzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ServerClient.d.ts","sourceRoot":"","sources":["../../../src/core/ServerClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,3 +4,4 @@
|
|
|
4
4
|
export { MLVisionProvider, useMLVisionContext, useMLVisionReady, type MLVisionProviderProps, type MLVisionContextValue, } from './MLVisionProvider';
|
|
5
5
|
export { CacheManager, createCacheManager, CACHE_TTL, type CachedBarcodeLookup, type CachedProductRecognition, } from './CacheManager';
|
|
6
6
|
export { ServerClient, createServerClient, ServerError, type ServerRequestOptions, type ImageUploadData, type DetectionRequestOptions, type OCRRequestOptions, } from './ServerClient';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classLabels.d.ts","sourceRoot":"","sources":["../../../src/hooks/classLabels.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE/D;;GAEG;AACH,iBAAS,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,CAuHvD;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aA0O1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,MAAM,CAAC;AAE/B;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAOA;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAMzC;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,CAkC9D,CAAC;AAGF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"classLabelsCoco.d.ts","sourceRoot":"","sources":["../../../src/hooks/classLabelsCoco.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE/D;;GAEG;AACH,eAAO,MAAM,YAAY,w2BAaf,CAAC;AA+BX;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,aAK/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAA2C,CAAC;AAE3E;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAAuD,CAAC;AAE1F;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAMA;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C"}
|
|
@@ -6,3 +6,4 @@ export { useMultiBarcodeScanner, default as useMultiBarcodeScannerDefault } from
|
|
|
6
6
|
export { useReceiptScanner, default as useReceiptScannerDefault } from './useReceiptScanner';
|
|
7
7
|
export { useVideoScanner, default as useVideoScannerDefault, type ScanMode, type VideoScanResult, type UseVideoScannerOptions, type UseVideoScannerReturn, } from './useVideoScanner';
|
|
8
8
|
export { CLASS_LABELS, NUM_CLASSES, getClassInfo, getLabelsArray, CATEGORY_CLASSES } from './classLabels';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,OAAO,IAAI,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,OAAO,IAAI,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAC5G,OAAO,EAAE,iBAAiB,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EACL,eAAe,EACf,OAAO,IAAI,sBAAsB,EACjC,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -32,3 +32,4 @@ import type { UseMultiBarcodeScannerOptions, UseMultiBarcodeScannerReturn } from
|
|
|
32
32
|
*/
|
|
33
33
|
export declare function useMultiBarcodeScanner(options?: UseMultiBarcodeScannerOptions): UseMultiBarcodeScannerReturn;
|
|
34
34
|
export default useMultiBarcodeScanner;
|
|
35
|
+
//# sourceMappingURL=useMultiBarcodeScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMultiBarcodeScanner.d.ts","sourceRoot":"","sources":["../../../src/hooks/useMultiBarcodeScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,KAAK,EACV,6BAA6B,EAC7B,4BAA4B,EAI7B,MAAM,UAAU,CAAC;AAmBlB;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,6BAAkC,GAC1C,4BAA4B,CA4N9B;AA2ED,eAAe,sBAAsB,CAAC"}
|
|
@@ -36,3 +36,4 @@ import type { UseProductDetectorOptions, UseProductDetectorReturn } from '../typ
|
|
|
36
36
|
*/
|
|
37
37
|
export declare function useProductDetector(options?: UseProductDetectorOptions): UseProductDetectorReturn;
|
|
38
38
|
export default useProductDetector;
|
|
39
|
+
//# sourceMappingURL=useProductDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useProductDetector.d.ts","sourceRoot":"","sources":["../../../src/hooks/useProductDetector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,KAAK,EACV,yBAAyB,EACzB,wBAAwB,EAEzB,MAAM,UAAU,CAAC;AA6TlB;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA0iB1B;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -29,9 +29,10 @@
|
|
|
29
29
|
* }
|
|
30
30
|
* ```
|
|
31
31
|
*/
|
|
32
|
-
import type { UseReceiptScannerOptions, UseReceiptScannerReturn } from
|
|
32
|
+
import type { UseReceiptScannerOptions, UseReceiptScannerReturn } from "../types";
|
|
33
33
|
/**
|
|
34
34
|
* Hook for receipt scanning and parsing
|
|
35
35
|
*/
|
|
36
36
|
export declare function useReceiptScanner(options?: UseReceiptScannerOptions): UseReceiptScannerReturn;
|
|
37
37
|
export default useReceiptScanner;
|
|
38
|
+
//# sourceMappingURL=useReceiptScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useReceiptScanner.d.ts","sourceRoot":"","sources":["../../../src/hooks/useReceiptScanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EAMxB,MAAM,UAAU,CAAC;AA2ClB;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,uBAAuB,CAmZzB;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVideoScanner.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVideoScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,126 +1,60 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @souschef/ml-vision
|
|
2
|
+
* @souschef/ml-vision
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
*
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
export
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
*/
|
|
62
|
-
export interface ModelInfo {
|
|
63
|
-
/** Model identifier */
|
|
64
|
-
id: string;
|
|
65
|
-
/** Human-readable name */
|
|
66
|
-
name: string;
|
|
67
|
-
/** Semantic version */
|
|
68
|
-
version: string;
|
|
69
|
-
/** File size in bytes */
|
|
70
|
-
sizeBytes: number;
|
|
71
|
-
/** When the model was last updated */
|
|
72
|
-
lastUpdated: Date;
|
|
73
|
-
/** Model type */
|
|
74
|
-
type: 'detection' | 'classification' | 'ocr';
|
|
75
|
-
/** Whether the model is currently loaded */
|
|
76
|
-
isLoaded: boolean;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Model download progress
|
|
80
|
-
*/
|
|
81
|
-
export interface ModelDownloadProgress {
|
|
82
|
-
modelId: string;
|
|
83
|
-
bytesDownloaded: number;
|
|
84
|
-
totalBytes: number;
|
|
85
|
-
progress: number;
|
|
86
|
-
}
|
|
87
|
-
/**
|
|
88
|
-
* Cache entry wrapper
|
|
89
|
-
*/
|
|
90
|
-
export interface CacheEntry<T> {
|
|
91
|
-
data: T;
|
|
92
|
-
timestamp: number;
|
|
93
|
-
ttl: number;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Cache statistics
|
|
97
|
-
*/
|
|
98
|
-
export interface CacheStats {
|
|
99
|
-
barcodeEntries: number;
|
|
100
|
-
productEntries: number;
|
|
101
|
-
receiptEntries: number;
|
|
102
|
-
totalSizeBytes: number;
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Server health response
|
|
106
|
-
*/
|
|
107
|
-
export interface ServerHealthResponse {
|
|
108
|
-
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
109
|
-
version: string;
|
|
110
|
-
models: {
|
|
111
|
-
id: string;
|
|
112
|
-
loaded: boolean;
|
|
113
|
-
lastUsed?: string;
|
|
114
|
-
}[];
|
|
115
|
-
gpuAvailable: boolean;
|
|
116
|
-
gpuMemoryUsed?: number;
|
|
117
|
-
gpuMemoryTotal?: number;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Server error response
|
|
121
|
-
*/
|
|
122
|
-
export interface ServerErrorResponse {
|
|
123
|
-
error: string;
|
|
124
|
-
code: string;
|
|
125
|
-
details?: Record<string, unknown>;
|
|
126
|
-
}
|
|
4
|
+
* ML-powered product detection for React Native
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Multi-barcode scanning (scan multiple barcodes at once)
|
|
8
|
+
* - Receipt OCR (photograph receipts to extract items)
|
|
9
|
+
* - Visual product recognition (recognize fridge/pantry contents)
|
|
10
|
+
* - Video scanning (real-time product detection)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import {
|
|
15
|
+
* MLVisionProvider,
|
|
16
|
+
* useMultiBarcodeScanner,
|
|
17
|
+
* useProductDetector,
|
|
18
|
+
* useReceiptScanner,
|
|
19
|
+
* } from '@souschef/ml-vision';
|
|
20
|
+
*
|
|
21
|
+
* // Wrap your app with the provider
|
|
22
|
+
* function App() {
|
|
23
|
+
* return (
|
|
24
|
+
* <MLVisionProvider
|
|
25
|
+
* config={{ serverUrl: 'http://192.168.1.100:8000' }}
|
|
26
|
+
* storage={mmkvInstance}
|
|
27
|
+
* >
|
|
28
|
+
* <YourApp />
|
|
29
|
+
* </MLVisionProvider>
|
|
30
|
+
* );
|
|
31
|
+
* }
|
|
32
|
+
*
|
|
33
|
+
* // Use hooks in your components
|
|
34
|
+
* function ScannerScreen() {
|
|
35
|
+
* const { scanPhoto, results } = useMultiBarcodeScanner();
|
|
36
|
+
* const { detectProducts, detections } = useProductDetector();
|
|
37
|
+
*
|
|
38
|
+
* // ...
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @packageDocumentation
|
|
43
|
+
*/
|
|
44
|
+
export type { MLVisionConfig, BoundingBox, BaseDetectionResult, ModelInfo, ModelDownloadProgress, CacheEntry, CacheStats, ServerHealthResponse, ServerErrorResponse, BarcodeFormat, BarcodeData, BarcodeDetectionResult, UseMultiBarcodeScannerOptions, UseMultiBarcodeScannerReturn, BarcodeCacheEntry, ProductCategory, ProduceType, ProduceQuality, ProductData, ProductMatch, ProduceData, ProductDetectionResult, DetectionModel, UseProductDetectorOptions, UseProductDetectorReturn, TFLiteDetectionOutput, ClassLabelMap, TextLine, TextBlock, TextRecognitionResult, ReceiptItem, ReceiptMetadata, ReceiptScanResult, KnownStore, UseReceiptScannerOptions, UseReceiptScannerReturn, ReceiptLineType, ParsedReceiptLine, } from './types';
|
|
45
|
+
export { GROCERY_BARCODE_FORMATS } from './types/barcode';
|
|
46
|
+
export { MLVisionProvider, useMLVisionContext, useMLVisionReady, type MLVisionProviderProps, type MLVisionContextValue, CacheManager, createCacheManager, CACHE_TTL, type CachedBarcodeLookup, type CachedProductRecognition, ServerClient, createServerClient, ServerError, type ServerRequestOptions, type ImageUploadData, type DetectionRequestOptions, type OCRRequestOptions, } from './core';
|
|
47
|
+
export { useProductDetector } from './hooks/useProductDetector';
|
|
48
|
+
export { CLASS_LABELS, NUM_CLASSES, getClassInfo, getLabelsArray, CATEGORY_CLASSES, } from './hooks/classLabels';
|
|
49
|
+
export { useMultiBarcodeScanner } from './hooks/useMultiBarcodeScanner';
|
|
50
|
+
export { useReceiptScanner } from './hooks/useReceiptScanner';
|
|
51
|
+
export { useVideoScanner, type ScanMode, type VideoScanResult, type UseVideoScannerOptions, type UseVideoScannerReturn, } from './hooks/useVideoScanner';
|
|
52
|
+
export { DetectionOverlay, DetectionLoadingOverlay, type DetectionOverlayProps, } from './components';
|
|
53
|
+
export { createDetectionProcessor, frameDetectionToResult, getClassLabel, type FrameDetection, type DetectionProcessorOptions, } from './processors';
|
|
54
|
+
export { useTFLiteFrameProcessor, createTFLiteFrameProcessor, type TFLiteFrameDetection, type FrameProcessorResult, type UseTFLiteFrameProcessorOptions, } from './processors';
|
|
55
|
+
export { preprocessImage, isSkiaAvailable, isResizePluginAvailable, getFrameProcessorInstructions, } from './utils/imagePreprocessor';
|
|
56
|
+
export { processYoloOutput, scaleDetections, } from './utils/yoloProcessor';
|
|
57
|
+
export { COCO_CLASSES, CLASS_LABELS_COCO, NUM_CLASSES_COCO, FOOD_CLASS_INDICES, getCocoClassInfo, isFoodClass, } from './hooks/classLabelsCoco';
|
|
58
|
+
export { logger, setLogLevel, getLogLevel, type LogLevel, } from './utils/logger';
|
|
59
|
+
export declare const VERSION = "0.1.1";
|
|
60
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,YAAY,EAEV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,UAAU,EACV,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EAGnB,aAAa,EACb,WAAW,EACX,sBAAsB,EACtB,6BAA6B,EAC7B,4BAA4B,EAC5B,iBAAiB,EAGjB,eAAe,EACf,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,cAAc,EACd,yBAAyB,EACzB,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EAGb,QAAQ,EACR,SAAS,EACT,qBAAqB,EACrB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,UAAU,EACV,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAM1D,OAAO,EAEL,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAGzB,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAG7B,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,GACvB,MAAM,QAAQ,CAAC;AAOhB,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EACL,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EACL,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,8BAA8B,GACpC,MAAM,cAAc,CAAC;AAOtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectionProcessor.d.ts","sourceRoot":"","sources":["../../../src/processors/detectionProcessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAe,MAAM,UAAU,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,oCAAoC;IACpC,GAAG,EAAE;QACH,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAYD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,yBAA8B,IAW5E,QAAQ,OAAO,KACd,cAAc,EAAE,CAoBpB;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,cAAc,EACzB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,sBAAsB,CA4BxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAMD,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -3,3 +3,4 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { createDetectionProcessor, frameDetectionToResult, getClassLabel, NUM_CLASSES, CLASS_LABELS, type FrameDetection, type DetectionProcessorOptions, } from './detectionProcessor';
|
|
5
5
|
export { useTFLiteFrameProcessor, createTFLiteFrameProcessor, type FrameDetection as TFLiteFrameDetection, type FrameProcessorResult, type UseTFLiteFrameProcessorOptions, } from './tfliteFrameProcessor';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|