---
title: Charts and figures | Developer Documentation
description: How Parse turns charts into structured table data with specialized chart parsing, and how to get figures, embedded images, and page screenshots out of a document as downloadable image files.
---

Parse handles charts and figures two ways. Specialized chart parsing reads a bar, line, or pie chart and returns its values as a table in the `items` tree, so a model can reason over the numbers instead of the pixels. Image output saves the figures themselves (cropped layout regions, embedded images, or full-page screenshots) as files you download by presigned URL.

## When to use it

- Earnings decks, scientific papers, and dashboards where the data you need lives only in a chart.
- Multimodal pipelines that want one markdown blob plus a screenshot of every page.
- Figures and diagrams you want to show in a UI or pass to a vision model separately from the text.
- Self-contained markdown that carries its images inline.

Specialized chart parsing is on by default at the `agentic_plus` tier and opt-in on `cost_effective` and `agentic`. The `fast` tier runs no AI model, so it does not extract chart data.

## Options

| Option                                           | Type                                              | Default                                                | What it does                                                                                                                                                                             |
| ------------------------------------------------ | ------------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `processing_options.specialized_chart_parsing`   | `"efficient"`, `"agentic"`, or `"agentic_plus"`   | unset (on by default for `agentic_plus`)               | Extract chart data as structured tables in the `items` tree. Any of the three values turns it on. Retrieve with `expand=["items"]`.                                                      |
| `output_options.images_to_save`                  | array of `"screenshot"`, `"embedded"`, `"layout"` | saves `layout` when the output links to cropped images | Which image files to save: full-page renders, images found in the document, or cropped figures and diagrams. Pass `[]` to save none. Retrieve with `expand=["images_content_metadata"]`. |
| `output_options.markdown.inline_images`          | boolean                                           | unset                                                  | Embed images in the markdown itself instead of referencing separately saved files.                                                                                                       |
| `processing_options.ignore.ignore_text_in_image` | boolean                                           | unset                                                  | Skip OCR text from embedded images when it is noise, such as logos. Turns OCR off for the job, so born-digital files only.                                                               |
| `input_options.presentation.skip_embedded_data`  | boolean                                           | unset                                                  | For PPTX and Keynote, skip extracting the data behind native charts and keep only their visual.                                                                                          |

The `image_filenames` query parameter on the result endpoint narrows `images_content_metadata` to the files you name.

## Example

Parse with chart parsing on, save the cropped figures, and pull the first table off the chart page:

```
from llama_cloud import LlamaCloud


client = LlamaCloud()  # reads LLAMA_CLOUD_API_KEY from the environment


result = client.parsing.parse(
    file_id="FILE_ID",  # uploaded with client.files.create(file=..., purpose="parse")
    tier="agentic_plus",
    version="latest",
    processing_options={"specialized_chart_parsing": "agentic_plus"},
    output_options={"images_to_save": ["layout"]},
    expand=["items", "images_content_metadata"],
)


page = next(p for p in result.items.pages if p.success and p.page_number == 3)  # the chart page
tables = [item for item in page.items if item.type == "table"]
if tables:
    for row in tables[0].rows:
        print(row)


for image in result.images_content_metadata.images:
    print(f"{image.filename}: {image.presigned_url}")
```

## What you get

With chart parsing, Parse often represents a chart’s data as a `table` item on that page. For the grouped bar chart in the [chart example](../../examples/parse_charts_pandas/), the first row is the header and the rest are the series values:

```
['Fiscal Year', 'Budget Deficit (Billions of Dollars)', 'Net Operating Cost (Billions of Dollars)']
['2020', '$3,131.9', '$3,841.4']
['2021', '$2,775.6', '$3,094.9']
['2022', '$1,375.5', '$4,171.0']
```

Figures that stay as images appear in the `items` tree as `image` items, and `images_content_metadata` lists every saved file with a download URL:

```
{
  "images_content_metadata": {
    "total_count": 3,
    "images": [
      { "index": 0, "filename": "image_0.png", "category": "layout", "content_type": "image/png", "presigned_url": "https://..." }
    ]
  }
}
```

Presigned URLs expire. Download promptly, or call `client.parsing.get(job_id=..., expand=["images_content_metadata"])` again for fresh ones; see [fetch specific images](../../guides/retrieving-results/#fetch-specific-images) to pull a subset by file name. For full-page screenshots, request `expand=["metadata"]` too and use each page’s `original_orientation_angle` when overlaying boxes; see [Layout and bounding boxes](../layout-and-bounding-boxes/).

## See also

- [Parse charts in PDFs and analyze with pandas](../../examples/parse_charts_pandas/): the full walk-through, from chart to DataFrame
- [Recipes: per-page screenshots for a multimodal pipeline](../../guides/recipes/#get-per-page-screenshots-for-a-multimodal-pipeline)
- [Configuring Parse: specialized chart parsing](../../guides/configuring-parse/#specialized-chart-parsing) and [image assets](../../guides/configuring-parse/#image-assets)
- [Response format: images](../../guides/response-format/#images) for every field on an image entry
- [Tables](../tables/) for the table formats chart data shares
