ParseBench

run-llamaApache-2.0活跃维护

面向 AI Agent 的文档解析评测基准,覆盖 OCR、PDF 解析和表格抽取,用统一指标对比不同模型与工具在真实文档上的解析效果。

ParseBench - A Document Parsing Benchmark for AI Agents

v1.0.7发布于 2026-11-02 03:41 UTC629star +3 / 7 天135fork同步于 2026-11-10 17:57 UTC

怎么上手

由 README 提炼,执行前请确认
pip install "parse-bench[runners]"
uv run parse-bench run llamaparse_agentic --test
硬件要求按 README 说明

README 未说明本地硬件要求;评测主要调用各家解析 API,需自备对应 API Key,未提及显存或 GPU 型号。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

评测文档解析工具能否把 PDF 转成 AI Agent 可靠执行的结构化输出

面向 AI Agent 的文档解析评测基准,覆盖 OCR、PDF 解析和表格抽取,用统一指标对比不同模型与工具在真实文档上的解析效果。

核心能力

  • 覆盖约 2000 页人工校验的企业文档,含保险、金融、政府场景
  • 按表格、图表、内容忠实度、语义格式、视觉定位五个维度评测
  • 用 GTRM、ChartDataPointMatch 等确定性规则指标打分,默认不用 LLM 评判
  • 内置 180+ 解析管线,支持单维度运行、跳过推理重评与并发控制
  • 输出 HTML 报告、聚合看板及 CSV/Markdown/JSON 排行榜

容易踩的坑

