sora 13274243a0 Bump vendored EvalScope and add K3-ready DPV4 configs.
Keep K3 suite selection and report-schema scoring in bash, merge K3/vision dataset_args into dpv4 yamls, and pin EvalScope at 735d920ee911 with local patches.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-02 07:30:48 +00:00

6.9 KiB
Raw Permalink Blame History

CC-OCR-V2

概述

CC-OCR V2 是一个面向真实企业文档处理场景的高难度 OCR 基准测试。它刻意对先前 OCR 基准测试中代表性不足的困难和边缘案例进行了过采样,例如拍摄或扫描的表格、手写公式、多页收据以及低质量的多语言自然场景文本。

任务描述

  • 任务类型文本识别、文档解析、文档定位grounding、关键信息抽取和文档问答VQA
  • 输入:一张或多张文档图像,以及每个样本附带的任务指令
  • 输出自由格式文本、LaTeX、HTML 表格、SMILES 字符串、JSON 对象或边界框,具体取决于任务赛道
  • 模态:图像 + 文本,双语(中文 / 英文),识别赛道额外包含 32 种语言

核心特性

  • 共包含 7,093 个官方样本,覆盖 5 个赛道和 16 个子任务,统一作为单一基准进行评估;由于数据集仓库中缺少其中两个样本的图像,实际加载 7,091 个样本
  • 识别recognition多语言32 种语言)及自然场景文本阅读
  • 解析parsing:复杂表格、通用文档、手写公式、分子结构和信息公告板
  • 定位grounding:文本定位(单框)和对象定位(带标签的多框检测)
  • 抽取extraction基于模式schema-driven的关键信息抽取涵盖商业、公共服务和监管记录
  • 问答qa:针对蓝图、仪表盘和财务文档的问答任务
  • 提示词prompts直接来自官方数据集确保结果可与已发布的排行榜进行比较

评估说明

  • 每个样本产生一个 [0, 1] 范围内的 score;各赛道使用其官方指标:
    • 识别 = token 级别 F1
    • 解析 = 编辑相似度 / TEDS
    • 定位 = IoU
    • 抽取 = 字段级别 F1
    • 问答 = 子串匹配,辅以 ANLS 回退策略
  • 子集得分是样本得分的均值;各赛道类别还会报告其子任务的宏平均分
  • 定位任务的提示要求在 01000 的归一化坐标网格上返回边界框;若预测使用绝对像素坐标,则会被重新缩放为归一化形式,否则得分将接近零,与官方排行榜行为一致
  • 全页解析的目标输出较长,因此需设置较大的 max_tokens(建议 4096 或更高)
  • 依赖项:apted, distance, lxml, python-Levenshtein, scipy, zss (可通过 pip install 'evalscope[cc_ocr_v2]' 安装)
  • 数据集以图像和答案组成的文件树形式提供(约 5 GB。仅下载 subset_list 中指定的赛道,因此限制子集可显著减小下载体积

属性

属性
基准测试名称 cc_ocr_v2
数据集ID evalscope/CC-OCR-V2
论文 Paper
标签 Grounding, MultiLingual, MultiModal, QA
指标 normalized_score
默认示例数 0-shot
评估划分 test

数据统计

指标
总样本数 7,091
提示词长度(平均) 272.16 字符
提示词长度(最小/最大) 10 / 1330 字符

各子集统计:

子集 样本数 提示平均长度 提示最小长度 提示最大长度
multi_lingual_recognition 639 101 101 101
natural_scene_recognition 1,150 101.87 101 103
complex_table_parsing 300 327 327 327
formula_parsing 100 119 119 119
general_documents_parsing 299 258 258 258
info_board_parsing 26 701 701 701
molecular_parsing 100 232 232 232
object_grounding 734 491.83 306 1330
text_grounding 734 369.88 358 468
business_transactions 340 793.91 702 1105
public_services 369 735.45 687 902
regulated_records 300 798.84 722 898
blueprint_qa 100 25.4 10 69
dashboards_fact_qa 400 66.59 19 159
dashboards_numeric_qa 500 70.49 19 148
financial_documents_qa 1,000 41.77 14 115

图像统计:

指标
图像总数 7,116
每样本图像数 最小: 1, 最大: 3, 平均: 1.0
分辨率范围 70x71 - 5313x7219
格式 jpeg, png

样例示例

子集: multi_lingual_recognition

{
  "input": [
    {
      "id": "253834d2",
      "content": [
        {
          "image": "~/.cache/modelscope/hub/datasets/evalscope/CC-OCR-V2/recognition/multi_lingual_recognition/images/multi_lan_ocr_Arabic_Arabic_20/0c780237abcb.jpg"
        },
        {
          "text": "Please output only the text content from the image without any additional descriptions or formatting."
        }
      ]
    }
  ],
  "target": "الآن بحق السماء يا دجونا، أكل طعامك المتحجر غير المطابقة ....Demonstrandum\n.للمواصفات واتركني بسلام .”قال دجونا بحزن وهو ينظر إلى الحقيبة الفارغة: “لقد ذهب كل شيء أنا هنا!” صرخ بصوت غالي مرح، وكتم إليري أنينًا آخر عندما رأى السيد دوفال يقفز“\n ... [TRUNCATED 1733 chars] ... حنة الحشد“\nكان هناك ضحكة خفيفة. كان الشخص الضعيف القلب الذي خاطبه المرافق شابًا زنجيًا\nقويًا، يرتدي ملابس بنية سيمفونية أنيقة، وقبعته القشية مبهرة على الكربون السخام\n!الموجود في جلده. ضحكت فتاة جميلة ملونة على ذراعه. “هيا يا عزيزتي، سوف نريهم",
  "id": 0,
  "group_id": 0,
  "subset_key": "multi_lingual_recognition",
  "metadata": {
    "id": "0c780237abcb",
    "task": "recognition",
    "sub_task": "multi_lingual_recognition",
    "scenario": "multi_lan_ocr_Arabic_Arabic_20",
    "image_paths": [
      "~/.cache/modelscope/hub/datasets/evalscope/CC-OCR-V2/recognition/multi_lingual_recognition/images/multi_lan_ocr_Arabic_Arabic_20/0c780237abcb.jpg"
    ]
  }
}

注:部分内容因展示需要已被截断。

提示模板

未定义提示模板。

使用方法

使用 CLI

evalscope eval \
    --model YOUR_MODEL \
    --api-url OPENAI_API_COMPAT_URL \
    --api-key EMPTY_TOKEN \
    --datasets cc_ocr_v2 \
    --limit 10  # 正式评估时请删除此行

使用 Python

from evalscope import run_task
from evalscope.config import TaskConfig

task_cfg = TaskConfig(
    model='YOUR_MODEL',
    api_url='OPENAI_API_COMPAT_URL',
    api_key='EMPTY_TOKEN',
    datasets=['cc_ocr_v2'],
    dataset_args={
        'cc_ocr_v2': {
            # subset_list: ['multi_lingual_recognition', 'natural_scene_recognition', 'complex_table_parsing']  # 可选,用于评估特定子集
        }
    },
    limit=10,  # 正式评估时请删除此行
)

run_task(task_cfg=task_cfg)