{
  "gold_source": "Authored literal values and drawing coordinates in scripts/evaluate-invoices.py, never learned from parser output.",
  "cases": [
    {
      "id": "aligned-decimals",
      "file": "fixtures/aligned-decimals.pdf",
      "document_class": "native_invoice",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01002",
              "value": "01002",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Steel bracket",
              "value": "Steel bracket",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "3",
              "value": "3",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "12.50",
              "value": "12.50",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "37.50",
              "value": "37.50",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01003",
              "value": "01003",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Included delivery",
              "value": "Included delivery",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "1",
              "value": "1",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "0.00",
              "value": "0.00",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "0.00",
              "value": "0.00",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 172,
            "y_max": 187
          },
          "Description": {
            "x_min": 114,
            "x_max": 174.36,
            "y_min": 172,
            "y_max": 187
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 172,
            "y_max": 187
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 172,
            "y_max": 187
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 172,
            "y_max": 187
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 204,
            "y_max": 219
          },
          "Description": {
            "x_min": 114,
            "x_max": 191.03,
            "y_min": 204,
            "y_max": 219
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 204,
            "y_max": 219
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 204,
            "y_max": 219
          },
          "Amount": {
            "x_min": 504,
            "x_max": 525.46,
            "y_min": 204,
            "y_max": 219
          }
        }
      ],
      "required_exceptions": [],
      "supported_layout": true,
      "limitation": "One aligned native-text layout; literal decimals, leading-zero item identifiers and zero price."
    },
    {
      "id": "repeated-two-page",
      "file": "fixtures/repeated-two-page.pdf",
      "document_class": "native_invoice",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 2,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01002",
              "value": "01002",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Steel bracket",
              "value": "Steel bracket",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "3",
              "value": "3",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "12.50",
              "value": "12.50",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "37.50",
              "value": "37.50",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 1,
          "fields": {
            "Item": {
              "raw": "01004",
              "value": "01004",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Valve assembly",
              "value": "Valve assembly",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "2",
              "value": "2",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "21.35",
              "value": "21.35",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "42.70",
              "value": "42.70",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 1,
          "fields": {
            "Item": {
              "raw": "01005",
              "value": "01005",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Packing",
              "value": "Packing",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "1",
              "value": "1",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "0.00",
              "value": "0.00",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "0.00",
              "value": "0.00",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 172,
            "y_max": 187
          },
          "Description": {
            "x_min": 114,
            "x_max": 174.36,
            "y_min": 172,
            "y_max": 187
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 172,
            "y_max": 187
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 172,
            "y_max": 187
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 172,
            "y_max": 187
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 186.01999999999998,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 172,
            "y_max": 187
          },
          "Description": {
            "x_min": 114,
            "x_max": 151.57,
            "y_min": 172,
            "y_max": 187
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 172,
            "y_max": 187
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 172,
            "y_max": 187
          },
          "Amount": {
            "x_min": 504,
            "x_max": 525.46,
            "y_min": 172,
            "y_max": 187
          }
        }
      ],
      "required_exceptions": [],
      "supported_layout": true,
      "limitation": "Exact headers repeat on both pages; this does not establish headerless-page support."
    },
    {
      "id": "reordered-columns",
      "file": "fixtures/reordered-columns.pdf",
      "document_class": "native_invoice",
      "columns": [
        "Description",
        "Item",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01002",
              "value": "01002",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Steel bracket",
              "value": "Steel bracket",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "3",
              "value": "3",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "12.50",
              "value": "12.50",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "37.50",
              "value": "37.50",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Description": {
            "x_min": 39,
            "x_max": 113.81,
            "y_min": 140,
            "y_max": 155
          },
          "Item": {
            "x_min": 269,
            "x_max": 298.8,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Description": {
            "x_min": 39,
            "x_max": 99.36,
            "y_min": 172,
            "y_max": 187
          },
          "Item": {
            "x_min": 269,
            "x_max": 298.8,
            "y_min": 172,
            "y_max": 187
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 172,
            "y_max": 187
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 172,
            "y_max": 187
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 172,
            "y_max": 187
          }
        }
      ],
      "required_exceptions": [],
      "supported_layout": true,
      "limitation": "Two identity columns and numeric columns reordered with explicit schema; output columns follow that schema."
    },
    {
      "id": "explicit-units",
      "file": "fixtures/explicit-units.pdf",
      "document_class": "native_invoice",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Unit",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "02001",
              "value": "02001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Sealant",
              "value": "Sealant",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "2",
              "value": "2",
              "state": "extracted",
              "comparator": null
            },
            "Unit": {
              "raw": "kg",
              "value": "kg",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "6.25",
              "value": "6.25",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "12.50",
              "value": "12.50",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "02002",
              "value": "02002",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Hose",
              "value": "Hose",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "3",
              "value": "3",
              "state": "extracted",
              "comparator": null
            },
            "Unit": {
              "raw": "m",
              "value": "m",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "4.10",
              "value": "4.10",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "12.30",
              "value": "12.30",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 109,
            "x_max": 144.91,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 299,
            "x_max": 306.56,
            "y_min": 140,
            "y_max": 155
          },
          "Unit": {
            "x_min": 364,
            "x_max": 376.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 172,
            "y_max": 187
          },
          "Description": {
            "x_min": 109,
            "x_max": 134.34,
            "y_min": 172,
            "y_max": 187
          },
          "Quantity": {
            "x_min": 299,
            "x_max": 306.56,
            "y_min": 172,
            "y_max": 187
          },
          "Unit": {
            "x_min": 364,
            "x_max": 374.33,
            "y_min": 172,
            "y_max": 187
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 172,
            "y_max": 187
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 172,
            "y_max": 187
          }
        }
      ],
      "required_exceptions": [],
      "supported_layout": true,
      "limitation": "Unit is an explicit custom schema column; no unit conversion is performed."
    },
    {
      "id": "missing-amount",
      "file": "fixtures/missing-amount.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "03001",
              "value": "03001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Packing",
              "value": "Packing",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "1",
              "value": "1",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.00",
              "value": "2.00",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "",
              "value": null,
              "state": "not_reported",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 151.57,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 506.0,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [
        "notreported"
      ],
      "supported_layout": false,
      "limitation": "Blank Amount must remain null with a not-reported exception; no inferred arithmetic.",
      "disclosed_behavior": {
        "exact_fields": 5,
        "actual_rows": 1
      }
    },
    {
      "id": "wrapped-description",
      "file": "fixtures/wrapped-description.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "04001",
              "value": "04001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Thermal insulation board",
              "value": "Thermal insulation board",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "2",
              "value": "2",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "16.00",
              "value": "16.00",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "32.00",
              "value": "32.00",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 152.67000000000002,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [
        "unmapped_line"
      ],
      "supported_layout": false,
      "limitation": "Known partial extraction: description continuation is not merged; warnings must remain visible.",
      "disclosed_behavior": {
        "exact_fields": 4,
        "actual_rows": 1
      }
    },
    {
      "id": "right-aligned-values",
      "file": "fixtures/right-aligned-values.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 341.44,
            "x_max": 349.0,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 402.54,
            "x_max": 424.0,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 481.98,
            "x_max": 509.0,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [],
      "supported_layout": false,
      "limitation": "Boundary hazard: values begin left of their left-aligned headers. Observe field associations and flags; do not count a returned row as correct.",
      "disclosed_behavior": {
        "exact_fields": 2,
        "actual_rows": 1
      }
    },
    {
      "id": "header-mismatch",
      "file": "fixtures/header-mismatch.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [
        "unsupported_layout"
      ],
      "supported_layout": false,
      "limitation": "Alias headers do not match the confirmed schema; the authored invoice row must not be inferred.",
      "disclosed_behavior": {
        "exact_fields": 0,
        "actual_rows": 0
      }
    },
    {
      "id": "textless-page",
      "file": "fixtures/textless-page.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [],
      "drawn_cell_bounds": [],
      "required_exceptions": [
        "ocr_no_text"
      ],
      "supported_layout": false,
      "limitation": "Shapes without text exercise detection only. This is not a natural scan and OCR is not benchmarked.",
      "disclosed_behavior": {
        "exact_fields": 0,
        "actual_rows": 0
      }
    },
    {
      "id": "mixed-readable-textless",
      "file": "fixtures/mixed-readable-textless.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 2,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [
        "ocr_no_text"
      ],
      "supported_layout": false,
      "limitation": "First-page rows can be returned but a textless second page makes coverage incomplete.",
      "disclosed_behavior": {
        "exact_fields": 5,
        "actual_rows": 1
      }
    },
    {
      "id": "wide-row-gap",
      "file": "fixtures/wide-row-gap.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        },
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01002",
              "value": "01002",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Steel bracket",
              "value": "Steel bracket",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "3",
              "value": "3",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "12.50",
              "value": "12.50",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "37.50",
              "value": "37.50",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        },
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 250,
            "y_max": 265
          },
          "Description": {
            "x_min": 114,
            "x_max": 174.36,
            "y_min": 250,
            "y_max": 265
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 250,
            "y_max": 265
          },
          "Price": {
            "x_min": 419,
            "x_max": 446.02,
            "y_min": 250,
            "y_max": 265
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 250,
            "y_max": 265
          }
        }
      ],
      "required_exceptions": [
        "table_region_gap"
      ],
      "supported_layout": false,
      "limitation": "Rows after a vertical gap exceeding 80 points are not recovered; partial extraction must carry a coverage warning.",
      "disclosed_behavior": {
        "exact_fields": 5,
        "actual_rows": 1
      }
    },
    {
      "id": "rotated-table",
      "file": "fixtures/rotated-table.pdf",
      "document_class": "unsupported_invoice_layout",
      "columns": [
        "Item",
        "Description",
        "Quantity",
        "Price",
        "Amount"
      ],
      "expected_pages": 1,
      "expected_rows": [
        {
          "page": 0,
          "fields": {
            "Item": {
              "raw": "01001",
              "value": "01001",
              "state": "extracted",
              "comparator": null
            },
            "Description": {
              "raw": "Copper coupling",
              "value": "Copper coupling",
              "state": "extracted",
              "comparator": null
            },
            "Quantity": {
              "raw": "8",
              "value": "8",
              "state": "extracted",
              "comparator": null
            },
            "Price": {
              "raw": "2.40",
              "value": "2.40",
              "state": "extracted",
              "comparator": null
            },
            "Amount": {
              "raw": "19.20",
              "value": "19.20",
              "state": "extracted",
              "comparator": null
            }
          }
        }
      ],
      "drawn_cell_bounds": [
        {
          "Item": {
            "x_min": 39,
            "x_max": 68.80000000000001,
            "y_min": 140,
            "y_max": 155
          },
          "Description": {
            "x_min": 114,
            "x_max": 188.81,
            "y_min": 140,
            "y_max": 155
          },
          "Quantity": {
            "x_min": 344,
            "x_max": 351.56,
            "y_min": 140,
            "y_max": 155
          },
          "Price": {
            "x_min": 419,
            "x_max": 440.46,
            "y_min": 140,
            "y_max": 155
          },
          "Amount": {
            "x_min": 504,
            "x_max": 531.02,
            "y_min": 140,
            "y_max": 155
          }
        }
      ],
      "required_exceptions": [
        "unsupported_rotation"
      ],
      "supported_layout": false,
      "limitation": "Rotated table recovery is unsupported; the authored invoice row must not be inferred.",
      "disclosed_behavior": {
        "exact_fields": 0,
        "actual_rows": 0
      }
    }
  ]
}
