{
  "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": 1.0,
    "all_fields_accuracy": 0.9,
    "first_pass_success_rate": 0.3,
    "fallback_frequency": 0.7,
    "failure_rate": 0.0,
    "average_passes": 3.3,
    "mean_ms": 2602.3671601200476,
    "median_ms": 3184.9764625076205,
    "p95_ms": 4753.675905056298
  },
  "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": 4723.020061850548,
      "preprocessing_ms": 2751.38704595156,
      "recognition_ms": 1899.639406008646,
      "parsing_ms": 69.73734661005437,
      "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": 3312.8997411113232,
      "preprocessing_ms": 1614.955608965829,
      "recognition_ms": 1616.6521832346916,
      "parsing_ms": 79.73946002312005,
      "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": 414.75158696994185,
      "preprocessing_ms": 0.0,
      "recognition_ms": 402.3615319747478,
      "parsing_ms": 12.117431731894612,
      "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": 334.5202230848372,
      "preprocessing_ms": 0.0,
      "recognition_ms": 327.4139000568539,
      "parsing_ms": 6.571004167199135,
      "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": 2354.2298190295696,
      "preprocessing_ms": 1817.910605110228,
      "recognition_ms": 515.4147550929338,
      "parsing_ms": 19.565633963793516,
      "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": 4753.675905056298,
      "preprocessing_ms": 2938.7906920164824,
      "recognition_ms": 1696.0749519057572,
      "parsing_ms": 117.10428795777261,
      "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": 265.011555980891,
      "preprocessing_ms": 0.0,
      "recognition_ms": 256.6328118555248,
      "parsing_ms": 7.805093191564083,
      "passes": 1
    },
    {
      "image": "2026-06-03_25.95_HMSHost.jpeg",
      "date_ok": true,
      "amount_ok": true,
      "merchant_ok": true,
      "all_ok": true,
      "extraction_failed": false,
      "latency_ms": 3495.609783101827,
      "preprocessing_ms": 2437.2697761282325,
      "recognition_ms": 1010.0091551430523,
      "parsing_ms": 47.21288988366723,
      "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": 3178.0559909529984,
      "preprocessing_ms": 1659.465414006263,
      "recognition_ms": 1425.4581732675433,
      "parsing_ms": 91.08772873878479,
      "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": 3191.8969340622425,
      "preprocessing_ms": 1646.9541017431766,
      "recognition_ms": 1471.5553799178451,
      "parsing_ms": 71.91564911045134,
      "passes": 5
    }
  ]
}
