Benchmarks: Answer 99.16% of DocVQA Without Images in QA: Agentic Document ExtractionRead more

How to Configure Parse Output

One options object shapes what DPT-3 Parse returns — turn one knob at a time

Ava Xia

Ava Xia

Share On :
How to Configure Parse OutputHow to Configure Parse Output

TL;DR

A single options object controls the shape of a DPT-3 parse response. Every knob is optional — omit a key and it falls back to its default:

  • pages — choose which 1-indexed pages Parse processes.
  • blocks.table.format"html" (keeps merged cells) or "markdown" (flat pipes).
  • blocks.<type>.markdown — drop a block type's text from the markdown string while keeping it in the tree.
  • atomic_grounding — keep or drop the per-line bounding boxes.
  • inline_markdown — attach each block's own Markdown slice to its structure node.

options shapes what comes back — not what Parse reads.

Video Walkthrough

A guided tour of the options parameter and each knob:

One Options Object

Every parse request takes a model and an options object. The document and model determine what Parse reads; options determines what it returns:

POST /v2/parse
model: dpt-3-pro-latest
options: {
  pages,
  atomic_grounding,
  inline_markdown,
  blocks.<type>.markdown,
  blocks.table.format
}

The output is always the same three fields — markdown, structure, and metadata — but options shapes each one.

Parse Returns Three Things

Before tuning the output, it helps to remember what a parse returns:

  • markdown — the whole document as one reading-order Markdown string.
  • structure — a hierarchical tree of blocks, each carrying its grounding.
  • metadata — job details: model_version, page_count, range_units, and more.

Every options knob adjusts one of these three fields.

Every Knob Is Optional

Start from defaults and change one thing at a time. Omit a key → you get its default:

OptionDefault
pagesall pages
blocks.<type>.markdowntrue
blocks.table.format"html"
atomic_groundingtrue
inline_markdownfalse

pages — Read What You Need

Pass a 1-indexed array to choose which pages Parse processes:

{ "pages": [1, 3] }

Page 2 is skipped. metadata.page_count reflects the pages processed, and structure.children contains only [page 1, page 3].

Table Format — HTML vs. Markdown

blocks.table.format decides whether merged-cell structure survives:

  • "html" (default) — merged structure kept intact. A header like Measured Value (V) can span two columns via colspan / rowspan.
  • "markdown" — flattened to plain pipes. The spanning header is lost because Markdown tables can't merge cells.
{ "blocks": { "table": { "format": "markdown" } } }

Rule of thumb: use HTML when structure matters — it keeps colspan / rowspan; Markdown does not.

Drop a Block's Content

Set a block type's markdown to false to trim its text from the markdown string — without deleting it from the map:

{ "blocks": { "figure": { "markdown": false } } }

The figure's text is trimmed from the markdown string, but the block stays in structure — it remains in the tree with a zero-length range and an empty atomic_grounding: []. You lose the content in the string but keep the block's location and type.

atomic_grounding — Line Boxes

By default every leaf block carries one outer box plus one small box per rendered line in atomic_grounding[]. Turn it off to shrink the payload:

{ "atomic_grounding": false }

The per-line array is dropped, but the block's own grounding box (page + box) is still kept.

inline_markdown — Text On the Block

Set inline_markdown: true to attach each block's own Markdown slice directly to its structure node:

{ "inline_markdown": true }

Every node — document, page, and block — then carries its own markdown slice:

{
  "type": "text",
  "id": "text-0",
  "grounding": {
    "page": 1,
    "range": { "start": 0, "end": 27 },
    "box": { "xmin": 0.080, "ymin": 0.021, "xmax": 0.740, "ymax": 0.060 }
  },
  "markdown": "**Report No.** TVL-CAL-7731"
}

Note: atomic_grounding entries have no markdown of their own — slice by their range or read the parent block's markdown.

Turn One Knob at a Time

Every dial rests at its default. The reliable workflow: start from defaults, move a single option, and re-run.

OptionDefault → change
pagesnull (all pages)
atomic_groundingtrue
inline_markdownfalse
blocks.<type>.markdowntrue
blocks.table.formathtmlmarkdown

Remember: options shapes what comes back, not what Parse reads.

Getting Started