当前位置: 首页 > news >正文

使用label-studio对OCR数据进行预标注

导读

label-studio作为一款数据标注工具相信大家都不陌生,对于需要进行web数据标注协同来说应该是必备工具了,标注的数据类型很全涉及AI的各个任务(图像、语音、NLP、视频等),还支持自定义涉及模版。

然而,我们在标注数据的过程中,通常为了提高标注人员的工作效率,都会进行预标注。所谓的预标注就是给标注人员提供一个先验的标注结果,在使用label-studio进行预标注的时候有两种方法:

  1. 导入一个带预标注信息的json文件
  2. 使用label-studio-backend提供一个模型服务,进行在线预标注,如果模型的处理速度较慢,建议用第一种

这里我们介绍的也是使用第一种的预标注

新建OCR标注任务

1. 创建任务

在这里插入图片描述

2. 填写任务信息

  • ProJect Name:项目名称
  • Description:项目的描述
    在这里插入图片描述

3. 选择OCR任务

在这里插入图片描述

4. 通过直接使用code来设置标注任务

<View><Image name="image" value="$image_url"/><Labels name="label" toName="image"><Label value="Text" background="green"/><Label value="hard" background="#f20202"/></Labels><Rectangle name="bbox" toName="image" strokeWidth="3"/><Polygon name="poly" toName="image" strokeWidth="3"/><TextArea name="transcription" toName="image" editable="true" perRegion="true" required="true" maxSubmissions="1" rows="5" placeholder="Recognized Text" displayMode="region-list"/>
</View>

在这里插入图片描述

设置图片访问方式

因为在进行OCR数据标注的时候,我们需要去访问图片,而label studio针对图片的访问方式提供了两种方法,第一种就是使用label studio自带的Cloud Storage,第二种就是通过图片链接去访问,相对来说第二种方式会更加的灵活

1. 通过Cloud Storage设置图片数据

使用这种方式添加数据的时候,需要在启动label studio的时候添加两个环境变量

export LABEL_STUDIO_LOCAL_FILES_SERVING_ENABLED=true
export LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT=/datasets/ocr/datasets

这里的LABEL_STUDIO_LOCAL_FILES_DOCUMENT_ROOT表示添加的数据必须要放在这个路径的下面,否则无法加载数据

点击项目–> Settings—> Cloud Strorage–> Source Cloud Stroage —> Add Source Stroage,然后添加一下图片存放的目录即可,如果增加了新的图片到目录下,点一下Sync Storage就会自动更新同步,使用这种方式的弊端也非常的明显就是数据需要和label studio放在同一台服务器上
在这里插入图片描述

2. 使用文件服务器

关于文件服务器大家可以使用python自带的http服务,或者是nginx,对于图片这两者都可以,如果是标注的视频最好使用nginx进行替代,不然再标注的时候无法快进

  • python自带的http服务
    使用Python自带的文件服务非常的方便,一行命令即可。执行完成之后就会将该目录下的文件映射到http服务上,通过http://127.0.0.1:端口号进行访问
python -m http.server 端口号
  • nginx搭建文件服务器

Ubuntu安装nginx,sudo apt-get install nginx,CentOS安装nginx,sudo yum install nginx,配置文件如下