需在项目根目录建 .env 并填入所评测工具的 API Key,否则无法调用解析服务;首次运行需从 HuggingFace 下载数据集,可用 parse-bench download 和 status 检查;报告需用 parse-bench serve 在浏览器查看,因为浏览器会拦截 file:// 下的 PDF 渲染。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v1.0.7
  1. v1.0.7最新正式版2026-11-02 · 2026-11-02 03:41 UTC

    What's Changed

    New Contributors

    Full Changelog: https://github.com/run-llama/ParseBench/compare/v1.0.6...v1.0.7

  2. v1.0.62026-10-30 · 2026-10-30 21:44 UTC
    查看更新说明

    What's Changed

  3. v1.0.42026-09-04 · 2026-09-04 22:29 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/run-llama/ParseBench/compare/v1.0.3...v1.0.4

  4. v1.0.32026-09-04 · 2026-09-04 22:00 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/run-llama/ParseBench/compare/v1.0.2...v1.0.3

  5. v1.0.22026-09-04 · 2026-09-04 19:32 UTC
    查看更新说明

    What's Changed

    Full Changelog: https://github.com/run-llama/ParseBench/compare/v1.0.1...v1.0.2

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    ParseBench

    Website arXiv Dataset Papers with Code: SOTA on ParseBench License

    Related: For schema-guided enterprise document extraction, see our companion benchmark ExtractBench.

    ParseBench is a benchmark for evaluating how well document parsing tools convert PDFs into structured output that AI agents can reliably act on. It tests whether parsed output preserves the structure and meaning needed for autonomous decisions — not just whether it looks similar to a reference text.

    The benchmark covers ~2,000 human-verified pages from real enterprise documents (insurance, finance, government), organized around five capability dimensions, each targeting a failure mode that breaks production agent workflows.

    Leaderboard

    Top 10 by Overall score. For the full sortable, filterable leaderboard, see parsebench.ai; for raw data, see leaderboard.csv.

    RankProviderCategoryOverallTablesChartsContent Faith.Sem. Format.Visual Ground.¢ / Page
    1LlamaParse Agentic PlusLlamaParse86.6993.2792.1989.7482.8475.435.62¢
    2LlamaParse AgenticLlamaParse82.8390.9081.2087.8484.8169.421.25¢
    3Pulse Ultra 2 †Commercial - Startup APIs81.6090.3589.7087.6373.9766.351.50¢
    4Upstage Document Parse 2 (Enhanced)VLM - Proprietary80.6489.4877.5087.6876.6871.843.00¢
    5anyformat (Standard)Commercial - Startup APIs80.0586.8485.0186.3979.2562.744.30¢
    6KDL-Frontier-Parser-nano-v2VLM - Open Weight79.0786.1969.1487.7776.9175.33—
    7Anthropic Opus 5.5 (Effort High)VLM - Proprietary78.8094.2670.8991.2577.0660.566.13¢
    8oi-parser †Commercial - Startup APIs78.3092.6278.2886.1766.8867.53—
    9Anthropic Fable 5.1VLM - Proprietary77.8191.5366.9390.7776.0263.8116.05¢
    10LlamaParse Cost EffectiveLlamaParse77.6886.7273.9887.3278.1462.220.38¢

    † Unverified: no published outputs in ParseBench-results; scores as submitted.

    Inclusion criteria:

    1. The model or API needs to be publicly accessible, either via open weights or a self-serve API that any user can sign up for.
    2. The benchmark run needs to finish within a reasonable time (roughly single-digit hours).
    3. We can adjust concurrency based on the provider's recommended settings, but providers should not require custom framework changes, so the evaluation stays fair across models.
    4. The row's per-document outputs are published to ParseBench-results. Published rows are re-scored automatically whenever the harness changes; see leaderboard/README.md.

    Quick Start

    Prerequisites: Create a .env file with the API key for the parsing tool you want to evaluate (see Configuration for details).

    # Install from PyPI (pick the extras for the providers you want to run)
    pip install "parse-bench[runners]"          # every provider SDK
    pip install "parse-bench[llamaparse]"       # or just one, e.g. llamaparse / openai / anthropic / google
    
    # Or, from a checkout of this repo
    uv sync --extra runners
    
    # Optional: add the `fast` extra for a JIT-accelerated TEDS table metric (numba).
    # Scores are identical to the default path — just faster on large tables.
    pip install "parse-bench[runners,fast]"
    
    # Quick test run (small dataset, 3 files per category — good for trying things out)
    # (drop the `uv run` prefix if you installed from PyPI)
    uv run parse-bench run llamaparse_agentic --test
    
    # Full benchmark run (replace llamaparse_agentic with any pipeline name, see "Available Pipelines" below)
    uv run parse-bench run llamaparse_agentic
    
    # View interactive reports in your browser
    uv run parse-bench serve llamaparse_agentic
    

    Available Pipelines

    A pipeline is a document parsing tool or configuration that you want to evaluate. There are 180+ pipelines available -- see docs/pipelines.md for the full list, or run uv run parse-bench pipelines. To add your own providers, pipelines, products or rule types from another package, see docs/extending.md.

    Pipeline nameName in paper
    llamaparse_agenticLlamaParse Agentic
    llamaparse_cost_effectiveLlamaParse Cost Effective
    openai_gpt5_mini_reasoning_medium_parse_with_layout_fileOpenAI GPT-5 Mini (Reasoning Medium)
    openai_gpt5_mini_reasoning_minimal_parse_with_layout_fileOpenAI GPT-5 Mini (Reasoning Minimal)
    openai_gpt_5_4_parse_with_layout_fileOpenAI GPT-5.4
    anthropic_haiku_parse_with_layout_fileAnthropic Haiku 4.5 (Disable Thinking)
    anthropic_haiku_thinking_parse_with_layout_fileAnthropic Haiku 4.5 (Thinking)
    anthropic_opus_4_6_parse_with_layout_fileAnthropic Opus 4.6
    google_gemini_3_flash_thinking_minimal_parse_with_layout_fileGoogle Gemini 3 Flash (Thinking Minimal)
    google_gemini_3_flash_thinking_high_parse_with_layout_fileGoogle Gemini 3 Flash (Thinking High)
    google_gemini_3_1_pro_parse_with_layout_fileGoogle Gemini 3.1 Pro
    azure_di_layoutAzure Document Intelligence
    aws_textractAWS Textract
    google_docai_layoutGoogle Cloud Document AI
    reductoReducto
    reducto_agenticReducto (Agentic)
    extend_parseExtend
    landingai_parseLandingAI
    qwen3_5_4b_vllm_parseQwen 3 VL
    dots_ocr_1_5_parseDots OCR 1.5
    docling_parseDocling

    Dataset

    Hosted on HuggingFace: llamaindex/ParseBench

    The dataset is stratified into five capability dimensions, each with its own ground-truth format and evaluation metric:

    DimensionFile(s)MetricPagesDocsRules
    Tablestable.jsonlGTRM (GriTS + TableRecordMatch)503284---
    Chartschart.jsonlChartDataPointMatch568994,864
    Content Faithfulnesstext_content.jsonlContent Faithfulness Score506506141,322
    Semantic Formattingtext_formatting.jsonlSemantic Formatting Score4764765,997
    Visual Groundinglayout.jsonlElement Pass Rate50032116,325
    Total (unique)2,0781,211169,011

    Content Faithfulness and Semantic Formatting share the same 507 underlying text documents, evaluated with different rule sets. Totals reflect unique pages and documents. Tables uses a continuous metric (no discrete rules).

    What each dimension tests and why it matters for agents:

    • Tables — Structural fidelity of merged cells and hierarchical headers. A misaligned header means the agent reads the wrong column when looking up a value.
    • Charts — Exact data point extraction with correct series and axis labels from bar, line, pie, and compound charts. Most parsers return raw text instead of structured data, leaving agents unable to extract precise values.
    • Content Faithfulness — Omissions, hallucinations, and reading-order violations. If the agent's context is incomplete or contains fabricated content, every downstream decision is compromised.
    • Semantic Formatting — Preservation of formatting that carries meaning: strikethrough (marks superseded content), superscript/subscript (footnotes, formulas), bold (defined terms, key values), and title hierarchy. A strikethrough price is not the current price. Italic, underline, and mark/highlight are evaluated as rule-level metrics but intentionally excluded from the headline Semantic Formatting score.
    • Visual Grounding — Tracing every extracted element back to its source location on the page. Required for auditability in regulated workflows where every value must be traceable.

    The dataset is automatically downloaded when you run a pipeline. To manage it manually:

    # Download the full dataset
    uv run parse-bench download
    
    # Download a small test dataset (3 files per category, good for trying things out)
    uv run parse-bench download --test
    
    # Check whether the dataset has been downloaded and show summary statistics
    uv run parse-bench status
    

    Repetition tests

    repetition_overshoot is a built-in rule that fails an output repeating anything (a dot leader, a unit, a token, a line, a table row, a whole table) more than the page holds. Restyling, splitting, merging or dropping a repetition never fails; only overshoot does. An empty answer fails too.

    # Write a repetition test next to each PDF, budgeted from its text layer, then run it
    uv run parse-bench repetition make ./my_docs
    uv run parse-bench run <pipeline_name> --input_dir ./my_docs
    
    # Run any HuggingFace dataset in the ParseBench layout (downloads to ./data/<name> on first run)
    uv run parse-bench run <pipeline_name> --dataset org/name
    

    See docs/repetition-overshoot.md for the rule and its budgets.

    Usage

    Running the Benchmark

    The run command runs inference (calls the parsing tool), evaluates the results against ground truth, and generates reports:

    # Evaluate a parsing tool on all five dimensions
    uv run parse-bench run <pipeline_name>
    
    # Evaluate on a single dimension only (e.g., chart, table, layout, text_content, text_formatting)
    uv run parse-bench run <pipeline_name> --group chart
    
    # Skip calling the parsing tool — just re-evaluate existing results
    uv run parse-bench run <pipeline_name> --skip_inference
    
    # Control how many pages are processed in parallel
    uv run parse-bench run <pipeline_name> --max_concurrent 10
    
    # Run on the small test dataset only (3 files per category, good for trying things out)
    uv run parse-bench run <pipeline_name> --test
    

    When running all dimensions, the benchmark produces:

    • Per-dimension detailed HTML reports with drill-down per test case
    • An aggregation dashboard showing all dimensions side-by-side
    • A leaderboard comparing all evaluated tools in the output directory
    • CSV, Markdown, and JSON exports per dimension

    Viewing & Comparing Results

    # View reports in your browser (needed because browsers block PDF rendering from file:// URLs)
    uv run parse-bench serve <pipeline_name>
    
    # Compare two parsing tools side-by-side
    uv run parse-bench compare <pipeline_a> <pipeline_b>
    
    # Generate a leaderboard across all evaluated tools
    uv run parse-bench leaderboard
    
    # Leaderboard for specific tools only
    uv run parse-bench leaderboard llamaparse_agentic llamaparse_cost_effective
    

    For fine-grained control over individual steps:

    # Run inference only (call the parsing tool, don't evaluate)
    uv run parse-bench inference run <pipeline_name>
    
    # Run evaluation only (on existing inference results)
    uv run parse-bench evaluation run --output_dir ./output/<pipeline_name>
    
    # Generate detailed HTML report from evaluation results
    uv run parse-bench analysis generate_report --evaluation_dir ./output/<pipeline_name>
    
    # Regenerate the aggregation dashboard
    uv run parse-bench analysis generate_dashboard --evaluation_dir ./output/<pipeline_name>
    

    To add a new parsing tool to ParseBench, use Claude Code:

    /integrate-pipeline <name> <API docs or SDK link>
    

    This creates the provider, registers the pipeline, and updates docs. The skill definition lives in .claude/commands/integrate-pipeline.md and can be adapted for other AI coding agents.

    Configuration

    API Keys

    Each pipeline calls a specific parsing tool's API. You only need the API key for the tool you want to evaluate — add it to a .env file at the project root:

    # Only add the keys you need. For example, to evaluate LlamaParse:
    LLAMA_CLOUD_API_KEY=...
    
    # Optional: point LlamaParse at a custom API base URL,
    # e.g. http://localhost:8000. Takes precedence over staging/EU/prod selection.
    LLAMA_CLOUD_BASE_URL=...
    
    # To evaluate OpenAI-based pipelines:
    OPENAI_API_KEY=...
    
    # To evaluate Anthropic-based pipelines:
    ANTHROPIC_API_KEY=...
    
    # To evaluate Google-based pipelines:
    GOOGLE_API_KEY=...
    

    By default ParseBench does not use LLM-as-a-judge — all evaluation is deterministic and rule-based, and API keys are only used to call the parsing tool being evaluated. (An opt-in chart normalization mode exists but is off by default — see LLAMACLOUD_BENCH_LLM_NORMALIZATION.)

    Environment Variables

    VariableDefaultDescription
    PARSEBENCH_FAST_TEDS1Fast Zhang-Shasha TEDS table metric (uses the numba JIT when the fast extra is installed, otherwise an exact pure-Python fallback). Set to 0 to force the original APTED implementation — scores are identical either way, so this is only needed for debugging or benchmarking.
    LLAMACLOUD_BENCH_LLM_NORMALIZATIONoffSet to judge to opt into LLM-as-judge chart normalization (non-deterministic, needs ANTHROPIC_API_KEY).

    CLI Reference

    CommandDescription
    parse-bench runEvaluate a parsing tool end-to-end (inference + evaluation + reports)
    parse-bench downloadDownload the benchmark dataset from HuggingFace
    parse-bench statusCheck whether the dataset has been downloaded
    parse-bench pipelinesList all available parsing tools / pipeline configurations
    parse-bench compareCompare results from two parsing tools side-by-side
    parse-bench leaderboardGenerate a leaderboard across all evaluated tools
    parse-bench serveView HTML reports in your browser (with PDF rendering support)

    Advanced subcommands: inference, evaluation, analysis, pipeline, data

    output/
    ├── _leaderboard.html                       # Cross-pipeline leaderboard
    └── <pipeline_name>/
        ├── chart/
        │   ├── *.result.json                    # Inference results
        │   ├── _evaluation_report.json          # Evaluation summary
        │   ├── _evaluation_report_detailed.html # Interactive detailed report
        │   ├── _evaluation_results.csv          # Per-example CSV
        │   └── _evaluation_report.md            # Markdown summary
        ├── layout/   (same structure)
        ├── table/    (same structure)
        ├── text_content/   (same structure)
        ├── text_formatting/ (same structure)
        ├── _evaluation_report_dashboard.html    # Aggregation dashboard
        └── _metadata.json                       # Run metadata
    
    src/parse_bench/
    ├── cli.py                           # Fire CLI entry point
    ├── pipeline/cli.py                  # End-to-end pipeline orchestration
    ├── data/
    │   ├── download.py                  # HuggingFace dataset download
    │   └── cli.py                       # Data management CLI
    ├── inference/
    │   ├── runner.py                    # Batch inference with concurrency
    │   ├── pipelines/                   # Pipeline registry (parse, extract, layout)
    │   └── providers/                   # Provider implementations per product type
    ├── evaluation/
    │   ├── runner.py                    # Parallel evaluation
    │   ├── evaluators/                  # Product-specific evaluators (parse, extract, layout)
    │   ├── metrics/                     # Metric implementations (TEDS, GriTS, rules, IoU)
    │   └── reports/                     # CSV, HTML, markdown export
    ├── analysis/
    │   ├── aggregation_report.py        # Multi-category dashboard
    │   ├── detailed_report.py           # Interactive per-category HTML report
    │   ├── comparison.py                # Pipeline comparison
    │   └── comparison_report.py         # Comparison HTML report
    ├── test_cases/
    │   ├── loader.py                    # Load test cases (JSONL or sidecar .test.json)
    │   └── schema.py                    # TestCase types (Parse, Extract, LayoutDetection)
    └── schemas/
        ├── pipeline_io.py               # InferenceRequest, InferenceResult
        ├── evaluation.py                # EvaluationResult, EvaluationSummary
        └── product.py                   # ProductType enum (PARSE, EXTRACT, LAYOUT_DETECTION)
    

    Citation

    @misc{zhang2026parsebench,
      title={ParseBench: A Document Parsing Benchmark for AI Agents},
      author={Boyang Zhang and Sebastián G. Acosta and Preston Carlson and Sacha Bron and Pierre-Loïc Doulcet and Daniel B. Ospina and Simon Suo},
      year={2026},
      eprint={2604.08538},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2604.08538},
    }
    

    Links