Label Studio 表格数据标注模板:用 Table + Choices 校验表格内容
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
导读
表格是结构化数据最常见的载体之一,无论是商品价目表、业务配置项、日志记录还是 CSV 导出数据,都需要人工校验其内容是否准确。Label Studio 提供的Tabular Data 标注模板将Table对象标签与Choices控制标签组合,让标注界面以清晰的表格形式呈现键值对数据,并让标注员通过单选或多选对表格整体做出判断。读完本文,你将掌握该模板的完整配置语法、Table 标签对 JSON / CSV 数据的渲染规则,以及如何结合View、Header、Choices构造出可投入生产的表格校验标注方案。
关联文档原始出处:docs/source/templates/tabular_data.md,所属分类为 Structured Data Parsing(结构化数据解析)。
模板完整配置
该模板的核心配置非常精简,完整代码如下:
<View> <Header value="Table with {key: value} pairs"/> <Table name="table" value="$item"/> <Choices name="choice" toName="table"> <Choice value="Correct"/> <Choice value="Incorrect"/> </Choices> </View>整个配置由四个标签组成,各司其职:
| 标签 | 作用 |
|---|---|
View | 标注界面布局容器,所有标签必须包裹在View中 |
Header | 向标注员展示任务说明(这里是静态文本“Table with {key: value} pairs”) |
Table | 对象标签,将任务数据中的 JSON / CSV 数据渲染为表格 |
Choices | 控制标签,对表格内容进行分类判断(Correct / Incorrect) |
在 Label Studio 中新建项目时,将这段配置粘贴到Labeling Setup的 Code 视图中即可生效。对应任务的data字段需要包含item键,例如:
{ "data": { "item": { "Tuna": "12,35", "Vegetarian": "8,53", "Chicken": "10,66", "Spicy": "11,99" } } }逐标签拆解:布局、说明、展示与标注控制
View:一切配置的容器
所有标注配置都必须被 View 标签包裹,它相当于 HTML 中的div,负责配置块的布局与显隐控制。其核心参数包括:
| 参数 | 类型 | 说明 |
|---|---|---|
display | block|inline | 块级或行内显示方式 |
style | string | 内联 CSS 样式字符串,例如display: flex |
className | string | 配合Style标签使用的 CSS 类名 |
idAttr | string | 供 CSS 使用的唯一 ID |
visibleWhen | region-selected|choice-selected|no-region-selected|choice-unselected | 条件显隐,常配合whenTagName、whenLabelValue、whenChoiceValue使用 |
在模板中View仅作为外层容器,但你可以利用style参数把它扩展为左右分栏(表格在左、选项在右)的双栏布局:
<View style="display: flex;"> <View style="flex: 60%"> <Table name="table" value="$item"/> </View> <View style="flex: 40%; margin-left: 1em"> <Choices name="choice" toName="table"> <Choice value="Correct"/> <Choice value="Incorrect"/> </Choices> </View> </View>Header:给标注员的任务说明
Header 标签用于在标注界面顶部显示标题或操作指引,value既可以是静态文本,也可以是数据字段名(如value="$item"会动态显示字段内容)。其参数如下:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
value | string | — | 标题文本,可为静态文字或数据字段名 |
size | number | 4 | 标题级别(类似<h1>~<h6>),控制字号 |
style | string | — | 标题的 CSS 样式 |
underline | boolean | false | 是否显示下划线 |
模板中的<Header value="Table with {key: value} pairs"/>属于静态文本形式,它告诉标注员“这是一张键值对表格”,紧接着的{key: value}字样是对数据形态的直观提示。
Table:把 JSON / CSV 渲染成表格
Table 是一个对象标签,负责将任务数据以表格形式呈现。它的参数非常简单:
| 参数 | 类型 | 说明 |
|---|---|---|
value | string | 数据字段名,字段值为 JSON 类型(对象或对象数组) |
valueType | string | 定义表格的数据类型,默认json,可扩展为csv |
value支持$item这样的数据绑定写法,valueType则用于声明数据格式。从源码看,Table 标签内部维护了valuetype(默认"json")状态,并通过parseTypeAndOption解析类型与附加选项(Table.jsx)。
Table 标签对 JSON 数据的三种渲染规则(源码中dataSource与columns两个计算属性的实现,见 Table.jsx):
- JSON 对象(键值对):渲染为两列
Name/Value,其中键按字典序(不区分大小写)排序。模板任务中$item是对象,因此最终效果即为{key: value}两列表格。 - JSON 对象数组:每个对象作为一行,列头由所有行的键的并集推导得出(
columns中通过Set收集全部键生成{title, dataIndex}),适合展示多行结构化记录。 - JSON 原始值数组:以数组下标作为
type(行号)、元素值作为value的键值对形式展示;元素为对象时会被JSON.stringify序列化。
CSV 数据支持:valueType可以声明为csv,甚至支持csv|url|separator=,这种带选项的写法——url表示value指向一个远程 CSV 文件地址,separator自定义分隔符。源码中通过Papa.parse解析 CSV,header选项决定是否将首行作为表头(Table.jsx),headless选项可关闭表头模式。仓库自带的 CSV 示例配置为:
<View> <Table name="csv-table" value="$text" valuetype="csv|url|separator=," /> <Header>Choose ingredients</Header> <Choices name="sub" toName="csv-table"> <Choice value="Tuna" /> <Choice value="Vegetables" /> <Choice value="Chicken" /> <Choice value="Spicy" /> </Choices> </View>完整示例代码与配套任务数据可在 web/libs/editor/src/examples/table 和 web/libs/editor/src/examples/table_csv 中查看。此外,table.cy.ts 集成测试验证了“键值对按 key 排序渲染”“对象数组自动推导列头”等行为,可以作为你配置表格数据格式时的行为参考。
Choices:对表格内容做出标注判断
Choices 是控制标签,以单选按钮或复选框的形式让标注员选择答案,适用于单标签与多标签分类场景。模板用它来判断表格内容是否准确:
<Choices name="choice" toName="table"> <Choice value="Correct"/> <Choice value="Incorrect"/> </Choices>其中name是选项组的名称,toName指向被标注的对象标签名(这里对应table)。参数说明如下:
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
name | string | — | 选项组名称(必填) |
toName | string | — | 要标注的数据对象标签名(必填) |
choice | single|single-radio|multiple | single | 单选或复选模式 |
showInline | boolean | false | 同一行内水平排列选项 |
required | boolean | false | 是否强制至少选择一个答案 |
requiredMessage | string | — | 校验失败时的提示信息 |
visibleWhen | region-selected|no-region-selected|choice-selected|choice-unselected | — | 条件显隐,可配合when*参数进一步收窄 |
whenTagName/whenLabelValue/whenChoiceValue | string | — | 配合visibleWhen按标签名、标签值、选项值收窄可见性 |
perRegion | boolean | — | 按选中区域而非整个任务作答 |
perItem | boolean | — | 按对象内的具体条目作答 |
value | string | — | 从任务数据动态加载选项列表 |
allowNested | boolean | — | 允许动态选项中的children字段实现嵌套选项 |
layout | select|inline|vertical | vertical | 下拉框、单行或垂直堆叠布局 |
randomize | boolean | false | 每次打开任务时随机打乱选项顺序,减少位置偏差;序列化结果仍使用配置的value/alias |
动态选项:Choices的value参数可以从任务数据中加载选项列表,任务数据需为对象数组,每个元素包含value(序列化结果使用该值)与可选的html(富文本展示,优先级高于value):
{ "data": { "variants": [ { "value": "Correct", "html": "<b>内容正确</b>" }, { "value": "Incorrect", "html": "<i>内容有误</i>" } ] } }toName的取值同样支持table之外的其他对象标签(如Text、Audio),说明Choices可以搭配任意数据类型使用。
扩展应用:从“整表判断”到“逐行标注”
基础模板是对整张表格做一次 Correct / Incorrect 判断。结合上述参数,可以衍生出更精细的标注方案:
1. 多级判断——用choice="multiple"同时标记多种问题类型:
<Choices name="issue" toName="table" choice="multiple"> <Choice value="价格错误"/> <Choice value="名称拼写错误"/> <Choice value="字段缺失"/> <Choice value="无问题"/> </Choices>2. 条件追问——仅当标注员选择“Incorrect”时,才显示原因填写区域(利用View的visibleWhen与whenChoiceValue):
<View> <Table name="table" value="$item"/> <Choices name="choice" toName="table"> <Choice value="Correct"/> <Choice value="Incorrect"/> </Choices> <View visibleWhen="choice-selected" whenTagName="choice" whenChoiceValue="Incorrect"> <Header value="请说明原因"/> <TextArea name="reason" toName="table"/> </View> </View>3. 强制作答——通过required="true"保证每条任务都得到标注结果,配合requiredMessage提示未作答的标注员。
导出与数据流
标注完成后,标注结果以 Label Studio 标准格式存储于annotations中。以本模板为例,Choices的序列化结果形如:
{ "result": [ { "id": "abc123", "type": "choices", "value": { "choices": ["Correct"] }, "to_name": "table", "from_name": "choice" } ] }该结果可与任务data中的原始表格字段合并,作为下游机器学习模型的训练样本(例如训练一个判断表格数据质量的分类器),或直接通过 Label Studio 的导出功能输出为 JSON、CSV 等格式。值得一提的是,randomize参数只影响标注界面的展示顺序,序列化结果始终使用<Choice>中配置的value/alias,保证导出数据的一致性(见 docs/source/includes/tags/choices.md)。
小结
Tabular Data 模板是 Label Studio 处理结构化数据校验的典型起点:Table负责将 JSON 键值对、对象数组乃至远程 CSV 数据渲染为直观表格,Choices提供单选、多选、条件显隐、动态选项等丰富的判断能力,Header与View则完成说明与布局。通过组合这些标签的参数,你可以在不写任何前端代码的情况下,搭建从“整表正确性判断”到“逐行问题标注”的完整数据质量标注流程。
【免费下载链接】label-studioLabel Studio is a multi-type data labeling and annotation tool with standardized output format项目地址: https://gitcode.com/GitHub_Trending/la/label-studio
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考