@souscheflabs/ml-vision 0.1.0 → 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.
Files changed (149) hide show
  1. package/CHANGELOG.md +54 -0
  2. package/LICENSE +15 -0
  3. package/README.md +50 -5
  4. package/dist/{components → cjs/components}/DetectionOverlay.js +1 -0
  5. package/dist/cjs/components/DetectionOverlay.js.map +1 -0
  6. package/dist/{components → cjs/components}/index.js +1 -0
  7. package/dist/cjs/components/index.js.map +1 -0
  8. package/dist/{core → cjs/core}/CacheManager.js +1 -0
  9. package/dist/cjs/core/CacheManager.js.map +1 -0
  10. package/dist/{core → cjs/core}/MLVisionProvider.js +4 -2
  11. package/dist/cjs/core/MLVisionProvider.js.map +1 -0
  12. package/dist/{core → cjs/core}/ServerClient.js +33 -13
  13. package/dist/cjs/core/ServerClient.js.map +1 -0
  14. package/dist/{core → cjs/core}/index.js +1 -0
  15. package/dist/cjs/core/index.js.map +1 -0
  16. package/dist/{hooks → cjs/hooks}/classLabels.js +1 -0
  17. package/dist/cjs/hooks/classLabels.js.map +1 -0
  18. package/dist/{hooks → cjs/hooks}/classLabelsCoco.js +1 -0
  19. package/dist/cjs/hooks/classLabelsCoco.js.map +1 -0
  20. package/dist/{hooks → cjs/hooks}/index.js +1 -0
  21. package/dist/cjs/hooks/index.js.map +1 -0
  22. package/dist/{hooks → cjs/hooks}/useMultiBarcodeScanner.js +6 -3
  23. package/dist/cjs/hooks/useMultiBarcodeScanner.js.map +1 -0
  24. package/dist/{hooks → cjs/hooks}/useProductDetector.js +161 -90
  25. package/dist/cjs/hooks/useProductDetector.js.map +1 -0
  26. package/dist/{hooks → cjs/hooks}/useReceiptScanner.js +60 -52
  27. package/dist/cjs/hooks/useReceiptScanner.js.map +1 -0
  28. package/dist/{hooks → cjs/hooks}/useVideoScanner.js +8 -5
  29. package/dist/cjs/hooks/useVideoScanner.js.map +1 -0
  30. package/dist/{index.js → cjs/index.js} +8 -4
  31. package/dist/cjs/index.js.map +1 -0
  32. package/dist/{processors → cjs/processors}/detectionProcessor.js +1 -0
  33. package/dist/cjs/processors/detectionProcessor.js.map +1 -0
  34. package/dist/{processors → cjs/processors}/index.js +1 -0
  35. package/dist/cjs/processors/index.js.map +1 -0
  36. package/dist/{processors → cjs/processors}/tfliteFrameProcessor.js +108 -25
  37. package/dist/cjs/processors/tfliteFrameProcessor.js.map +1 -0
  38. package/dist/{types → cjs/types}/barcode.js +1 -0
  39. package/dist/cjs/types/barcode.js.map +1 -0
  40. package/dist/{types → cjs/types}/detection.js +1 -0
  41. package/dist/cjs/types/detection.js.map +1 -0
  42. package/dist/{types → cjs/types}/index.js +1 -0
  43. package/dist/cjs/types/index.js.map +1 -0
  44. package/dist/{types → cjs/types}/ocr.js +1 -0
  45. package/dist/cjs/types/ocr.js.map +1 -0
  46. package/dist/{utils → cjs/utils}/imagePreprocessor.js +30 -25
  47. package/dist/cjs/utils/imagePreprocessor.js.map +1 -0
  48. package/dist/cjs/utils/logger.js +99 -0
  49. package/dist/cjs/utils/logger.js.map +1 -0
  50. package/dist/{utils → cjs/utils}/yoloProcessor.js +1 -0
  51. package/dist/cjs/utils/yoloProcessor.js.map +1 -0
  52. package/dist/esm/components/DetectionOverlay.js +130 -0
  53. package/dist/esm/components/DetectionOverlay.js.map +1 -0
  54. package/dist/esm/components/index.js +5 -0
  55. package/dist/esm/components/index.js.map +1 -0
  56. package/dist/esm/core/CacheManager.js +327 -0
  57. package/dist/esm/core/CacheManager.js.map +1 -0
  58. package/dist/esm/core/MLVisionProvider.js +185 -0
  59. package/dist/esm/core/MLVisionProvider.js.map +1 -0
  60. package/dist/esm/core/ServerClient.js +305 -0
  61. package/dist/esm/core/ServerClient.js.map +1 -0
  62. package/dist/esm/core/index.js +7 -0
  63. package/dist/esm/core/index.js.map +1 -0
  64. package/dist/esm/hooks/classLabels.js +436 -0
  65. package/dist/esm/hooks/classLabels.js.map +1 -0
  66. package/dist/esm/hooks/classLabelsCoco.js +98 -0
  67. package/dist/esm/hooks/classLabelsCoco.js.map +1 -0
  68. package/dist/esm/hooks/index.js +9 -0
  69. package/dist/esm/hooks/index.js.map +1 -0
  70. package/dist/esm/hooks/useMultiBarcodeScanner.js +290 -0
  71. package/dist/esm/hooks/useMultiBarcodeScanner.js.map +1 -0
  72. package/dist/esm/hooks/useProductDetector.js +714 -0
  73. package/dist/esm/hooks/useProductDetector.js.map +1 -0
  74. package/dist/esm/hooks/useReceiptScanner.js +407 -0
  75. package/dist/esm/hooks/useReceiptScanner.js.map +1 -0
  76. package/dist/esm/hooks/useVideoScanner.js +383 -0
  77. package/dist/esm/hooks/useVideoScanner.js.map +1 -0
  78. package/dist/esm/index.js +93 -0
  79. package/dist/esm/index.js.map +1 -0
  80. package/dist/esm/processors/detectionProcessor.js +121 -0
  81. package/dist/esm/processors/detectionProcessor.js.map +1 -0
  82. package/dist/esm/processors/index.js +7 -0
  83. package/dist/esm/processors/index.js.map +1 -0
  84. package/dist/esm/processors/tfliteFrameProcessor.js +292 -0
  85. package/dist/esm/processors/tfliteFrameProcessor.js.map +1 -0
  86. package/dist/esm/types/barcode.js +17 -0
  87. package/dist/esm/types/barcode.js.map +1 -0
  88. package/dist/esm/types/detection.js +8 -0
  89. package/dist/esm/types/detection.js.map +1 -0
  90. package/dist/esm/types/index.js +10 -0
  91. package/dist/esm/types/index.js.map +1 -0
  92. package/dist/esm/types/ocr.js +8 -0
  93. package/dist/esm/types/ocr.js.map +1 -0
  94. package/dist/esm/utils/imagePreprocessor.js +268 -0
  95. package/dist/esm/utils/imagePreprocessor.js.map +1 -0
  96. package/dist/esm/utils/logger.js +94 -0
  97. package/dist/esm/utils/logger.js.map +1 -0
  98. package/dist/esm/utils/yoloProcessor.js +151 -0
  99. package/dist/esm/utils/yoloProcessor.js.map +1 -0
  100. package/dist/{components → types/components}/DetectionOverlay.d.ts +1 -0
  101. package/dist/types/components/DetectionOverlay.d.ts.map +1 -0
  102. package/dist/{components → types/components}/index.d.ts +1 -0
  103. package/dist/types/components/index.d.ts.map +1 -0
  104. package/dist/{core → types/core}/CacheManager.d.ts +1 -0
  105. package/dist/types/core/CacheManager.d.ts.map +1 -0
  106. package/dist/{core → types/core}/MLVisionProvider.d.ts +1 -0
  107. package/dist/types/core/MLVisionProvider.d.ts.map +1 -0
  108. package/dist/{core → types/core}/ServerClient.d.ts +1 -0
  109. package/dist/types/core/ServerClient.d.ts.map +1 -0
  110. package/dist/{core → types/core}/index.d.ts +1 -0
  111. package/dist/types/core/index.d.ts.map +1 -0
  112. package/dist/{hooks → types/hooks}/classLabels.d.ts +1 -0
  113. package/dist/types/hooks/classLabels.d.ts.map +1 -0
  114. package/dist/{hooks → types/hooks}/classLabelsCoco.d.ts +1 -0
  115. package/dist/types/hooks/classLabelsCoco.d.ts.map +1 -0
  116. package/dist/{hooks → types/hooks}/index.d.ts +1 -0
  117. package/dist/types/hooks/index.d.ts.map +1 -0
  118. package/dist/{hooks → types/hooks}/useMultiBarcodeScanner.d.ts +1 -0
  119. package/dist/types/hooks/useMultiBarcodeScanner.d.ts.map +1 -0
  120. package/dist/{hooks → types/hooks}/useProductDetector.d.ts +1 -0
  121. package/dist/types/hooks/useProductDetector.d.ts.map +1 -0
  122. package/dist/{hooks → types/hooks}/useReceiptScanner.d.ts +2 -1
  123. package/dist/types/hooks/useReceiptScanner.d.ts.map +1 -0
  124. package/dist/{hooks → types/hooks}/useVideoScanner.d.ts +1 -0
  125. package/dist/types/hooks/useVideoScanner.d.ts.map +1 -0
  126. package/dist/types/index.d.ts +58 -124
  127. package/dist/types/index.d.ts.map +1 -0
  128. package/dist/{processors → types/processors}/detectionProcessor.d.ts +1 -0
  129. package/dist/types/processors/detectionProcessor.d.ts.map +1 -0
  130. package/dist/{processors → types/processors}/index.d.ts +1 -0
  131. package/dist/types/processors/index.d.ts.map +1 -0
  132. package/dist/{processors → types/processors}/tfliteFrameProcessor.d.ts +5 -4
  133. package/dist/types/processors/tfliteFrameProcessor.d.ts.map +1 -0
  134. package/dist/types/{barcode.d.ts → types/barcode.d.ts} +1 -0
  135. package/dist/types/types/barcode.d.ts.map +1 -0
  136. package/dist/types/{detection.d.ts → types/detection.d.ts} +1 -0
  137. package/dist/types/types/detection.d.ts.map +1 -0
  138. package/dist/types/types/index.d.ts +127 -0
  139. package/dist/types/types/index.d.ts.map +1 -0
  140. package/dist/types/{ocr.d.ts → types/ocr.d.ts} +1 -0
  141. package/dist/types/types/ocr.d.ts.map +1 -0
  142. package/dist/{utils → types/utils}/imagePreprocessor.d.ts +1 -0
  143. package/dist/types/utils/imagePreprocessor.d.ts.map +1 -0
  144. package/dist/types/utils/logger.d.ts +52 -0
  145. package/dist/types/utils/logger.d.ts.map +1 -0
  146. package/dist/{utils → types/utils}/yoloProcessor.d.ts +1 -0
  147. package/dist/types/utils/yoloProcessor.d.ts.map +1 -0
  148. package/package.json +62 -21
  149. package/dist/index.d.ts +0 -58
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProductDetector.js","sourceRoot":"","sources":["../../../src/hooks/useProductDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,407 @@
1
+ /**
2
+ * useReceiptScanner Hook
3
+ *
4
+ * React hook for scanning and parsing grocery receipts.
5
+ * Uses MLKit text recognition with intelligent parsing.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { useReceiptScanner } from '@souschef/ml-vision';
10
+ *
11
+ * function ReceiptScreen() {
12
+ * const {
13
+ * items,
14
+ * metadata,
15
+ * isProcessing,
16
+ * scanReceipt,
17
+ * } = useReceiptScanner({
18
+ * onParseComplete: (result) => console.log('Parsed:', result),
19
+ * });
20
+ *
21
+ * const handleCapture = async (photoUri: string) => {
22
+ * const result = await scanReceipt(photoUri);
23
+ * // result.items contains parsed line items
24
+ * };
25
+ *
26
+ * return (
27
+ * // Your UI
28
+ * );
29
+ * }
30
+ * ```
31
+ */
32
+ import { useState, useCallback, useRef } from "react";
33
+ import TextRecognition from "@react-native-ml-kit/text-recognition";
34
+ import { useMLVisionContext } from "../core/MLVisionProvider";
35
+ import { logger } from "../utils/logger";
36
+ // ============================================================================
37
+ // Receipt Parsing Patterns
38
+ // ============================================================================
39
+ /** Price pattern: matches $X.XX, X.XX, etc. */
40
+ const PRICE_PATTERN = /\$?\d{1,4}\.\d{2}/g;
41
+ /** Quantity pattern: matches Xkg, X lb, X ct, etc. */
42
+ const QUANTITY_PATTERN = /(\d+(?:\.\d+)?)\s*(kg|lb|oz|ct|ea|pc|g|ml|l|gal)?/i;
43
+ /** Date patterns */
44
+ const DATE_PATTERNS = [
45
+ /(\d{1,2})[/-](\d{1,2})[/-](\d{2,4})/, // MM/DD/YYYY or DD/MM/YYYY
46
+ /(\w{3})\s+(\d{1,2}),?\s*(\d{4})/i, // Jan 15, 2024
47
+ ];
48
+ /** Time pattern */
49
+ const TIME_PATTERN = /\d{1,2}:\d{2}(?::\d{2})?\s*(?:AM|PM)?/i;
50
+ // Total/Subtotal patterns (used for line classification)
51
+ // TOTAL|GRAND TOTAL|AMOUNT DUE, SUBTOTAL, TAX
52
+ /** Known store patterns for detection */
53
+ const STORE_PATTERNS = [
54
+ { pattern: /WALMART/i, store: "walmart" },
55
+ { pattern: /TARGET/i, store: "target" },
56
+ { pattern: /KROGER/i, store: "kroger" },
57
+ { pattern: /SAFEWAY/i, store: "safeway" },
58
+ { pattern: /COSTCO/i, store: "costco" },
59
+ { pattern: /TRADER\s*JOE/i, store: "trader_joes" },
60
+ { pattern: /WHOLE\s*FOODS/i, store: "whole_foods" },
61
+ { pattern: /PUBLIX/i, store: "publix" },
62
+ { pattern: /ALDI/i, store: "aldi" },
63
+ ];
64
+ // ============================================================================
65
+ // Hook Implementation
66
+ // ============================================================================
67
+ /**
68
+ * Hook for receipt scanning and parsing
69
+ */
70
+ export function useReceiptScanner(options = {}) {
71
+ const { serverFallback = true, serverUrl, minConfidence = 0.7, onItemDetected, onParseComplete, onError, } = options;
72
+ // Context
73
+ const { serverClient, serverAvailable, config } = useMLVisionContext();
74
+ // State
75
+ const [isProcessing, setIsProcessing] = useState(false);
76
+ const [items, setItems] = useState([]);
77
+ const [metadata, setMetadata] = useState(null);
78
+ const [rawText, setRawText] = useState("");
79
+ const [confidence, setConfidence] = useState(0);
80
+ const [source, setSource] = useState(null);
81
+ const [error, setError] = useState(null);
82
+ // Refs
83
+ const mountedRef = useRef(true);
84
+ // Computed server URL
85
+ const effectiveServerUrl = serverUrl || config.serverUrl;
86
+ // ============================================================================
87
+ // Receipt Parsing Logic
88
+ // ============================================================================
89
+ /**
90
+ * Parse raw OCR text into receipt items
91
+ */
92
+ const parseReceiptText = useCallback((text) => {
93
+ const lines = text.split("\n").filter((line) => line.trim());
94
+ const parsedLines = lines.map((line, index) => classifyLine(line, index));
95
+ // Extract metadata
96
+ const extractedMetadata = {};
97
+ // Find store name
98
+ for (const { pattern, store } of STORE_PATTERNS) {
99
+ if (pattern.test(text)) {
100
+ extractedMetadata.storeName = store.toUpperCase().replace("_", " ");
101
+ break;
102
+ }
103
+ }
104
+ // Find date and time
105
+ for (const line of lines.slice(0, 10)) {
106
+ for (const datePattern of DATE_PATTERNS) {
107
+ const match = line.match(datePattern);
108
+ if (match) {
109
+ try {
110
+ extractedMetadata.date = new Date(match[0]);
111
+ }
112
+ catch {
113
+ // Invalid date
114
+ }
115
+ break;
116
+ }
117
+ }
118
+ const timeMatch = line.match(TIME_PATTERN);
119
+ if (timeMatch) {
120
+ extractedMetadata.time = timeMatch[0];
121
+ }
122
+ }
123
+ // Find totals
124
+ for (const parsedLine of parsedLines) {
125
+ if (parsedLine.type === "total" && parsedLine.values.price) {
126
+ extractedMetadata.total = parsedLine.values.price;
127
+ }
128
+ else if (parsedLine.type === "subtotal" && parsedLine.values.price) {
129
+ extractedMetadata.subtotal = parsedLine.values.price;
130
+ }
131
+ else if (parsedLine.type === "tax" && parsedLine.values.price) {
132
+ extractedMetadata.tax = parsedLine.values.price;
133
+ }
134
+ }
135
+ // Extract items
136
+ const extractedItems = parsedLines
137
+ .filter((line) => line.type === "item")
138
+ .map((line) => {
139
+ const item = {
140
+ name: line.values.name || line.text,
141
+ normalizedName: normalizeItemName(line.values.name || line.text),
142
+ quantity: line.values.quantity,
143
+ totalPrice: line.values.price,
144
+ confidence: line.confidence,
145
+ rawText: line.text,
146
+ lineNumber: line.lineNumber,
147
+ needsReview: line.confidence < minConfidence,
148
+ };
149
+ // Notify per item
150
+ onItemDetected?.(item);
151
+ return item;
152
+ });
153
+ return { items: extractedItems, metadata: extractedMetadata };
154
+ }, [minConfidence, onItemDetected]);
155
+ /**
156
+ * Classify a single receipt line
157
+ */
158
+ function classifyLine(text, lineNumber) {
159
+ const trimmed = text.trim();
160
+ let type = "unknown";
161
+ let lineConfidence = 0.5;
162
+ const values = {};
163
+ // Check for totals first
164
+ if (/^TOTAL/i.test(trimmed) || /GRAND\s*TOTAL/i.test(trimmed)) {
165
+ type = "total";
166
+ lineConfidence = 0.95;
167
+ }
168
+ else if (/^SUBTOTAL/i.test(trimmed)) {
169
+ type = "subtotal";
170
+ lineConfidence = 0.95;
171
+ }
172
+ else if (/^TAX/i.test(trimmed) || /SALES\s*TAX/i.test(trimmed)) {
173
+ type = "tax";
174
+ lineConfidence = 0.95;
175
+ }
176
+ else if (/^(CASH|CREDIT|DEBIT|VISA|MASTERCARD|AMEX)/i.test(trimmed)) {
177
+ type = "payment";
178
+ lineConfidence = 0.9;
179
+ }
180
+ else if (DATE_PATTERNS.some((p) => p.test(trimmed))) {
181
+ type = "date_time";
182
+ lineConfidence = 0.85;
183
+ }
184
+ else if (STORE_PATTERNS.some(({ pattern }) => pattern.test(trimmed))) {
185
+ type = "store_info";
186
+ lineConfidence = 0.9;
187
+ }
188
+ else if (/^\d{10,20}$/.test(trimmed.replace(/[\s-]/g, ""))) {
189
+ type = "transaction";
190
+ lineConfidence = 0.7;
191
+ }
192
+ else if (trimmed.length > 3) {
193
+ // Likely an item line
194
+ type = "item";
195
+ // Extract price
196
+ const prices = trimmed.match(PRICE_PATTERN);
197
+ if (prices && prices.length > 0) {
198
+ const lastPrice = prices[prices.length - 1];
199
+ values.price = parseFloat(lastPrice.replace("$", ""));
200
+ lineConfidence = 0.8;
201
+ }
202
+ // Extract quantity
203
+ const qtyMatch = trimmed.match(QUANTITY_PATTERN);
204
+ if (qtyMatch) {
205
+ values.quantity = parseFloat(qtyMatch[1]);
206
+ }
207
+ // Extract name (text before price)
208
+ if (prices && prices.length > 0) {
209
+ const priceIndex = trimmed.indexOf(prices[0]);
210
+ if (priceIndex > 0) {
211
+ values.name = trimmed.substring(0, priceIndex).trim();
212
+ }
213
+ }
214
+ else {
215
+ values.name = trimmed;
216
+ lineConfidence = 0.6; // Lower confidence without price
217
+ }
218
+ }
219
+ // Extract price for non-item lines too
220
+ if (type !== "item" && type !== "unknown") {
221
+ const prices = trimmed.match(PRICE_PATTERN);
222
+ if (prices && prices.length > 0) {
223
+ const lastPrice = prices[prices.length - 1];
224
+ values.price = parseFloat(lastPrice.replace("$", ""));
225
+ }
226
+ }
227
+ return {
228
+ text: trimmed,
229
+ type,
230
+ values,
231
+ lineNumber,
232
+ confidence: lineConfidence,
233
+ };
234
+ }
235
+ /**
236
+ * Normalize item name for matching
237
+ */
238
+ function normalizeItemName(name) {
239
+ return name
240
+ .toLowerCase()
241
+ .replace(/[^a-z0-9\s]/g, "")
242
+ .replace(/\s+/g, " ")
243
+ .trim();
244
+ }
245
+ // ============================================================================
246
+ // Actions
247
+ // ============================================================================
248
+ /**
249
+ * Scan a receipt photo
250
+ */
251
+ const scanReceipt = useCallback(async (uri) => {
252
+ setIsProcessing(true);
253
+ setError(null);
254
+ const startTime = Date.now();
255
+ try {
256
+ let ocrText = "";
257
+ let processSource = "on_device";
258
+ // Try server OCR first if available (better accuracy for receipts)
259
+ if (serverFallback &&
260
+ effectiveServerUrl &&
261
+ serverClient &&
262
+ serverAvailable) {
263
+ try {
264
+ // Note: Server OCR endpoint would return text
265
+ // For now, simulate with placeholder
266
+ logger.debug("[ReceiptScanner] Server OCR not yet implemented");
267
+ }
268
+ catch {
269
+ logger.debug("[useReceiptScanner] Server OCR failed, using on-device");
270
+ }
271
+ }
272
+ // Use on-device OCR with MLKit
273
+ if (!ocrText) {
274
+ logger.debug("[ReceiptScanner] Running MLKit text recognition...");
275
+ try {
276
+ const result = await TextRecognition.recognize(uri);
277
+ ocrText = result.text;
278
+ logger.debug(`[useReceiptScanner] MLKit recognized ${result.blocks.length} blocks, ${ocrText.length} chars`);
279
+ processSource = "on_device";
280
+ }
281
+ catch (ocrErr) {
282
+ logger.error("[ReceiptScanner] MLKit OCR error:", ocrErr);
283
+ throw new Error(`OCR failed: ${ocrErr instanceof Error ? ocrErr.message : "Unknown error"}`);
284
+ }
285
+ }
286
+ // Parse the OCR text
287
+ const { items: parsedItems, metadata: parsedMetadata } = parseReceiptText(ocrText);
288
+ const processingTimeMs = Date.now() - startTime;
289
+ const overallConfidence = parsedItems.length > 0
290
+ ? parsedItems.reduce((sum, item) => sum + item.confidence, 0) /
291
+ parsedItems.length
292
+ : 0;
293
+ // Build result
294
+ const result = {
295
+ id: `receipt_${Date.now()}_${Math.random()
296
+ .toString(36)
297
+ .substr(2, 9)}`,
298
+ type: "receipt",
299
+ items: parsedItems,
300
+ metadata: parsedMetadata,
301
+ rawText: ocrText,
302
+ textLines: [], // Would be populated by MLKit
303
+ confidence: overallConfidence,
304
+ itemsNeedingReview: parsedItems.filter((i) => i.needsReview).length,
305
+ source: processSource,
306
+ processingTimeMs,
307
+ timestamp: Date.now(),
308
+ };
309
+ // Update state
310
+ if (mountedRef.current) {
311
+ setItems(parsedItems);
312
+ setMetadata(parsedMetadata);
313
+ setRawText(ocrText);
314
+ setConfidence(overallConfidence);
315
+ setSource(processSource);
316
+ }
317
+ // Callback
318
+ onParseComplete?.(result);
319
+ return result;
320
+ }
321
+ catch (err) {
322
+ const scanError = err instanceof Error ? err : new Error("Receipt scan failed");
323
+ logger.error("[ReceiptScanner] Error:", scanError);
324
+ if (mountedRef.current) {
325
+ setError(scanError);
326
+ }
327
+ onError?.(scanError);
328
+ throw scanError;
329
+ }
330
+ finally {
331
+ if (mountedRef.current) {
332
+ setIsProcessing(false);
333
+ }
334
+ }
335
+ }, [
336
+ serverFallback,
337
+ effectiveServerUrl,
338
+ serverClient,
339
+ serverAvailable,
340
+ parseReceiptText,
341
+ onParseComplete,
342
+ onError,
343
+ ]);
344
+ /**
345
+ * Scan current camera frame
346
+ */
347
+ const scanFrame = useCallback(async () => {
348
+ // This would capture current frame and scan
349
+ // Requires VisionCamera integration
350
+ throw new Error("Frame scanning not implemented - use scanReceipt with photo URI");
351
+ }, []);
352
+ /**
353
+ * Confirm an item is correct
354
+ */
355
+ const confirmItem = useCallback((item) => {
356
+ setItems((prev) => prev.map((i) => i.lineNumber === item.lineNumber ? { ...i, needsReview: false } : i));
357
+ }, []);
358
+ /**
359
+ * Reject/remove an item
360
+ */
361
+ const rejectItem = useCallback((item) => {
362
+ setItems((prev) => prev.filter((i) => i.lineNumber !== item.lineNumber));
363
+ }, []);
364
+ /**
365
+ * Edit an item
366
+ */
367
+ const editItem = useCallback((item, updates) => {
368
+ setItems((prev) => prev.map((i) => i.lineNumber === item.lineNumber
369
+ ? { ...i, ...updates, needsReview: false }
370
+ : i));
371
+ }, []);
372
+ /**
373
+ * Clear all results
374
+ */
375
+ const clearResults = useCallback(() => {
376
+ setItems([]);
377
+ setMetadata(null);
378
+ setRawText("");
379
+ setConfidence(0);
380
+ setSource(null);
381
+ setError(null);
382
+ }, []);
383
+ // ============================================================================
384
+ // Return
385
+ // ============================================================================
386
+ return {
387
+ // State
388
+ isProcessing,
389
+ items,
390
+ metadata,
391
+ rawText,
392
+ confidence,
393
+ source,
394
+ error,
395
+ // Actions
396
+ scanReceipt,
397
+ scanFrame,
398
+ confirmItem,
399
+ rejectItem,
400
+ editItem,
401
+ clearResults,
402
+ // Frame processor (placeholder)
403
+ frameProcessor: null,
404
+ };
405
+ }
406
+ export default useReceiptScanner;
407
+ //# sourceMappingURL=useReceiptScanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReceiptScanner.js","sourceRoot":"","sources":["../../../src/hooks/useReceiptScanner.ts"],"names":[],"mappings":"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"}