数据标注工具 Label-Studio

简介: 数据标注工具 Label-Studio

文档抽取任务Label Studio使用指南

数据标注工具 doccano

目录

  • 3. 注意 items["text"] = line["data"]["text"]

Label-Studio导出数据后可通过label_studio.py脚本轻松将数据转换为输入模型时需要的形式,实现无缝衔接。

1. 安装

以下标注示例用到的环境配置:

  • Python 3.8+
  • label-studio == 1.6.0
  • paddleocr >= 2.6.0.1

在终端(terminal)使用pip安装label-studio:

pip install label-studio==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完成后,运行以下命令行:

label-studio start

如报:sqlite3.OperationalError: no such function: JSON_VALID => https://www.cnblogs.com/vipsoft/p/17562196.html

在浏览器打开http://localhost:8080/,输入用户名和密码登录,开始使用label-studio进行标注。

用邮箱注册一个帐号

2. 文档抽取任务标注

2.1 项目创建

点击创建(Create)开始创建一个新的项目,填写项目名称、描述,然后选择Object Detection with Bounding Boxes

  • 填写项目名称、描述

  • 命名实体识别、关系抽取、事件抽取、实体/评价维度分类任务选择``Object Detection with Bounding Boxes`

  • 文档分类任务选择``Image Classification`

  • 添加标签(也可跳过后续在Setting/Labeling Interface中添加)

图中展示了Span实体类型标签的构建,其他类型标签的构建可参考2.3标签构建

2.2 数据上传

先从本地或HTTP链接上传图片,然后选择导入本项目。

2.3 标签构建

  • Span实体类型标签

  • Relation关系类型标签
    Relation XML模板:
<Relations>
    <Relation value="单位"/>
    <Relation value="数量"/>
    <Relation value="金额"/>
  </Relations>

  • 分类类别标签

2.4 任务标注

  • 实体抽取
  • 标注示例:

  • 该标注示例对应的schema为:
schema = ['开票日期', '名称', '纳税人识别号', '地址、电话', '开户行及账号', '金额', '税额', '价税合计', 'No', '税率']
  • 关系抽取
  • 进入标签


  • Step 1. 标注主体(Subject)及客体(Object)

  • Step 2. 关系连线,箭头方向由主体(Subject)指向客体(Object)


  • Step 3. 添加对应关系类型标签


  • Step 4. 完成标注

  • 该标注示例对应的schema为:
schema = {
    '名称及规格': [
        '金额',
        '单位',
        '数量'
    ]
}
  • 文档分类
  • 标注示例

  • 该标注示例对应的schema为:
schema = '文档类别[发票,报关单]'

2.5 数据导出

勾选已标注图片ID,选择导出的文件类型为JSON,导出数据:

2.6 数据转换

将导出的文件重命名为label_studio.json后,放入./document/data目录下,并将对应的标注图片放入./document/data/images目录下(图片的文件名需与上传到label studio时的命名一致)。通过label_studio.py脚本可转为UIE的数据格式。

  • 路径示例
./document/data/
├── images # 图片目录
│   ├── b0.jpg # 原始图片(文件名需与上传到label studio时的命名一致)
│   └── b1.jpg
└── label_studio.json # 从label studio导出的标注文件
  • 抽取式任务
python label_studio.py \
    --label_studio_file ./document/data/label_studio.json \
    --save_dir ./document/data \
    --splits 0.8 0.1 0.1\
    --task_type ext
  • 文档分类任务
python label_studio.py \
    --label_studio_file ./document/data/label_studio.json \
    --save_dir ./document/data \
    --splits 0.8 0.1 0.1 \
    --task_type cls \
    --prompt_prefix "文档类别" \
    --options "发票" "报关单"

