{
  "method": "Synthetic perspective-warped pages processed locally by app.services.receipt_service.scan_document with automatic corners; no manual corrections.",
  "limitations": "Four controlled demonstrations, not an independent benchmark. No OCR accuracy, production delivery, curved-page or handwriting claims. Inputs and outputs are retained, including failures.",
  "cases": [
    {
      "slug": "dark-desk",
      "title": "Dark desk, tilted page",
      "inputBytes": 71197,
      "outputBytes": 58197,
      "outputSize": [
        791,
        952
      ],
      "inputSha256": "00461ab445bd11b8c318e5905569eb92483cd53b2d8a345cf023900f0c59cdd5",
      "outputSha256": "1c19854e772c489809246910fb66ba2f0233d29bfc9ee174b8f972ab8a3d3e8e",
      "maxNormalizedCornerError": 0.0009932168010208977,
      "cornersWithinTolerance": true
    },
    {
      "slug": "light-desk",
      "title": "Light desk, tilted page",
      "inputBytes": 73929,
      "outputBytes": 60414,
      "outputSize": [
        688,
        1000
      ],
      "inputSha256": "ad4e52d641ec0834086807edbf7777734e8c3dd544caa9f5942c18d7adaf556a",
      "outputSha256": "722184303c94ddfcbda70a9e172cc30b36b3a857e9056d9f17384da155091b2b",
      "maxNormalizedCornerError": 0.0012459179020435018,
      "cornersWithinTolerance": true
    },
    {
      "slug": "uneven-light",
      "title": "Dark desk with simulated shadow",
      "inputBytes": 74320,
      "outputBytes": 64356,
      "outputSize": [
        778,
        980
      ],
      "inputSha256": "68751ad5e6226dd64e0cb19a5129161ec12785034e03cfa7943fe38af43b93f9",
      "outputSha256": "162873c3213c284e500af28472fd2616fa4a8d492012cfbcf9c2d8188a393a6e",
      "maxNormalizedCornerError": 0.0021949289272311674,
      "cornersWithinTolerance": true
    },
    {
      "slug": "low-contrast",
      "title": "Pale page on a pale background",
      "inputBytes": 70301,
      "outputBytes": 51427,
      "outputSize": [
        668,
        992
      ],
      "inputSha256": "b52da8e200335fd2a97216372a9f5fdcd405d760f60c7ea0d064c1adae5267fe",
      "outputSha256": "a74becbeddbb7d5c9520125c189cb3e91b4839d89cabf2d6f767b20a1804406a",
      "maxNormalizedCornerError": 0.024989557570022494,
      "cornersWithinTolerance": true
    }
  ]
}
