Files
receipity/lib/services/receipt_parser.dart
T
2026-09-02 12:35:35 +02:00

43 lines
1.4 KiB
Dart

/// Receipt parsing entry point: spatial OCR pipeline with text fallback.
library;
import 'package:google_mlkit_text_recognition/google_mlkit_text_recognition.dart';
import '../models/line_item.dart';
import '../models/ocr_element.dart';
import 'receipt_ocr.dart';
import 'receipt_parse_config.dart';
export 'receipt_parse_config.dart' show loadReceiptParseConfig;
export 'receipt_text_parser.dart' show ReceiptParseResult;
import 'receipt_spatial_parser.dart';
import 'receipt_text_parser.dart';
class ReceiptParser {
ReceiptParser._();
static Future<void> loadConfig() => loadReceiptParseConfig();
static List<LineItem> parse(String rawText) => parseReceipt(rawText).items;
/// Fallback when only flattened OCR text is available (tests, re-parse).
static ReceiptParseResult parseReceipt(String rawText) =>
ReceiptTextParser.parseReceipt(rawText);
/// Primary path: positioned ML Kit elements → row clustering → lookahead.
static ReceiptParseResult parseReceiptFromOcr(OcrDocument document) =>
ReceiptSpatialParser.parse(document);
static ReceiptParseResult parseRecognizedText(
RecognizedText recognized, {
required double imageWidth,
required double imageHeight,
}) {
final document = ReceiptOcr.fromRecognizedText(
recognized,
imageWidth: imageWidth,
imageHeight: imageHeight,
);
return parseReceiptFromOcr(document);
}
}