SnapSQL-Bench
收藏SnapSQL-Bench 数据集概述
数据集基本信息
- 数据集名称: SnapSQL-Bench
- 官方仓库地址: https://github.com/yshihao-ai/SnapSQLBench
- 数据集托管地址: https://huggingface.co/datasets/yshihao/SnapSQLBench
- 许可证: Apache 2.0
- 编程语言: Python 3.12
数据集目的与简介
SnapSQL-Bench 是一个全面的基准测试,旨在评估视觉文本到 SQL 系统。它旨在解决现实世界中大量结构化表格数据被困在截图、PDF 和照片等非交互式视觉格式中的“视觉隔离”问题,使数据无法进行自动化分析和即席查询。该基准测试通过系统性地评估对现实表格图像损坏的鲁棒性以及对任务相关视觉线索的推理能力来弥补现有基准的不足。
基准构建与组成
数据集包含两个互补的组成部分,总计包含 1,369 张图像上的 860 个复杂查询:
- 转换集: 改编自专家策划的文本到 SQL 基准测试。引入了现实世界的视觉噪声,同时忠实地保留了原始复杂的 SQL 推理模式,并模拟了受限的视口。
- 合成集: 通过 LLM 规划和人工标注从头构建,旨在明确测试模型是否能利用特定的视觉推理线索,包括:
- 语义高亮
- 分层布局
- 外围注释
评估范式
代码库支持三种不同的视觉文本到 SQL 评估范式:
- 端到端: 单个视觉语言模型直接从图像生成数据库模式、内容和最终的 SQL 查询。
- 流水线: 将视觉表格解析与 SQL 生成分离。
- VisualCueSQL: 明确地从表格图像中提取视觉观察结果,将其转换为纯文本证据,并整合此证据以指导下游 SQL 推理。
主要实验结果
在 SnapSQL-Bench 上进行的大量实验表明,当前的视觉语言模型在处理视觉隔离问题上存在困难,而提出的 VisualCueSQL 方法 consistently yields sizable improvements。实验结果以模式、视觉语言模型主干、文本到 SQL 模型为维度,展示了在简单、中等、困难难度及总体上的模式准确率、内容准确率和执行准确率。
仓库结构
SnapSQL/
├── main_end2end.py # 端到端范式的入口点
├── main_pipeline.py # 流水线范式的入口点
├── main_visualcue.py # VisualCueSQL 范式的入口点
├── models/ # 视觉语言模型和文本到 SQL 模型的封装
├── configs/ # 简单/中等/困难拆分的 YAML 配置文件
│ ├── e2e/
│ └── pipeline_and_visualcue/
├── utils/ # 数据集加载器、提示词、评估器、数据库构建器
安装与快速开始
-
克隆仓库并创建环境: bash git clone https://github.com/yshihao-ai/SnapSQLBench.git cd SnapSQL conda create -n SnapSQL python=3.12 conda activate SnapSQL pip install -r requirements.txt
-
运行评估:
- 端到端评估:
python main_end2end.py --config configs/e2e/e2e_hard.yaml - 流水线评估:
python main_pipeline.py --config configs/pipeline_and_visualcue/middle/pipeline_middle_codes.yaml - VisualCueSQL 评估:
python main_visualcue.py --config configs/pipeline_and_visualcue/hard/pipeline_hard_macsql.yaml
- 端到端评估:




