Skip to main content
ai.figure-crops turns parser geometry into usable evidence: it renders the source PDF, crops every kind="figure" element bbox from an ai.parse result, and captions each crop with a vision model. Pair it with ai.parse (openparser@1 output) whenever downstream steps need to see charts, diagrams, scanned tables, or photos — not just read text. Point input at the same source PDF the parse step read, and pass the parse output through ({{ steps.parse.output }}). Figure elements are read from its elements array, so this step must run after a parse of the same document. Captions describe what is visually depicted (chart type, axes and values, objects, visible text). They are model-generated: treat them as association hints for retrieval and review, not as verified facts. The normalized bboxes are deterministic geometry from the parser and are safe to render as highlights in evidence viewers. Use minAreaFrac to skip tiny figures (page logos and decorations usually sit well below 1% of page area). includeCrops embeds base64 JPEGs in the step output — heavy, and off by default; prefer captions plus bboxes and re-render crops at view time when you need pixels.
Downstream steps can read:

Configuration

Configuration goes inside the step’s with: block.
string
required
Storage reference or template expression for the source PDF
unknown
required
ai.parse output object (template {{steps.<parse>.output}}); figure elements are read from its elements array
string
Vision model for captions (defaults to workspace model)
string
Custom caption instruction; applied per figure crop
integer
default:"40"
Cap on figures processed per document
number
default:"0"
Skip figures below this page-area fraction (logos/decorations)
boolean
default:"false"
Include base64 JPEG crops in output (heavy; default off, captions + bboxes only)
number
default:"1"
Scale factor for rendering PDF pages before cropping
integer
default:"85"
JPEG quality for crops
"none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max"
Reasoning effort for models that support it. Omit to use the selected model’s default.

Output