#user  nobody;
worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;
events {worker_connections  1024;
}
http {include       mime.types;default_type  application/octet-stream;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  localhost;location / {root  /datasets/ocr;#需要映射的数据存放目录autoindex on;}access_log  /logs/nginx/access/80-access.log;error_log  /logs/nginx/error/80-error.log;}
}

启动nginx,sudo nginx即可,就可以通过http://10.0.7.84访问文件

OCR预标注json文件的制作

1. 文本框box的数值转换

  • x:文本框左上角点的x值
  • y:文本框左上角点的y值
  • width:文本框的宽
  • height:文本框的高
  • rotation:文本矩形框的旋转角度

注意:label sutdio支持的文本框位置信息和我们预测的box的格式有区别,具体的转换方法如下

box = ocr_info["box"]
box_width = math.sqrt((box[0][0] - box[1][0]) ** 2 + (box[0][1] - box[1][1]) ** 2)
box_width = round(box_width / image_width * 100,2)
box_height = math.sqrt((box[0][0] - box[3][0]) ** 2 + (box[0][1] - box[3][1]) ** 2)
box_height = round(box_height / image_height * 100,2)
if box[1][0] != box[0][0]:rotation = round(np.arctan((box[1][1] - box[0][1]) / (box[1][0] - box[0][0])) / np.pi * 180,2)if rotation < 0:rotation += 360
else:rotation = 0
x = round(box[0][0] / image_width * 100,2)
y = round(box[0][1] / image_height * 100,2)

2. label studio支持的数据格式

下面展示了一个文本框的json格式,如果有多张图片按照下面的格式进行添加即可

[{"predictions": [{"result": [{"value": {"labels": ["Text"],"x": 36.78,"y": 66.83,"width": 26.67,"height": 2.5,"rotation": 0.0},"id": "490b7582","from_name": "label","to_name": "image","type": "labels","origin": "manual"}],"model_version": "PPOCR"}],"data": {"image_url": "http://102.20.27.81:8000/images/65e6999f0000000001028c02.jpg"}
}]

预标注的json数据导入

1. 点击标注任务然后再点击import

在这里插入图片描述

2. 上传json文件,点击Upload Files

在这里插入图片描述

相关文章:

使用label-studio对OCR数据进行预标注

导读 label-studio作为一款数据标注工具相信大家都不陌生&#xff0c;对于需要进行web数据标注协同来说应该是必备工具了&#xff0c;标注的数据类型很全涉及AI的各个任务(图像、语音、NLP、视频等)&#xff0c;还支持自定义涉及模版。 然而&#xff0c;我们在标注数据的过程…...

嵌入式linux sqlite3读写demo

以下是一个简单的C语言程序&#xff0c;使用SQLite数据库进行读写操作的示例。请确保您已经安装了SQLite3库。 #include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback(void *NotUsed, int argc, char **argv, char **azColNam…...

vue实现搜索文章关键字,滑到指定位置并且高亮

1、输入搜索条件&#xff0c;点击搜索按钮 2、滑到定位到指定的搜索条件。 <template><div><div class"search_form"><el-inputv-model"searchVal"placeholder"请输入关键字查询"clearablesize"small"style&quo…...

Stable Diffusion与AI艺术:探索人工智能的创造力

引言 随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;AI艺术逐渐走进了公众视野。尤其是近年来&#xff0c;Stable Diffusion等技术的出现&#xff0c;显著提升了AI在艺术创作领域的表现力和创造力。这篇文章将深入探讨Stable Diffusion技术的工作原理、应…...

华为HCIP Datacom H12-821 卷26

1.单选题 在VRRP中&#xff0c;同一备份组的设备在进行VRRP报文认证时&#xff0c;以下哪一参数不会影响Master设备和Backup设备认证协商结果 A、认证字 B、优先级 C、认证方式 D、VRRP版本 正确答案&#xff1a; B 解析&#xff1a; 优先级只会影响谁是主谁是备&…...

golang 获取系统的主机 CPU 内存 磁盘等信息

golang 获取系统的主机 CPU 内存 磁盘等信息 要求 需要go1.18或更高版本 官方地址&#xff1a;https://github.com/shirou/gopsutil 使用 #下载包 go get github.com/shirou/gopsutil/v3/cpu go get github.com/shirou/gopsutil/v3/disk go get github.com/shirou/gopsuti…...

Infinitar链游新发展新机遇

区块链游戏市场在近年来经历了显著增长&#xff0c;吸引了大量的投资和关注。随着加密货币和NFT&#xff08;非同质化代币&#xff09;概念的普及&#xff0c;越来越多的投资者、游戏开发者和看到了区块链技术在游戏领域的应用潜力&#xff0c;纷纷涌入市场。区块链游戏的用户量…...

Figma 被爆出它剽窃了苹果的设计后撤下了AI工具Make Designs

Figma是一款流行的界面设计工具&#xff0c;最近它推出了一个名为Make Designs的新功能&#xff0c;这个功能利用人工智能帮助用户快速设计应用程序界面。但是&#xff0c;这个工具生成的设计竟然和苹果公司的iOS天气应用非常相似&#xff0c;这让外界怀疑Figma是否剽窃了苹果的…...

ERROR | Web server failed to start. Port 8080 was already in use.

错误提示&#xff1a; *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 8080 was already in use.Action:Identify and stop the process thats listening on port 8080 or configure thi…...

C++ 类和对象 构造函数

一 类的6个默认成员函数&#xff1a; 如果一个类中什么成员都没有&#xff0c;简称为空类。 例&#xff1a; #include <iostream> class Empty {// 空类&#xff0c;什么成员都没有 }; 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何类在什么都不写时&a…...

纯javascript实现图片批量压缩打包zip下载后端ThinkPHP多国语言切换国际站

最近在做一个多国语言的工具站&#xff0c;需要实现多国语言切换&#xff0c;说到多国语言站&#xff0c;肯定是有2种方式&#xff0c;第一是子域名&#xff0c;第二就是子目录。根据自己的需要来确定。 后台配置如下&#xff1a; 前台显示&#xff1a; 前端纯javascript实现…...

使用ChatGPT写论文,只需四步突破论文写作瓶颈!

欢迎关注&#xff0c;为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流 地表最强大的高级学术AI专业版已经开放&#xff0c;拥有全球领先的GPT学术科研应用&#xff0c;有兴趣的朋友可…...

神领物流项目第一天

文章目录 聚焦快递领域首先第一个是验证码模块流程登录接口权限管家 聚焦快递领域 首先第一个是验证码模块流程 首先生成验证码的流程 可以使用工具类去生成验证码 LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(160, 60, 4, 26);// 获取值然后存入redis中 strin…...

[作业]10 枚举-排列类

作业&#xff1a; 已做&#xff1a; #include <iostream> using namespace std; int n; int a[100]; void func(int ,int); int main(){cin>>n;func(0,n);return 0; } void func(int k,int m){if(k>m-1){for(int i0;i<m;i){cout<<a[i];}cout<<en…...

vue2(vue-cli3x[vue.config.js])使用cesium新版(1.117.0)配置过程

看来很多解决方法都没有办法&#xff0c;最后终于。呜呜呜呜 这里我用的是vue-cli去搭建的项目的vue2 项目&#xff0c;其实不建议用vue2搭配cesium。因为目前cesium停止了对vue2的版本更新&#xff0c;现在默认安装都是vue3版本&#xff0c;因此需要控制版本&#xff0c;否则…...

【深度学习】常用命令行指令汇总

这些指令对于管理深度学习环境、监控资源使用、调试程序等方面 查看显卡使用情况 要实时监控NVIDIA显卡的状态,可以使用命令: nvidia-smi -l 1这条命令会每秒刷新一次显卡的使用情况,包括GPU利用率、显存使用情况等。 查看当前Python环境 查看当前使用的Python环境,可…...

谷粒商城学习-11-docker安装redis

文章目录 一&#xff0c;拉取Redis镜像1&#xff0c;搜索Redis的Docker镜像2&#xff0c;拉取Redis镜像3&#xff0c;查看已经拉取的镜像 二&#xff0c;创建、启动Redis容器1&#xff0c;创建redis配置文件2&#xff0c;创建及运行Redis容器3&#xff0c;使用docker ps查看运行…...

C++:类继承是什么,怎么继承

一、类继承是什么 首先了解什么是基类&#xff0c;什么是派生类 在面向对象编程中&#xff0c;基类&#xff08;Base Class 或 Superclass&#xff09;是一个类的模板&#xff0c;它定义了一些通用的属性和行为。子类&#xff08;Derived Class 或 Inheritance&#xff09;可…...

期权学习必看圣书:《3小时快学期权》要在哪里看?

今天带你了解期权学习必看圣书&#xff1a;《3小时快学期权》要在哪里看&#xff1f;《3小时快学期权》是一本关于股票期权基础知识的书籍。 它旨在通过简明、易懂的语言和实用的案例&#xff0c;让读者在短时间内掌握股票期权的基本概念、操作方法和投资策略。通过这本书&…...

Keepalived 双机热备

1. Keepalived 双机热备 keepalived主要用来提供故障切换&#xff08;failover&#xff09;和健康检查&#xff08;Health Checking&#xff09;。 1.2 Keepalived 热备方式 Keepalived 采用VRRP &#xff08;Virtual Router Redundancy Protocol&#xff0c;虚拟路由冗…...

诚信标签工厂端解决方案 适配俄标 CRPT 体系一体化技术方案

俄罗斯诚实标签依托 CRPT 体系执行强制管控&#xff0c;各类出口货品必须完成 Data Matrix 编码采集、格式转换、多层包装数据绑定&#xff0c;数据合规后方可通关流通。美妆食品、日化建材、玩具五金等品类包装形态差异较大&#xff0c;人工采集方式普遍存在识别精度不足、批量…...

雪球网md5__1038参数逆向解析与Node.js复现

1. 这不是“破解”&#xff0c;而是对前端加密逻辑的常规逆向还原你打开雪球网任意一只股票详情页&#xff0c;F12 打开开发者工具&#xff0c;切到 Network 面板&#xff0c;刷新页面——很快就能在 XHR 请求里捕获到类似这样的接口&#xff1a;https://xueqiu.com/stock/cube…...

AI学习 - 大模型基础入门

AI学习 - 大模型基础入门 从零开始&#xff1a;Ollama 安装 → 本地模型运行 → Python 代码接入 → 理解核心概念 摘要 本文记录了在 Windows 上使用 Ollama 部署本地大模型、并通过 Python 代码接入调用的完整过程。内容涵盖&#xff1a;Ollama 安装与模型拉取、大模型基础概…...

从RD、CS到WK:一文讲透SAR主流成像算法的演进与选型实战

从RD、CS到WK&#xff1a;SAR成像算法选型实战指南 当无人机掠过灾区上空&#xff0c;或卫星扫描地球表面时&#xff0c;合成孔径雷达&#xff08;SAR&#xff09;正通过电磁波穿透云层和黑暗&#xff0c;将地面信息转化为高分辨率图像。而决定图像质量的关键&#xff0c;在于工…...

如何在浏览器中一键解密所有加密音乐文件:Unlock-Music完全指南

如何在浏览器中一键解密所有加密音乐文件&#xff1a;Unlock-Music完全指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库&#xff1a; 1. https://github.com/unlock-music/unlock-music &#xff1b;2. https://git.unlock-music.dev/um/web 项目地…...

输电线路在线监测系统|架空线路安全运行的“第一道防线“!

输电线路微气象监测站是专为高压输电线路、电网廊道、杆塔运维量身打造的专利级一体化微气象智能监测设备。依托双专利超声波探测技术、六要素集成传感架构、无启动风速高精测量、智能抗干扰稳控系统&#xff0c;实现输电线路沿线气象24小时全自动捕捉、动态实时监测、大风风险…...

招行+工行:ReAct(Reasoning + Acting) 讲清楚,并结合 金融场景(含自进化智能体) 给出可直接用的案例

下面我把 ReAct&#xff08;Reasoning Acting&#xff09; 讲清楚&#xff0c;并结合 ** 金融场景&#xff08;含自进化智能体&#xff09;** 给出可直接用的案例与话术&#xff0c;适合分享 / 汇报。一、ReAct 是什么&#xff08;一句话&#xff09;ReAct 推理&#xff08;T…...

DIY智能USB充电器:基于电流检测与双稳态继电器的零功耗节能方案

1. 项目概述&#xff1a;打造一款智能、节能的USB手机充电器作为一名电子爱好者&#xff0c;我经常折腾各种电源项目。市面上很多手机充电器&#xff0c;包括一些原装货&#xff0c;都存在一个通病&#xff1a;手机充满电后&#xff0c;充电器依然插在插座上&#xff0c;内部电…...

Godot 4.3随机地图性能优化:避开TileMap与RNG陷阱

1. 为什么刚写完第一版随机地图就崩溃&#xff1f;——从“能跑”到“能用”的真实断层你兴冲冲地照着教程敲完几十行GDScript&#xff0c;RandomNumberGenerator初始化了&#xff0c;for x in range(width)循环也套好了&#xff0c;甚至还在_draw()里用draw_rect()把每个格子都…...

如何用Untrunc拯救损坏视频?2025年终极MP4修复工具完全指南

如何用Untrunc拯救损坏视频&#xff1f;2025年终极MP4修复工具完全指南 【免费下载链接】untrunc Restore a damaged (truncated) mp4, m4v, mov, 3gp video. Provided you have a similar not broken video. 项目地址: https://gitcode.com/gh_mirrors/unt/untrunc 当你…...