parse-bench 1.0.0__tar.gz → 1.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {parse_bench-1.0.0 → parse_bench-1.0.2}/CHANGELOG.md +79 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/PKG-INFO +1 -1
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/__init__.py +1 -1
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/parse.py +10 -1
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_adapters/adapters.py +511 -277
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_adapters/registry.py +29 -2
- parse_bench-1.0.2/src/parse_bench/evaluation/layout_label_mappers/projection.py +155 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/layoutdet/__init__.py +4 -0
- parse_bench-1.0.2/src/parse_bench/evaluation/metrics/layoutdet/iou.py +421 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/grits_metric.py +94 -7
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rule_based_metric.py +89 -11
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_base.py +5 -2
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_chart.py +85 -12
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/runner.py +12 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/extensions.py +4 -1
- parse_bench-1.0.2/src/parse_bench/geometry/__init__.py +1 -0
- parse_bench-1.0.2/src/parse_bench/geometry/rotated_bbox.py +227 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/pipelines/parse.py +30 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/extract/citations.py +1 -1
- parse_bench-1.0.2/src/parse_bench/py.typed +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/evaluation.py +15 -3
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/extract_output.py +4 -1
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/layout_detection_output.py +53 -4
- parse_bench-1.0.2/src/parse_bench/schemas/parse_output.py +282 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/parse_rule_schemas.py +2 -1
- parse_bench-1.0.2/tests/parse_bench/evaluation/layout_label_mappers/test_projection_dual_read.py +331 -0
- parse_bench-1.0.2/tests/parse_bench/evaluation/metrics/layoutdet/test_rotated_iou.py +113 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_chart_data_point_rule.py +74 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_grits_perf_equivalence.py +44 -0
- parse_bench-1.0.2/tests/parse_bench/evaluation/metrics/parse/test_rule_metric_side_inputs.py +201 -0
- parse_bench-1.0.2/tests/parse_bench/geometry/test_rotated_bbox.py +103 -0
- parse_bench-1.0.2/tests/parse_bench/test_evaluation_schema_extra_fields.py +36 -0
- parse_bench-1.0.0/src/parse_bench/evaluation/layout_label_mappers/projection.py +0 -74
- parse_bench-1.0.0/src/parse_bench/evaluation/metrics/layoutdet/iou.py +0 -76
- parse_bench-1.0.0/src/parse_bench/schemas/parse_output.py +0 -152
- {parse_bench-1.0.0 → parse_bench-1.0.2}/.gitignore +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/LICENSE +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/README.md +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/pyproject.toml +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/aggregation_report.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/comparison.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/comparison_core.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/comparison_report.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/detailed_report.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/leaderboard_report.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/analysis/metric_definitions.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/data/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/data/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/data/download.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/extract.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/layoutdet.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/evaluators/qa.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_adapters/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_adapters/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_label_mappers/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_label_mappers/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_label_mappers/mappers.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/layout_label_mappers/registry.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metric_aggregation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/constants.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/core.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/evaluate.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/geometry.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/attribution/text_utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/downstream/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/json_subset_match.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/json_subset_match_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/list_unwrap.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/rule_based_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/test_rules.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/extract/test_types.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/core.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/extract_adapter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/parse_adapter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/rule_filters.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/field_grounding/value_compare.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/layoutdet/classification_utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/_vendor_grits_reference.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/cross_page_table_consistency.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/emphasis_spans.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/fast_tree_edit.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/grits_reference_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/header_accuracy_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/llm_normalization/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/llm_normalization/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/llm_normalization/config.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/llm_normalization/postprocess.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/llm_normalization/strategy_judge.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/mermaid_graph.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rule_based_judge_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_bag.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_diagram.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_form.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_formatting.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_heading.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_list.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_page_decoration.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_table.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_text.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/rules_watermark.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/structural_consistency_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_extraction.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_merging.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_pairing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_parsing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_record_match_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_splitting.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/table_title_stripping.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/teds_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/test_rules.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/test_types.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/text_content_projection.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/text_similarity_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/parse/utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/qa/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/metrics/qa/answer_comparison.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/qa/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/qa/llm_service.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/reports/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/reports/csv.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/reports/html.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/reports/markdown.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/reports/rule_csv.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/evaluation/stats.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/chunkr_layout_extraction.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/layout_extraction.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/pipelines/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/pipelines/extract.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/pipelines/layout.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/pipelines.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/cancellation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/extract/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/extract/extend.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/extract/llamaextract_v2_api.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/adapters.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/base.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/chandra.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/docling.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/dots_ocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/layout_v3.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/layout_v3_byoc.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/paddle.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/qwen3vl.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/surya.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/layoutdet/yolo.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/_docling_common.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/_layout_utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/amazon_nova.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/anthropic.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/azure_document_intelligence.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/chandra2.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/chunkr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/databricks_ai_parse.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/datalab.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/deepseekocr2.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/docling.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/docling_serve.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/dots_ocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/extend_parse.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/falconocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/florin_parser_nano.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/gemma4.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/glm_zai.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/google.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/google_agentic_vision.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/google_docai.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/google_docai_layout_normalization.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/granite_vision.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/infinity_parser2.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/kdl_frontier_nano.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/landingai.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/liteparse.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/llamaparse.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/llamaparse_v2_normalization.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/markitdown.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/mineru25.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/mineru2605pro.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/mineru_diffusion.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/mistral_ocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/nemotron_omni.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/oi_parser.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/openai.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/opendataloader.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/paddleocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/pdf_inspector.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/pulse.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/pymupdf.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/pymupdf4llm.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/pypdf.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/qwen.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/rakedoc_nano.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/reducto.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/surya2.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/tesseract.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/textract.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/unlimitedocr.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/unstructured.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/parse/warp_ingest.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/providers/registry.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/renormalize.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/inference/runner.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/layout_label_mapping.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/layout_projection.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/pipeline/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/pipeline/cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/layout_ontology.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/metrics.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/pipeline.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/pipeline_io.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/schemas/product.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/bbox_value_strict_comparator.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/extract_field_paths.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/layout_attribution_generation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/loader.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/rule_filters.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/rule_ids.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/test_cases/schema.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/utils/__init__.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/utils/gemini_layout_utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/src/parse_bench/utils/text_aggregation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/analysis/test_comparison_consistency.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/analysis/test_comparison_core.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/analysis/test_comparison_directory_suffix.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/analysis/test_detailed_report.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/evaluators/test_extract_empty_expected_output.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/evaluators/test_parse_evaluator_layout_rule_filter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/evaluators/test_parse_evaluator_styling_rollup.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/evaluators/test_parse_evaluator_table_pages.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_adapters/test_docling_parse_layout_adapter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_adapters/test_llamaparse_attribution_scope.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_adapters/test_llamaparse_canonical_layout_pages.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_label_mappers/test_llamaparse_label_mapper.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_label_mappers/test_projection_attributes.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/layout_label_mappers/test_pymupdf4llm_label_mapper.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/attribution/test_attribution_overclaim.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/extract/test_json_subset_match.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/field_grounding/test_extract_adapter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/layoutdet/test_classification_utils_paging.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_chart_label_punctuation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_cross_page_table_consistency_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_degenerate_marker_rules.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_diagram_rules.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_fast_table_parity.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_form_field_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_formatting_rule_adjacent_spans.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_grits_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_grits_trm_composite.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_header_accuracy_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_heading_structure_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_merge_preceding_titles.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_normalize_cell_text.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_normalize_text_inline_tag_separator.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_page_decoration_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_combining_mark_tokenization.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_formatting_rule_paragraph_spans.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_formatting_rule_quotes.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_formatting_rule_span_scope.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_list_level_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_table_cell_augmentation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_text_order_rule_html.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_parse_text_presence_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_relaxed_normalize_cell_text.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_rule_metric_budget_and_bag_images.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_caption_title_band.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_cell_inline_marker_separator.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_dot_leaders.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_extraction.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_marker_cells_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_merging_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_pairing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_record_match_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_row_header_th.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_splitting.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_tbody_provenance.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_table_title_stripping.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_teds_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_text_color_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_text_content_projection.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_text_similarity_metric.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_title_hierarchy_inapplicable.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/parse/test_watermark_removal_rule.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/metrics/qa/test_answer_comparison_exact_choice.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/test_cli_detailed_report_nonfatal.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/test_runner_aggregation.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/test_runner_result_files.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/test_runner_worker_timeout.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/evaluation/test_stats.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/extract/test_extend_cost_stats.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/extract/test_extend_schema_adapter.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_amazon_nova.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_anthropic_pricing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_azure_document_intelligence_layout.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_chandra2_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_datalab.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_deepseekocr2_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_extend_parse_pages.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_falconocr_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_gemma4_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_glm_zai.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_google_parse_pricing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_granite_vision_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_infinity_parser2.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_kdl_frontier_nano.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_layout_coordinate_frames.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_layout_utils.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_liteparse_layout.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_llamaparse_picture_type.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_llamaparse_polling.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_llamaparse_usage_metadata.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_llamaparse_v2_normalization.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_llamaparse_v2_null_page_fields.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_mineru25_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_mineru2605pro_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_mineru_diffusion_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_nemotron_omni_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_openai_parse_errors.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_paddleocr_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_pymupdf4llm.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_qwen.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_reducto_normalize.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_surya2_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_textract_cost.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_unlimitedocr_multipage.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/providers/parse/test_warp_ingest.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/test_cli.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/test_layout_extraction.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/test_parse_pipelines.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/test_renormalize.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/inference/test_runner.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/test_cases/test_loader_stem_twins.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/test_cases/test_parse_rule_schemas.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/test_cases/test_rule_ids.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/test_extensions.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/parse_bench/test_layout_label_mapping_code_alias.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/test_data_dir_routing.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/test_extract_integration.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/test_llamaparse_base_url.py +0 -0
- {parse_bench-1.0.0 → parse_bench-1.0.2}/tests/test_pulse_public_api.py +0 -0
|
@@ -4,6 +4,85 @@ All notable changes to `parse-bench` are recorded here. The format follows
|
|
|
4
4
|
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project uses
|
|
5
5
|
[Semantic Versioning](https://semver.org/).
|
|
6
6
|
|
|
7
|
+
## [1.0.2] - 2026-09-04
|
|
8
|
+
|
|
9
|
+
Ports two fixes that landed in the internal harness while 1.0.1 was being cut.
|
|
10
|
+
|
|
11
|
+
### Scoring (changes evaluation numbers)
|
|
12
|
+
- `chart_data_point`: number parsing accepts accounting negatives (`(4)`,
|
|
13
|
+
`$(4)`, `($4)`, trailing minus), the `bn` billion suffix, and no longer
|
|
14
|
+
reads a comma followed by a space as a decimal separator. A numeric rule
|
|
15
|
+
value no longer fuzzy-matches a compound cell (`249` vs `249, 188`); a cell
|
|
16
|
+
that carries one numeric token plus an axis unit (`68.7 days`) does match.
|
|
17
|
+
A repeated column header after a body section label counts as local scope
|
|
18
|
+
only when the complete pair precedes the candidate.
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
- Granular pages carry a `cells` layer; the LlamaParse adapter reads the
|
|
22
|
+
provider-neutral `granular_layers` on normalized pages before falling back
|
|
23
|
+
to the grounded-page payload.
|
|
24
|
+
|
|
25
|
+
## [1.0.1] - 2026-09-03
|
|
26
|
+
|
|
27
|
+
Harness-facing release: no evaluation number changes. Everything here lets a
|
|
28
|
+
downstream benchmark harness build on `parse-bench` without overriding
|
|
29
|
+
built-in rule classes or patching package models at import time.
|
|
30
|
+
|
|
31
|
+
### Fixed
|
|
32
|
+
- `diagram_graph` rules with a `reference_image` never received the test case
|
|
33
|
+
or source file path from the evaluator, so the reference render was never
|
|
34
|
+
found. `ParseEvaluator` now forwards `source_file_path` and
|
|
35
|
+
`test_case_file_path` to the rule metric.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
- `RuleBasedMetric._prepare_rule(rule, actual, kwargs)`: one hook, run inside
|
|
39
|
+
the per-rule timeout, that hands a freshly created rule its side inputs.
|
|
40
|
+
Injection is attribute-driven, so any rule (built-in or extension) that
|
|
41
|
+
declares `raw_output`, `source_file_path` or `test_case_path` receives the
|
|
42
|
+
matching `compute` keyword argument. Subclasses extend it for
|
|
43
|
+
harness-specific inputs.
|
|
44
|
+
- `ChartTableCache`: chart rules on one document share a single parsed-table
|
|
45
|
+
pass. Pass `chart_table_cache=` to `compute` to read the parse back.
|
|
46
|
+
- Page-parallel GriTS pairwise scoring: `GriTSMetric(pair_workers=N)`,
|
|
47
|
+
`ParseEvaluator(grits_pair_workers=N)`, or `BENCH_GRITS_PAIR_WORKERS`.
|
|
48
|
+
The evaluation runner splits the CPU budget so `doc_workers x pair_workers`
|
|
49
|
+
stays within the core count. Scores are identical to the sequential path
|
|
50
|
+
(guarded by `test_grits_perf_equivalence`).
|
|
51
|
+
- `py.typed` marker: the package is now typed for downstream mypy.
|
|
52
|
+
- Rotated-box geometry: `parse_bench.geometry.rotated_bbox` (`xywh_r` <->
|
|
53
|
+
polygon conversion, containment) and rotated polygon IoU / IoA in
|
|
54
|
+
`evaluation.metrics.layoutdet.iou` for datasets whose layout ground truth
|
|
55
|
+
carries an `r` rotation.
|
|
56
|
+
|
|
57
|
+
### Layout adapters and schemas (changes layout numbers for the providers named)
|
|
58
|
+
- Azure Document Intelligence: checkbox items carry `scope=mark`, so mark-scope
|
|
59
|
+
checkbox datasets score them; Textract and Azure DI adapters build granular
|
|
60
|
+
(line / word) pages for granular layout scoring.
|
|
61
|
+
- LlamaParse: the adapter also matches results whose `ParseOutput` carries
|
|
62
|
+
`grounded_pages`, and builds granular pages from that payload before falling
|
|
63
|
+
back to the raw response; merged granular bboxes keep a shared rotation `r`.
|
|
64
|
+
- Projection prefers `layout_pages[*].items` over the legacy flat
|
|
65
|
+
`predictions` list when any page has items (canonical labels coerced
|
|
66
|
+
directly), and a missing detector score projects as 0.0 in both paths.
|
|
67
|
+
- `LayoutOutput` gains the `ParseOutput`-parity fields (`pages`,
|
|
68
|
+
`grounded_pages`, `job_id`); `LayoutDetectionModel` gains
|
|
69
|
+
`OPENAI_COMPATIBLE_VLM_LAYOUT`, `CHECKBOX_DETECTOR_YOLOV8`, `COHERE_PARSE_LAYOUT`.
|
|
70
|
+
- Parse IR: `LineNumberIR`, `LinkIR`, `RevisionIR`, `GranularUnitIR` /
|
|
71
|
+
`GranularLayerIR`, `LayoutSegmentIR.r`, `ParseLayoutPageIR.links /
|
|
72
|
+
revisions / granular_layers` and `ParseOutput.grounded_pages`.
|
|
73
|
+
- `register_pipeline_resolver` (in `parse_bench.extensions`): a harness with
|
|
74
|
+
its own pipeline registry can map `pipeline_name` to a provider key, so the
|
|
75
|
+
adapter and mapper registries resolve its pipelines too.
|
|
76
|
+
- Adapter aliases: `anthropic_haiku` resolves to the Anthropic adapter.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
- `MetricValue` and `RunStat` accept extra fields (`extra="allow"`) so
|
|
80
|
+
provenance a harness attaches round-trips losslessly.
|
|
81
|
+
- `ParseRuleInput` and `ParseTestRule.__init__` accept any `ParseRuleBase`
|
|
82
|
+
subclass, not only the closed built-in union, so extension rule classes
|
|
83
|
+
need no cast to call `super().__init__`.
|
|
84
|
+
- `FieldCitation.bbox` is optional: a page-only citation carries `bbox=None`.
|
|
85
|
+
|
|
7
86
|
## [1.0.0] - 2026-09-02
|
|
8
87
|
|
|
9
88
|
This release brings the public evaluator back to parity with the internal
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: parse-bench
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.2
|
|
4
4
|
Summary: ParseBench: a benchmark and evaluation harness for document parsing systems on real-world enterprise documents
|
|
5
5
|
Project-URL: Homepage, https://parsebench.ai
|
|
6
6
|
Project-URL: Repository, https://github.com/run-llama/ParseBench
|
|
@@ -228,6 +228,7 @@ class ParseEvaluator(BaseEvaluator):
|
|
|
228
228
|
enable_table_record_match: bool = True,
|
|
229
229
|
enable_table_composite: bool = False,
|
|
230
230
|
teds_variants: set[str] | None = None,
|
|
231
|
+
grits_pair_workers: int | None = None,
|
|
231
232
|
):
|
|
232
233
|
"""
|
|
233
234
|
Initialize the ParseEvaluator.
|
|
@@ -243,6 +244,9 @@ class ParseEvaluator(BaseEvaluator):
|
|
|
243
244
|
:param enable_structural_consistency: Enable structural consistency metric (default: True)
|
|
244
245
|
:param teds_variants: Set of TEDS variant names to compute. Defaults to
|
|
245
246
|
{TEDS_CONTENT} (standard TEDS only). Use ALL_TEDS_VARIANTS for all.
|
|
247
|
+
:param grits_pair_workers: Per-document page-parallelism width for GriTS
|
|
248
|
+
(the runner passes a CPU budget so ``doc_workers x pair_workers`` stays
|
|
249
|
+
within the core count). ``None`` defers to ``BENCH_GRITS_PAIR_WORKERS``.
|
|
246
250
|
"""
|
|
247
251
|
self._enable_rule_based = enable_rule_based
|
|
248
252
|
self._enable_text_similarity = enable_text_similarity
|
|
@@ -256,7 +260,7 @@ class ParseEvaluator(BaseEvaluator):
|
|
|
256
260
|
logger.info("Chart LLM normalization mode: %s", get_normalization_mode().value)
|
|
257
261
|
self._text_similarity_metric = TextSimilarityMetric()
|
|
258
262
|
self._teds_metric = TEDSMetric(variants=teds_variants if teds_variants is not None else {TEDS_CONTENT})
|
|
259
|
-
self._grits_metric = GriTSMetric()
|
|
263
|
+
self._grits_metric = GriTSMetric(pair_workers=grits_pair_workers)
|
|
260
264
|
self._header_accuracy_metric = HeaderAccuracyMetric()
|
|
261
265
|
self._header_accuracy_generous_metric = HeaderAccuracyMetricGenerous()
|
|
262
266
|
self._structural_consistency_metric = StructuralConsistencyMetric()
|
|
@@ -362,6 +366,11 @@ class ParseEvaluator(BaseEvaluator):
|
|
|
362
366
|
page=None, # Document-level for now
|
|
363
367
|
raw_output=inference_result.raw_output,
|
|
364
368
|
parse_output=inference_result.output,
|
|
369
|
+
source_file_path=inference_result.request.source_file_path,
|
|
370
|
+
# Rules that read side files (reference renders next to the
|
|
371
|
+
# test case) need the test case's own location: providers may
|
|
372
|
+
# stage the input elsewhere.
|
|
373
|
+
test_case_file_path=str(test_case.file_path),
|
|
365
374
|
)
|
|
366
375
|
metrics.append(rule_result)
|
|
367
376
|
if "judge_pass_rate" in rule_result.metadata:
|