{
  "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.6,
    "all_fields_accuracy": 0.5,
    "first_pass_success_rate": 0.0,
    "fallback_frequency": 0.8,
    "failure_rate": 0.0,
    "average_passes": 3.4,
    "mean_ms": 3034.8548024892807,
    "median_ms": 3478.6925063235685,
    "p95_ms": 4816.421389114112
  },
  "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": 4689.1492530703545,
      "preprocessing_ms": 2775.1551531255245,
      "recognition_ms": 1842.8889992646873,
      "parsing_ms": 68.9532880205661,
      "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": 3343.569336924702,
      "preprocessing_ms": 1619.070963934064,
      "recognition_ms": 1650.905029149726,
      "parsing_ms": 72.36686255782843,
      "passes": 5
    },
    {
      "image": "2026-06-02_10.76_Jugo_Juice.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": false,
      "all_ok": false,
      "extraction_failed": false,
      "latency_ms": 344.14127585478127,
      "preprocessing_ms": 0.0,
      "recognition_ms": 332.2994390036911,
      "parsing_ms": 11.511067161336541,
      "passes": 1
    },
    {
      "image": "2026-06-02_15.75_Olly_Fresco.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": false,
      "all_ok": false,
      "extraction_failed": false,
      "latency_ms": 3423.470785841346,
      "preprocessing_ms": 2724.053224083036,
      "recognition_ms": 682.681884849444,
      "parsing_ms": 15.65035106614232,
      "passes": 2
    },
    {
      "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": 2526.4622399117798,
      "preprocessing_ms": 1833.994303829968,
      "recognition_ms": 676.460204878822,
      "parsing_ms": 15.400471165776253,
      "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": 4816.421389114112,
      "preprocessing_ms": 3039.6055509336293,
      "recognition_ms": 1662.6720398198813,
      "parsing_ms": 112.53613396547735,
      "passes": 5
    },
    {
      "image": "2026-06-03_18.48_Olly_Fresco.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": false,
      "all_ok": false,
      "extraction_failed": false,
      "latency_ms": 343.3515620417893,
      "preprocessing_ms": 0.0,
      "recognition_ms": 335.9438478946686,
      "parsing_ms": 6.759722949936986,
      "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": 3619.8985611554235,
      "preprocessing_ms": 2678.709149127826,
      "recognition_ms": 889.6546228788793,
      "parsing_ms": 49.76334609091282,
      "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": 3533.9142268057913,
      "preprocessing_ms": 1915.6099860556424,
      "recognition_ms": 1537.0687686372548,
      "parsing_ms": 78.91182322055101,
      "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": 3708.169394172728,
      "preprocessing_ms": 2025.4399429541081,
      "recognition_ms": 1601.484659826383,
      "parsing_ms": 79.59207985550165,
      "passes": 5
    }
  ]
}
