主题
Parse 用两种方式处理图表与图形。专门的图表解析会读懂柱状图、折线图或饼图,把它的数值作为一张表返回到 items 树里,让模型可以对数字推理而不是对着像素猜测;图片输出则保存图形本身(裁剪出的版面区域、内嵌图片,或整页截图),存成可用预签名 URL 下载的文件。
什么时候用它
- 财报演示、科研论文与仪表盘 —— 你要的数据只存在于图表里。
- 多模态流水线 —— 想要一整块 markdown 再加上每页一张截图。
- 想把图形与示意图单独展示在界面里、或单独交给视觉模型的场合。
- 希望 markdown 自包含、把图片内联其中的场合。
专门的图表解析在 agentic_plus 档默认开启,在 cost_effective 与 agentic 档需手动开启。fast 档不调用任何 AI 模型,因此不抽取图表数据。
选项
| 选项 | 类型 | 默认值 | 作用 |
|---|---|---|---|
processing_options.specialized_chart_parsing | "efficient"、"agentic" 或 "agentic_plus" | 未设(agentic_plus 默认开启) | 把图表数据作为结构化表格抽到 items 树里。三个取值中任意一个都会开启它。用 expand=["items"] 取回。 |
output_options.images_to_save | "screenshot"、"embedded"、"layout" 的数组 | 当输出链接到裁剪图片时保存 layout | 要保存哪些图片文件:整页渲染图、文档内的图片,还是裁剪出的图形与示意图。传 [] 则不保存任何图片资源。注意:若启用了 output_options.markdown.inline_images,"layout" 图片仍会被保存,以便 Markdown 里的图片引用能解析。用 expand=["images_content_metadata"] 取回。 |
output_options.markdown.inline_images | boolean | 未设 | 把图片直接内嵌进 markdown,而不是引用另存的文件。 |
processing_options.ignore.ignore_text_in_image | boolean | 未设 | 当内嵌图片里 OCR 出的文字是噪声(例如 logo)时跳过它。这会让本次任务完全不做 OCR,因此只适用于原生数字文件。 |
input_options.presentation.skip_embedded_data | boolean | 未设 | 对 PPTX 与 Keynote,跳过原生图表背后的数据抽取,只保留其视觉呈现。 |
结果端点上的 image_filenames 查询参数可以把 images_content_metadata 收窄到你指定的那些文件。
示例
从表示例 下载那份报告;它的第三页是一张柱状图:
终端窗口
curl -fL -o executive-summary-2024.pdf https://fiscal.treasury.gov/system/files/files/reports-statements/financial-report/2024/executive-summary-2024.pdf上传它、开启图表解析并保存裁剪图形跑一个 Parse 任务,然后取图表页上的第一张表:
from llama_cloud import LlamaCloud
client = LlamaCloud() # reads LLAMA_CLOUD_API_KEY from the environment
file = client.files.create(file="./executive-summary-2024.pdf", purpose="parse")
result = client.parsing.parse(
file_id=file.id,
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}")你会拿到什么
开启图表解析后,Parse 通常会把图表的数据表示为该页上的一个 table 条目。就表示例 里那张分组柱状图而言,第一行是表头,其余是各系列的取值:
['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']仍以图片形式保留的图形,会在 items 树里成为 image 条目;images_content_metadata 则列出每个已保存文件及其下载地址:
{
"images_content_metadata": {
"total_count": 3,
"images": [
{ "index": 0, "filename": "image_0.png", "category": "layout", "content_type": "image/png", "presigned_url": "https://..." }
]
}
}预签名 URL 会过期。请及时下载,或再次调用 client.parsing.get(job_id=..., expand=["images_content_metadata"]) 获取新的;按文件名取子集见取特定图片。要整页截图请同时请求 expand=["metadata"],并在叠加边界框时使用各页的 original_orientation_angle;见版面与边界框。
另请参阅
- 解析 PDF 中的图表并用 pandas 分析:从图表到 DataFrame 的完整走查
- 配方:为多模态流水线取整页截图
- 配置 Parse:专门的图表解析 与 图片资源
- 响应形态:图片:图片条目上的每个字段
- 表格:图表数据所共用的那些表格格式