前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等

2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等

原创
作者头像
汀丶人工智能
发布于 2023-03-04 05:18:46
发布于 2023-03-04 05:18:46
1.7K0
举报
文章被收录于专栏:NLP/KGNLP/KG

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

1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等

3.基于Label studio的训练数据标注指南:文本分类任务

4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取

目录

1. 安装

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

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

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

代码语言:shell
AI代码解释
复制
pip install label-studio==1.7.1

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

代码语言:shell
AI代码解释
复制
label-studio start

在浏览器打开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模板:

代码语言:html
AI代码解释
复制
  <Relations>
    <Relation value="单位"/>
    <Relation value="数量"/>
    <Relation value="金额"/>
  </Relations>
  • 分类类别标签
2.4 任务标注
  • 实体抽取
  • 标注示例:
  • 该标注示例对应的schema为:
代码语言:txt
AI代码解释
复制
schema = ['开票日期', '名称', '纳税人识别号', '地址、电话', '开户行及账号', '金   额', '税额', '价税合计', 'No', '税率']
  • 关系抽取
  • Step 1. 标注主体(Subject)及客体(Object)
  • Step 2. 关系连线,箭头方向由主体(Subject)指向客体(Object)
  • Step 3. 添加对应关系类型标签
  • Step 4. 完成标注
  • 该标注示例对应的schema为:
代码语言:txt
AI代码解释
复制
schema = {
    '名称及规格': [
        '金额',
        '单位',
        '数量'
    ]
}
  • 文档分类
  • 标注示例
  • 该标注示例对应的schema为:
代码语言:text
AI代码解释
复制
schema = '文档类别[发票,报关单]'
2.5 数据导出

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

2.6 数据转换

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

  • 路径示例
代码语言:shell
AI代码解释
复制
./document/data/
├── images # 图片目录
│   ├── b0.jpg # 原始图片(文件名需与上传到label studio时的命名一致)
│   └── b1.jpg
└── label_studio.json # 从label studio导出的标注文件
  • 抽取式任务
代码语言:shell
AI代码解释
复制
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
  • 文档分类任务
