Agentic mode adds a vision-language model review layer to catch errors that single-pass OCR misses. You enable it per content type using scopes.
Basic Usage
result = client.parse.run(
input=upload.file_id,
enhance={
"agentic": [
{"scope": "text"},
{"scope": "table"},
{"scope": "figure", "advanced_chart_agent": True}
]
}
)
Each scope is independent. Enable only what you need.
Agentic modes are available in the Python SDK, Node.js SDK, and via cURL. The Go SDK does not yet support agentic modes.
Text Scope
Adds a second OCR pass using a vision-language model to correct text extraction errors.
enhance={"agentic": [{"scope": "text"}]}
What it fixes:
- Handwritten notes and signatures
- Small or faded text
- Special characters and mathematical notation
- Mixed fonts and styles
Custom prompts apply only to form regions (key-value fields like “Name: John Doe”), not body text:
enhance={"agentic": [{"scope": "text", "prompt": "Extract all dates in MM/DD/YYYY format"}]}
Table Scope
Uses a VLM to reconstruct table structure after initial extraction.
enhance={"agentic": [{"scope": "table"}]}
What it fixes:
- Merged cells (rowspan/colspan)
- Nested or multi-level headers
- Tables with missing or faint borders
- Rotated text in cells
Custom prompts guide the reconstruction:
enhance={"agentic": [{"scope": "table", "prompt": "Preserve currency symbols. Align rows by date."}]}
Table Mode
The mode option controls whether Reducto selectively applies agentic enrichment only to tables likely to benefit or runs agentic enrichment on every table. Defaults to "default".
enhance={"agentic": [{"scope": "table", "mode": "max"}]}
| Mode | Behavior |
|---|
"default" | Reducto selectively applies deeper table processing where it is likely to improve results, reducing latency while maintaining accuracy for complex tables. This is the default. |
"max" | Every table receives full agentic enrichment. Use this when every table in the job should be agentically enriched. |
Use mode: "max" when you want every table in a job to be agentically enriched.
Enables enhanced figure processing. Without additional options, it uses more powerful models and better classifies figures as charts vs. images. Note: summarize_figures must also be enabled for this configuration to be activated.
enhance={"agentic": [{"scope": "figure"}]}
To extract numerical data from charts as structured tables, enable advanced_chart_agent:
enhance={"agentic": [{"scope": "figure", "advanced_chart_agent": True}]}
| Option | What it does |
|---|
advanced_chart_agent | Extracts numerical values as structured tables |
prompt | Custom instructions for figure processing |
For details on chart types and the extraction pipeline, see Chart Extraction.
To generate generic text descriptions of images and figures, enable summarize_figures:
enhance={"summarize_figures": True} # This is the default
This is lightweight and on by default. It makes visual content searchable but doesn’t extract numerical data. Note: this must be enabled in addition to figure scope for enhanced figure summarization to be activated.
To disable it:
enhance={"summarize_figures": False}
When to Use What
| Situation | Configuration |
|---|
| Clean, digital-native PDFs | Skip agentic entirely |
| Documents with handwriting | {"scope": "text"} |
| Complex financial tables | {"scope": "table"} |
| Every table requires agentic enrichment | {"scope": "table", "mode": "max"} |
| Charts you need searchable | Default summarize_figures is enough |
| Charts you need data from | {"scope": "figure", "advanced_chart_agent": True} |
| All of the above | Combine all three scopes |
Cost and Latency
Each scope adds processing time and cost. For cost-sensitive workloads:
table scope alone handles the most common accuracy issues and defaults to selective enrichment
table scope with mode: "max" enriches every table and adds latency
text scope is most valuable for handwritten content
figure scope with advanced_chart_agent is expensive, so use only when you need numerical data from charts