LandingAIOpen Playground

Trace every answer back to the source

Every field ADE extracts comes with its exact page and bounding box — down to individual table cells.

This module

Use visual grounding to verify extractions. trace any extracted field — or table cell — back to its exact location on the page.

Why it matters
  • Verification & trust. Reviewers can jump from an extracted value straight to the page region it came from.
  • Audit trails for compliance. Grounding gives you a provable link between extracted data and the source document.
  • Faster debugging. When extraction is wrong, the bounding box tells you whether it's an OCR, layout, or schema problem.
  • Better review UIs. Build click-to-highlight, redaction, and side-by-side review experiences out of the box.

Grounding shows up in two places

Each chunk carries its own grounding for convenience — and a separate lookup goes down to individual table cells.

1. PER-CHUNK GROUNDING — INLINE WITH THE CONTENT
"chunks": [
  {
    "id": "chunk_1",
    "type": "text",
    "markdown": "Total: $500.00",
    "grounding": {
      "page": 0,
      "box": { "left": 0.10, "top": 0.20, "right": 0.40, "bottom": 0.25 }
    }
  }
]

Use this when you're iterating over chunks[] — the box is right there, no lookup needed.

2. TOP-LEVEL GROUNDING — O(1) LOOKUP BY ID, INCLUDES TABLE CELLS
"grounding": {
  "chunk_1": { "type": "chunkText",  "page": 1, "box": { ... } },
  "0-1":    { "type": "table",      "page": 0, "box": { ... } },
  "0-2":    { "type": "tableCell", "position": { row: 0, col: 0 }, "box": { ... } }
}

Use this when an extraction result hands you a chunk or cell ID — one lookup gets you the box. Only the top-level dict includes tableCell entries, so row/col-level highlighting lives here.

Box coordinates are normalized (0.0–1.0), so multiply by your image width/height to draw on any resolution.

Documentation · Playground · Pricing