代码语言:shell
AI代码解释
复制
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UNPv1第二章:传输层
本章的焦点是传输层,包括TCP和UDP。 绝大多数客户/服务器网络应用使用TCP或UDP。 UDP是一个简单的、不可靠的数据报协议。而TCP是一个复杂、可靠的字节流协议。
提莫队长
2019/02/21
5640
传输层:TCP和UDP
平时我们使用的tcpdump、ping、traceroute属于TCP/IP协议族,虽然叫TCP/IP协议族,但是这个协议族还涉及到许多其他成员。下图是其概貌。
jackieluo
2018/08/24
1.3K0
传输层:TCP和UDP
带你应付TCP/UDP高频面试问题
从6月下旬开始,上家公司告知要解散北京的除5G以外的研发团队。有点措手不及,很多知识点都没有来得及准备,而在面试中经常被问到TCP和UDP的一些细节问题。于是就有了本篇文章的总结。是参考和复制了很多前辈的总结。希望准备跳到互联网公司的程序员都能顺利通过面试。
dpdk-vpp源码解读
2023/03/07
5380
带你应付TCP/UDP高频面试问题
面试必考 | TCP 协议(第二弹)
在软开岗的面试中,TCP的可靠性和TIME_WAIT状态是面试官进一步提问的不二选择!
用户3946442
2022/04/11
2510
面试必考 | TCP 协议(第二弹)
面试必考 | TCP 协议(第一弹)
由于篇幅原因,TCP相关知识点的讲解将会分为三部分来完成,第一弹将会讲较为基础的也是最常问的几点——TCP连接的建立和终止。
用户3946442
2022/04/11
2440
面试必考 | TCP 协议(第一弹)
浅析TCP协议中的疑难杂症
前言 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼点。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。那么从哪说起呢?当然是从三次握手和四次挥手说起啦,可能大家都知道TCP是三次交互完成连接的建立,四次交互来断开一个连接,那为什么是三次握手和四次挥手呢?反过来不行吗? 疑症 1 :TCP 的三次握手、四次挥手 下面两图大家再熟悉不过了,TCP的三次握手和四次挥手见下面左边的”TCP建立连接”、”TCP数据传送
用户1263954
2018/06/22
1.7K0
彻底搞定:手绘TCP状态机
来源:https://github.com/wangcy6/weekly 每日一题 第二题
早起的鸟儿有虫吃
2019/09/24
1.5K0
彻底搞定:手绘TCP状态机
TCP/IP详解 卷1 第十八章 TCP的建立与终止
第十八章 TCP的建立与终止 tcpdump Tcpdump可以将网络中传送的数据报完截获下来进行分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉
xcywt
2018/03/28
8400
TCP/IP详解 卷1 第十八章 TCP的建立与终止
网络原理(三)——一文了解传输层UDP/TCP协议
在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看);
海盗船长
2020/08/27
1K0
这次,终于学会了 TCP
这是一篇详细介绍 TCP 各种特点的文章,内容主要包括 TCP 三次握手和四次挥手细节问题、TCP 状态之间的转换、TCP 超时和重传、关于 TCP 包失序和重复问题、TCP 的数据流与窗口管理、TCP 的拥塞控制,思维导图如下。
cxuan
2021/07/12
8260
这次,终于学会了 TCP
传输层:TCP协议
TCP全称为 "传输控制协议(Transmission Control Protocol")。人如其名, 要对数据的传输进行一个详细的控制。
二肥是只大懒蓝猫
2023/10/13
5410
传输层:TCP协议
Java程序员必须掌握的网站知识 —— TCP
本文主要通过整理网络上的资料,整理出的关于TCP方面的简单理论知识。作为Java程序员虽然更多的时候我们都是直接调用现成的API,但是对网络知识有个宏观的概念能方便我们更好的编写代码。当然,文中涉及的
tomas家的小拨浪鼓
2018/06/27
1.1K0
测试需知的TCP3次握手、4次挥手及10道经典面试题
(1)TCP 是一种面向连接的单播协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务器的内存里保存的一份关于对方的信息,如 IP 地址、端口号等。因此TCP是一种可靠的的运输服务,但是正因为这样,不可避免的增加了许多的开销,比如确认,流量控制等,对应的应用层的协议主要有 SMTP,TELNET,HTTP,FTP 等。
可可的测试小栈
2019/10/17
8940
【编程者必会系列】:TCP/IP之传输层
计算机网络是计算机基础知识的重点,不管你是C++还是JAVA,安卓还是IOS,都必须要会的基础知识。今天学习的就是TCP/IP的传输层知识点总结,很多知识点将来面试中都会问到,值得学习!
张拭心 shixinzhang
2022/11/30
3670
TCP/IP(五)传输层之细说TCP的三次握手和四次挥手
前言   这一篇我将介绍的是大家面试经常被会问到的,三次握手四次挥手的过程。以前我听到这个是什么意思呀?听的我一脸蒙逼,但是学习之后就原来就那么回事! 一、运输层概述 1.1、运输层简介   这一层的功能也挺简单的,运输层提供应用层提供端到端通信服务,通俗的讲,两个主机通讯,也就是应用层上的进程之间的通信,也就是转换为进程和进程之间的通信了,我们之前学到网络层,   IP协议能将分组准确的发送到目的主机,但是停留在网络层,并不知道要怎么交给我们的主机应用进程,通过前面的学习,我们学习有mac地址,通过mac
用户1195962
2018/01/18
1.2K0
TCP/IP(五)传输层之细说TCP的三次握手和四次挥手
【Linux】: 传输层协议 TCP
🔥 之前在这篇文章 传输层协议 UDP 中已经说过关于传输层的部分内容,现在我们来了解一下传输层 TCP 的内容吧
IsLand1314
2025/02/20
2660
【Linux】: 传输层协议 TCP
TCP/IP协议
seq是序列号,这是为了连接以后传送数据用的,ack是对收到的数据包的确认,值是等待接收的数据包的序列号。
玖柒的小窝
2021/12/15
5630
TCP/IP协议
TCP协议详解
小到基于应用层做网络开发,大到生活中无处不在的网络。我们在享受这个便利的时候,没有人会关心它如此牢固的底层基石是如何搭建的。而这些基石中很重要的一环就是tcp协议。翻看一下“三次握手”和“四次挥手”,本以为这就是tcp了,其实不然。它仅仅解决了连接和关闭的问题,传输的问题才是tcp协议更重要,更难,更复杂的问题。回头看tcp协议的原理,会发现它为了承诺上层数据传输的“可靠”,不知要应对多少网络中复杂多变的情况。简单直白列举一下:
kinnylee
2020/10/15
1K0
TCP协议详解
Tcp是什么?_跟你说完了
2、TCP连接的建立与终止(主要讲解了TCP的三次握手与四次挥手,并讲述了TCP连接的状态变迁,面试常问)
全栈程序员站长
2022/10/04
1.1K0
Tcp是什么?_跟你说完了
Time Wait的作用、原因、影响和如何避免
TIME_WAIT状态存在的理由: 1)可靠地实现TCP全双工连接的终止 在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN, 因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。 因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态。
全栈程序员站长
2022/09/06
2.5K1
Time Wait的作用、原因、影响和如何避免
相关推荐
UNPv1第二章:传输层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档