知识体系篇-数据标注与处理(06)文本标注方法:标注工具使用:Label Studio、Doccano、CVAT 实战指南
·
标注工具使用:Label Studio、Doccano、CVAT 实战指南
专栏:人工智能训练师三级备考全攻略
所属模块:卷三·知识体系 — 数据标注与处理
考试关联度:⭐⭐⭐⭐(高频考点,侧重工具选型和基本操作,约 5~8 题)
前言:工欲善其事,必先利其器
标注工具是人工智能训练师的"生产力工具"。选对工具、用好工具,可以让标注效率提升 3~5 倍。但工具种类繁多,如何选择和使用是一门学问。
本文重点讲解三款最主流的开源标注工具:Label Studio(通用多模态)、Doccano(文本专用)、CVAT(计算机视觉专用),以及工具选型的核心方法。
一、标注工具全景对比
1.1 主流工具一览
标注工具生态图:
┌──────────────────────────────────────────────────────────┐
│ 标注工具分类 │
├──────────────┬───────────────────────────────────────────┤
│ 通用多模态 │ Label Studio、Prodigy、Amazon SageMaker GT│
├──────────────┼───────────────────────────────────────────┤
│ 文本专用 │ Doccano、BRAT、WebAnno │
├──────────────┼───────────────────────────────────────────┤
│ 图像/视频 │ CVAT、LabelImg、LabelMe、VGG Annotator │
├──────────────┼───────────────────────────────────────────┤
│ 语音/音频 │ Praat、ELAN、Audacity(辅助)、WebAnno │
├──────────────┼───────────────────────────────────────────┤
│ 国产平台 │ 百炼数据标注、飞桨EasyDL、讯飞开放平台 │
└──────────────┴───────────────────────────────────────────┘
1.2 核心工具对比
| 工具 | 支持模态 | 部署方式 | 协作 | 学习成本 | 适合人群 |
|---|---|---|---|---|---|
| Label Studio | 文本/图像/音频/视频/多模态 | 本地/云端 | 多人 | 中 | 中大型项目,需要灵活配置 |
| Doccano | 文本(NER/分类/Seq2Seq) | 本地/云端 | 多人 | 低 | 纯文本标注,快速上手 |
| CVAT | 图像/视频(检测/分割) | 本地/云端 | 多人 | 中 | 图像视频标注专业场景 |
| LabelImg | 图像(目标检测) | 本地桌面 | 单人 | 很低 | 入门/小批量图像检测 |
| LabelMe | 图像(多边形分割) | 本地桌面 | 单人 | 低 | 图像分割小批量 |
| Praat | 语音(音素/韵律) | 本地桌面 | 单人 | 高 | 学术研究、语音学专业 |
二、Label Studio 实战指南
2.1 Label Studio 简介
Label Studio 核心特性:
┌──────────────────────────────────────────────────────────┐
│ │
│ 🏷️ Label Studio — 最受欢迎的开源标注平台 │
│ │
│ 核心优势: │
│ · 支持几乎所有数据类型(文本/图像/音频/视频/HTML) │
│ · 灵活的标签模板系统(JSON/XML 配置) │
│ · 内置 ML 预标注支持(连接 ML 后端) │
│ · 多人协作 + 审核工作流 │
│ · 丰富的导出格式(COCO/VOC/YOLO/CSV/JSON) │
│ │
│ 安装命令(pip): │
│ pip install label-studio │
│ label-studio start │
│ │
│ 默认访问地址:http://localhost:8080 │
│ │
└──────────────────────────────────────────────────────────┘
2.2 Label Studio 使用流程
Label Studio 标注项目标准流程(8步):
Step 1:创建项目
┌──────────────────────────────────────────────────────────┐
│ 登录 → 点击"Create Project" │
│ 填写:项目名称 + 描述(建议填写任务目标和标注规范摘要) │
└──────────────────────────────────────────────────────────┘
↓
Step 2:配置标注界面(Labeling Interface)
┌──────────────────────────────────────────────────────────┐
│ 选择模板 或 自定义 XML 配置 │
│ │
│ 常用模板: │
│ · Text Classification → 文本分类 │
│ · Named Entity Recognition → NER 标注 │
│ · Image Classification → 图像分类 │
│ · Object Detection → 目标检测(边界框) │
│ · Image Segmentation → 图像分割 │
│ · Audio Transcription → 音频转写 │
└──────────────────────────────────────────────────────────┘
↓
Step 3:导入数据
┌──────────────────────────────────────────────────────────┐
│ 支持多种导入方式: │
│ · 本地文件上传(CSV / JSON / 图片 / 音频) │
│ · URL 链接导入 │
│ · 云存储(AWS S3 / GCS / Azure Blob) │
│ · API 导入(批量导入) │
└──────────────────────────────────────────────────────────┘
↓
Step 4:邀请标注成员
┌──────────────────────────────────────────────────────────┐
│ 通过邮件邀请 或 在本地创建账号 │
│ 角色分配: │
│ · Admin(管理员):完全权限 │
│ · Manager(项目管理员):管理项目 │
│ · Annotator(标注员):只能标注分配给自己的任务 │
│ · Reviewer(审核员):复核标注结果 │
└──────────────────────────────────────────────────────────┘
↓
Step 5:分配任务
┌──────────────────────────────────────────────────────────┐
│ 手动分配 或 自动分配(按比例随机分配) │
│ 可设置每条数据需要几人标注(对齐标注/专家核验) │
└──────────────────────────────────────────────────────────┘
↓
Step 6:执行标注
┌──────────────────────────────────────────────────────────┐
│ 标注员登录 → 进入任务列表 → 逐条标注 │
│ 快捷键: │
│ · 1-9: 快速选择标签 │
│ · 空格: 下一条 │
│ · Ctrl+Z: 撤销 │
│ · Ctrl+S: 保存 │
└──────────────────────────────────────────────────────────┘
↓
Step 7:质量审核
┌──────────────────────────────────────────────────────────┐
│ Reviewer 登录 → 进入 Review 页面 → 逐条审核 │
│ · 通过 → 标记为已审核 │
│ · 拒绝 → 退回标注员修改 │
│ · 修改 → Reviewer 直接修改 │
└──────────────────────────────────────────────────────────┘
↓
Step 8:导出数据
┌──────────────────────────────────────────────────────────┐
│ Export → 选择格式 → 下载 │
│ 支持格式:JSON / CSV / COCO / VOC / YOLO / CoNLL │
└──────────────────────────────────────────────────────────┘
2.3 Label Studio XML 配置示例
<!-- 情感分类任务配置 -->
<View>
<Text name="text" value="$text"/>
<Choices name="sentiment" toName="text" choice="single">
<Choice value="正面" hotkey="1"/>
<Choice value="中性" hotkey="2"/>
<Choice value="负面" hotkey="3"/>
</Choices>
</View>
<!-- NER 实体识别任务配置 -->
<View>
<Labels name="label" toName="text">
<Label value="人名" background="blue"/>
<Label value="地名" background="green"/>
<Label value="机构" background="orange"/>
<Label value="时间" background="purple"/>
</Labels>
<Text name="text" value="$text"/>
</View>
<!-- 图像目标检测任务配置 -->
<View>
<Image name="image" value="$image"/>
<RectangleLabels name="label" toName="image">
<Label value="人" background="red"/>
<Label value="车" background="blue"/>
<Label value="自行车" background="green"/>
</RectangleLabels>
</View>
2.4 Label Studio 与 ML 后端集成(半自动标注)
# Label Studio ML 后端示例(连接预标注服务)
# 将此服务地址配置到 Label Studio 的 ML Backend 设置中
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route("/predict", methods=["POST"])
def predict():
"""Label Studio 调用此接口获取预标注结果"""
data = request.json
tasks = data.get("tasks", [])
predictions = []
for task in tasks:
text = task["data"].get("text", "")
# 调用你的模型进行预测(此处为示例逻辑)
# 实际中替换为真实的模型推理
if "好" in text or "棒" in text or "赞" in text:
label = "正面"
score = 0.9
elif "差" in text or "烂" in text or "坏" in text:
label = "负面"
score = 0.9
else:
label = "中性"
score = 0.7
predictions.append({
"id": task["id"],
"result": [
{
"from_name": "sentiment",
"to_name": "text",
"type": "choices",
"value": {"choices": [label]},
"score": score
}
]
})
return jsonify({"predictions": predictions})
if __name__ == "__main__":
app.run(port=9090)
三、Doccano 实战指南
3.1 Doccano 简介与适用场景
Doccano 核心特性:
┌──────────────────────────────────────────────────────────┐
│ │
│ 📝 Doccano — 最易上手的文本标注工具 │
│ │
│ 核心优势: │
│ · 界面极简,上手时间 < 30 分钟 │
│ · 专为文本标注优化(NER / 文本分类 / Seq2Seq) │
│ · Docker 部署简单 │
│ · 多语言支持(中文友好) │
│ │
│ 适合场景: │
│ ✓ 命名实体识别(NER)标注 │
│ ✓ 文本情感/意图分类 │
│ ✓ 文本摘要/机器翻译语料 │
│ ✗ 不适合图像/音频标注 │
│ ✗ 不适合需要复杂工作流的项目 │
│ │
│ Docker 安装: │
│ git clone https://github.com/doccano/doccano.git │
│ cd doccano && docker compose up │
└──────────────────────────────────────────────────────────┘
3.2 Doccano 三种项目类型
| 项目类型 | 适用任务 | 标注方式 |
|---|---|---|
| 文本分类(Text Classification) | 情感分析、意图识别、主题分类 | 选择类别标签 |
| 序列标注(Sequence Labeling) | NER、分词、词性标注 | 选中文字,拖动高亮,选标签 |
| Seq2Seq | 机器翻译、文本摘要、对话生成 | 输入原文,标注员填写对应输出 |
3.3 Doccano NER 标注操作
Doccano NER 标注操作步骤:
界面布局:
┌──────────────────────────────────────────────────────────┐
│ [← 上一条] [序号 23/500] [下一条 →] [保存 Ctrl+S] │
├──────────────────────────────────────────────────────────┤
│ │
│ 张明昨天从北京飞到了上海,入住了华尔道夫酒店 │
│ │
│ [人名] [地名] [机构] [时间] ← 标签按钮 │
│ │
└──────────────────────────────────────────────────────────┘
操作步骤:
1. 用鼠标选中要标注的文字(如"张明")
2. 选中后自动弹出标签菜单,或点击左侧标签按钮
3. 选择对应标签(如"人名")
4. 文字变色表示已标注
5. 点击保存,进入下一条
快捷键:
· 选中文字后按 1~9 数字键直接选对应标签
· Ctrl+S 保存并跳转下一条
· Delete 删除选中的标注
四、CVAT 实战指南
4.1 CVAT 简介
CVAT(Computer Vision Annotation Tool):
┌──────────────────────────────────────────────────────────┐
│ │
│ 🖼️ CVAT — 最专业的开源视觉标注工具 │
│ │
│ 核心优势: │
│ · 专为图像/视频标注打造 │
│ · 支持边界框/多边形/折线/关键点 │
│ · 视频标注支持目标跟踪(半自动) │
│ · 内置 AI 辅助标注(SAM 分割模型) │
│ · 支持3D点云标注 │
│ · 可部署为独立服务,支持团队协作 │
│ │
│ 适合场景: │
│ ✓ 大规模图像目标检测/分割 │
│ ✓ 视频中的目标跟踪标注 │
│ ✓ 自动驾驶、安防等专业场景 │
│ ✗ 不适合纯文本标注任务 │
└──────────────────────────────────────────────────────────┘
4.2 CVAT 标注操作要点
CVAT 核心操作:
工具栏(左侧):
┌─────────┐
│ ▭ 边界框 │ 矩形框标注(目标检测)
│ 🔷 多边形 │ 多边形标注(图像分割)
│ ── 折线 │ 折线标注(道路线/边缘)
│ · 关键点 │ 点标注(人体骨架)
│ 🪣 SAM分割 │ AI辅助一键分割(需配置)
└─────────┘
边界框标注步骤:
1. 选择"矩形框"工具
2. 在目标左上角按下鼠标
3. 拖拽到目标右下角释放
4. 在弹出框中选择类别标签
5. Ctrl+S 保存
多边形标注步骤:
1. 选择"多边形"工具
2. 逐点单击目标轮廓
3. 双击最后一点封闭多边形
4. 在弹出框中选择标签
5. 按 N 开始下一个目标
快捷键:
· N:新建目标(开始标注)
· F:完成/保存当前标注
· Esc:取消当前操作
· Ctrl+Z:撤销
· 空格:下一帧(视频)
· 滚轮:缩放图像
· 按住鼠标中键拖拽:平移视图
五、LabelImg 快速上手
5.1 LabelImg 简介
LabelImg — 最轻量的图像目标检测标注工具:
安装:pip install labelImg
启动:labelImg
┌──────────────────────────────────────────────────────────┐
│ 界面布局: │
│ ┌────┬───────────────────────────────┬────────────┐ │
│ │工具│ │ 标签列表 │ │
│ │栏 │ 图片显示区域 │ │ │
│ │ │ ┌──────────────────┐ │ ┌─────┐ │ │
│ │[▭] │ │ ████ cat │ │ │ cat │ │ │
│ │ │ │ ████ dog │ │ │ dog │ │ │
│ │ │ └──────────────────┘ │ └─────┘ │ │
│ └────┴───────────────────────────────┴────────────┘ │
│ │
│ 支持格式:PASCAL VOC(XML)和 YOLO(TXT) │
│ │
│ 核心快捷键: │
│ · W:创建新矩形框 │
│ · D:下一张图片 │
│ · A:上一张图片 │
│ · Del:删除选中的框 │
│ · Ctrl+S:保存 │
└──────────────────────────────────────────────────────────┘
六、标注工具选型指南
6.1 选型决策树
标注工具选型决策树:
开始
↓
是否需要多人协作?
├─否→ 是图像检测? → 是 → LabelImg(最轻量)
│ ↓否
│ 是图像分割? → 是 → LabelMe
│ ↓否
│ 是文本标注? → 是 → Doccano(本地单机)
└─是→ 主要是图像/视频?
├─是→ CVAT(专业视觉标注)
└─否→ 多模态/需要灵活配置?
├─是→ Label Studio(通用推荐)
└─否→ 纯文本? → Doccano(多人协作)
6.2 选型对比矩阵
| 需求维度 | Label Studio | Doccano | CVAT | LabelImg |
|---|---|---|---|---|
| 文本 NER | ✓✓ | ✓✓✓ | ✗ | ✗ |
| 文本分类 | ✓✓✓ | ✓✓✓ | ✗ | ✗ |
| 图像检测 | ✓✓ | ✗ | ✓✓✓ | ✓✓ |
| 图像分割 | ✓✓ | ✗ | ✓✓✓ | ✗ |
| 音频标注 | ✓✓✓ | ✗ | ✗ | ✗ |
| 视频标注 | ✓✓ | ✗ | ✓✓✓ | ✗ |
| 多人协作 | ✓✓✓ | ✓✓ | ✓✓✓ | ✗ |
| AI预标注 | ✓✓✓ | ✗ | ✓✓✓ | ✗ |
| 上手难度 | 中等 | 容易 | 中等 | 很容易 |
| 适合规模 | 中大型 | 小中型 | 中大型 | 小型 |
七、考试高频考点速记
| 序号 | 考点 | 关键内容 | 易错点 |
|---|---|---|---|
| 1 | Label Studio 适用场景 | 通用多模态,文本/图像/音频/视频全支持 | 不是只做图像的 |
| 2 | Doccano 适用场景 | 纯文本标注(NER/分类/Seq2Seq) | 不支持图像 |
| 3 | CVAT 适用场景 | 图像/视频专业标注,支持视频跟踪 | 不适合文本 |
| 4 | LabelImg 特点 | 最轻量,只支持图像检测,单机使用 | 只支持YOLO和VOC格式 |
| 5 | Label Studio 配置方式 | XML 配置界面,灵活定制标签体系 | 不是用 JSON 配置 |
| 6 | Label Studio 角色 | Admin/Manager/Annotator/Reviewer 四种角色 | Annotator只能标注分配给自己的 |
| 7 | 半自动标注集成 | Label Studio 可连接 ML 后端进行预标注 | 需要额外配置 ML 后端服务 |
| 8 | Doccano 序列标注 | 选中文字直接拖动高亮即可标注 | 操作比Label Studio更直观 |
| 9 | CVAT SAM 功能 | AI 辅助一键分割,大幅提升分割效率 | 需要额外配置才能使用 |
| 10 | 工具选型原则 | 按任务类型+团队规模+上手成本综合选择 | 没有万能工具,按需选择 |
本篇知识点思维导图
本文小结:
四大主流标注工具各有所长:Label Studio 通用全能,支持多模态,有 ML 预标注,适合中大型项目;Doccano 专注文本,界面极简,上手最快;CVAT 专攻图像视频,支持视频跟踪和 SAM 智能分割;LabelImg 最轻量,仅用于图像目标检测的本地单机场景。选工具的原则:按任务类型选,按团队规模选,不追求大而全。
下一篇:《数据清洗与预处理技术》——原始数据到可用训练数据的关键环节。
最后更新:2026年5月 | 专栏:人工智能训练师三级备考全攻略
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)