import 'package:flutter/foundation.dart'; import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart'; class OcrService { late final TextRecognizer _textRecognizer; OcrService() { _textRecognizer = TextRecognizer(script: TextRecognitionScript.japanese); } Future extractText(String imagePath) async { try { final inputImage = InputImage.fromFilePath(imagePath); final RecognizedText recognizedText = await _textRecognizer.processImage(inputImage); return recognizedText.text; } catch (e) { debugPrint('Japanese OCR Error: $e'); // Fallback to Latin script if Japanese model fails try { final latinRecognizer = TextRecognizer(script: TextRecognitionScript.latin); final inputImage = InputImage.fromFilePath(imagePath); final RecognizedText recognizedText = await latinRecognizer.processImage(inputImage); await latinRecognizer.close(); debugPrint('Fallback to Latin OCR successful'); return recognizedText.text; } catch (e2) { debugPrint('Latin OCR also failed: $e2'); return ''; // Return empty string on error to allow fallback to image analysis } } } void dispose() { _textRecognizer.close(); } }