2.7 更多配置

  • label_studio_file: 从label studio导出的数据标注文件。
  • save_dir: 训练数据的保存目录,默认存储在data目录下。
  • negative_ratio: 最大负例比例,该参数只对抽取类型任务有效,适当构造负例可提升模型效果。负例数量和实际的标签数量有关,最大负例数量 = negative_ratio * 正例数量。该参数只对训练集有效,默认为5。为了保证评估指标的准确性,验证集和测试集默认构造全负例。
  • splits: 划分数据集时训练集、验证集所占的比例。默认为[0.8, 0.1, 0.1]表示按照8:1:1的比例将数据划分为训练集、验证集和测试集。
  • task_type: 选择任务类型,可选有抽取和分类两种类型的任务。
  • options: 指定分类任务的类别标签,该参数只对分类类型任务有效。默认为["正向", "负向"]。
  • prompt_prefix: 声明分类任务的prompt前缀信息,该参数只对分类类型任务有效。默认为"情感倾向"。
  • is_shuffle: 是否对数据集进行随机打散,默认为True。
  • seed: 随机种子,默认为1000.
  • separator: 实体类别/评价维度与分类标签的分隔符,该参数只对实体/评价维度分类任务有效。默认为"##"。
  • schema_lang:选择schema的语言,将会应该训练数据prompt的构造方式,可选有chen。默认为ch
  • ocr_lang:选择OCR的语言,可选有chen。默认为ch
  • layout_analysis:是否使用PPStructure对文档进行布局分析,该参数只对文档类型标注任务有效。默认为False。

备注:

  • 默认情况下 label_studio.py 脚本会按照比例将数据划分为 train/dev/test 数据集
  • 每次执行 label_studio.py 脚本,将会覆盖已有的同名数据文件
  • 在模型训练阶段我们推荐构造一些负例以提升模型效果,在数据转换阶段我们内置了这一功能。可通过negative_ratio控制自动构造的负样本比例;负样本数量 = negative_ratio * 正样本数量。
  • 对于从label_studio导出的文件,默认文件中的每条数据都是经过人工正确标注的。

References

https://gitee.com/PaddlePaddle/PaddleNLP/blob/develop/applications/information_extraction/label_studio_doc.md

注意

我用的 NLP是 V2.5.0 、 label_studio v1.6.0 ,可能版本问题,运行 label_studio.py 时报

python paddlenlp\utils\tools.py items["text"] = line["data"]["text"]

解决方法:

在 Label_Studio 导出的 json 里,找到 data 块,加上 text ,不知道为啥导出来的没这个 text

目录
相关文章
|
机器学习/深度学习 数据处理 计算机视觉
LabelStudio环境搭建以及使用且解除上传文件限制
LabelStudio是开源的数据标注工具,支持多种类型如文本、图像、音频、视频的标注任务。它具有多种标注类型、可扩展性、团队协作和版本控制等功能,并可在本地、云端或Docker中部署。通过设置环境变量`DATA_UPLOAD_MAX_NUMBER_FILES`,可以解除上传文件数量限制。使用Docker安装时,可运行包含该变量的命令以启动容器,并通过http://localhost:8080访问。遇到文件数限制问题,可增大此变量值以解决。
4916 3
|
XML 存储 JSON
2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等
2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等
|
XML 人工智能 JSON
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
3564 0
告别手动标注时代 | SAM 助力 Label-Studio 形成 SOTA 级半自动标注工具
|
存储 JSON 数据挖掘
3.基于Label studio的训练数据标注指南:文本分类任务
3.基于Label studio的训练数据标注指南:文本分类任务
3.基于Label studio的训练数据标注指南:文本分类任务
|
XML 存储 数据处理
1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
|
并行计算 Linux 计算机视觉
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
还在手工标注数据集?快来试一试自动化多模型标注大模型-gui交互式标注(部署运行教程-高效生产力)
|
人工智能 数据可视化 数据处理
推荐2款免费开源的标注工具,支持大模型对话标注
【LabelLLM】一款开源免费的大模型对话标注平台,专为优化大型语言模型的数据标注过程设计。支持灵活配置与多模态数据(音频、图像、视频),具备全面任务管理和AI辅助标注功能,大幅提升标注效率与准确性。了解更多请前往https://github.com/opendatalab/LabelLLM 【LabelU】一款轻量级开源标注工具,支持图像、视频、音频的高效标注。特色功能包括多功能图像处理、视频和音频分析等,简易灵活,支持多种数据格式输出。了解更多请前往https://github.com/opendatalab/labelU
4820 11
|
机器学习/深度学习 缓存 人工智能
X-Anylabeling: 新一代自动标注工具
X-AnyLabeling:具备增强功能的高级自动标注解决方案
10385 0
X-Anylabeling: 新一代自动标注工具
|
JSON 人工智能 数据格式
AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
5509 2
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
6644 3
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)