{
  "engine": "android_mlkit",
  "recognition_timing_note": "Android includes decode and task wait; desktop measures provider call. Cold first call included; initialization excluded.",
  "summary": {
    "receipt_count": 10,
    "date_accuracy": 0.9,
    "amount_accuracy": 1.0,
    "merchant_accuracy": 0.9,
    "all_fields_accuracy": 0.8,
    "first_pass_success_rate": 0.3,
    "fallback_frequency": 0.7,
    "failure_rate": 0.0,
    "average_passes": 3.3,
    "mean_ms": 2756.581593118608,
    "median_ms": 3360.1064474787563,
    "p95_ms": 4858.656822005287
  },
  "receipts": [
    {
      "image": "2026-06-01_26.60_Triple_O's.jpeg",
      "date_ok": false,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": false,
      "extraction_failed": false,
      "latency_ms": 4661.232220008969,
      "preprocessing_ms": 2786.5975350141525,
      "recognition_ms": 1807.3410671204329,
      "parsing_ms": 65.10115438140929,
      "passes": 5
    },
    {
      "image": "2026-06-01_46.86_Uber.png",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 3319.8679629713297,
      "preprocessing_ms": 1605.3847658913583,
      "recognition_ms": 1639.8446056991816,
      "parsing_ms": 72.09330215118825,
      "passes": 5
    },
    {
      "image": "2026-06-02_10.76_Jugo_Juice.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 393.98103789426386,
      "preprocessing_ms": 0.0,
      "recognition_ms": 383.15437897108495,
      "parsing_ms": 10.567422956228256,
      "passes": 1
    },
    {
      "image": "2026-06-02_15.75_Olly_Fresco.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 368.24088590219617,
      "preprocessing_ms": 0.0,
      "recognition_ms": 362.3187660705298,
      "parsing_ms": 5.655478220432997,
      "passes": 1
    },
    {
      "image": "2026-06-02_60.00_IL_Chianti.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 2420.3437101095915,
      "preprocessing_ms": 1796.111288946122,
      "recognition_ms": 608.6193029768765,
      "parsing_ms": 15.048786997795105,
      "passes": 2
    },
    {
      "image": "2026-06-03_11.39_Tim_Hortons.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 4858.656822005287,
      "preprocessing_ms": 2931.3348392024636,
      "recognition_ms": 1818.1584479752928,
      "parsing_ms": 107.36739216372371,
      "passes": 5
    },
    {
      "image": "2026-06-03_18.48_Olly_Fresco.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 339.2089430708438,
      "preprocessing_ms": 0.0,
      "recognition_ms": 332.2603760752827,
      "parsing_ms": 6.632894044741988,
      "passes": 1
    },
    {
      "image": "2026-06-03_25.95_HMSHost.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": false,
      "all_ok": false,
      "extraction_failed": false,
      "latency_ms": 3983.6626001633704,
      "preprocessing_ms": 2476.384687004611,
      "recognition_ms": 1465.5497251078486,
      "parsing_ms": 40.706298081204295,
      "passes": 3
    },
    {
      "image": "2026-06-03_41.97_Uber.png",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 3820.2768170740455,
      "preprocessing_ms": 1696.833822876215,
      "recognition_ms": 2050.008383113891,
      "parsing_ms": 72.02730095013976,
      "passes": 5
    },
    {
      "image": "2026-06-03_94.80_Uber.png",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 3400.344931986183,
      "preprocessing_ms": 1804.1563720908016,
      "recognition_ms": 1521.6315523721278,
      "parsing_ms": 72.66593514941633,
      "passes": 5
    }
  ]
}
