PPOCRLabel标注格式和icdar2024格式互转(2)

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

list_dict = json.loads(content[1])

nsize = len(list_dict)

print(nsize)

for i in range(nsize):

print(list_dict[i])

lin = list_dict[i]

info = lin[‘transcription’]

points = lin[‘points’]

points = [int(y) for x in points for y in x]

pts = ‘,’.join(map(str, points))

lineinfo = pts + ‘,’ + info + ‘\n’

file_lineinfo.write(lineinfo)

file_lineinfo.close()

if name == “main”:

src_path = r"C:\Users\WT\Desktop\hkb-bz\Label.txt"

dst_path = r"C:\Users\WT\Desktop\hkb-bz"

json_2_icdar(src_path, dst_path)

2、icdar2015数据集转换成paddleOCR标注数据格式

===========================================================================================

import os

import argparse

import json

def gen_rec_label(input_path, out_label):

with open(out_label, ‘w’) as out_file:

with open(input_path, ‘r’) as f:

for line in f.readlines():

tmp = line.strip(‘\n’).replace(" ", “”).split(‘,’)

img_path, label = tmp[0], tmp[1]

label = label.replace(“”", “”)

out_file.write(img_path + ‘\t’ + label + ‘\n’)

def gen_det_label(root_path, input_dir, out_label):

with open(out_label, ‘w’,encoding=‘utf-8’) as out_file:

for label_file in os.listdir(input_dir):

img_path = root_path + label_file[3:-4] + “.jpg”

label = []

print(label_file)

with open(os.path.join(input_dir, label_file), “r”,encoding=‘UTF-8-sig’) as f:

for line in f.readlines():

print(line)

#tmp = str(line).replace(“\xef\xbb\xbf”, “”).split(‘,’)

#tmp = str(line).strip(“\r\n”).replace(“\xef\xbb\xbf”, “”).split(‘,’)

tmp=str(line).strip(“\n\r”).split(‘,’)

print(tmp)

points = tmp[:8]

print(len(points))

s = []

for i in range(0, len(points), 2):

b = points[i:i + 2]

print(b)

b = [int(float(t)) for t in b]

s.append(b)

result = {“transcription”: tmp[8], “points”: s}

label.append(result)

out_file.write(img_path + ‘\t’ + json.dumps(

label, ensure_ascii=False) + ‘\n’)

if name == “main”:

parser = argparse.ArgumentParser()

parser.add_argument(

‘–mode’,

type=str,

default=“rec”,

help=‘Generate rec_label or det_label, can be set rec or det’)

parser.add_argument(

‘–root_path’,

type=str,

default=“text_localization/ch4_test_images/”,

help='The root directory of images.Only takes effect when mode=det ')

parser.add_argument(

‘–input_path’,

type=str,

default=“icdar2015/text_localization/Challenge4_Test_Task1_GT”,

最后

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

### 将PPOCRLabel数据集转换为ICDAR2015数据集格式 为了实现从PPOCRLabelICDAR2015的数据集格式转换,需理解两种格式的具体结构差异,并编写相应的脚本来完成这一过程。 #### PPOCRLabel 数据集格式说明 PPOCRLabel是一种用于标注图像中文本位置的工具,其输出文件通常是一个`.txt`文件,每一行代表一个矩形框及其对应的文本标签。每行的内容由坐标文字组成,具体形式如下: ``` x_min,y_min,x_max,y_min,x_max,y_max,x_min,y_max,text ``` 其中,`(x_min, y_min)`表示左上角坐标,`(x_max, y_max)`表示右下角坐标[^3]。 #### ICDAR2015 数据集格式说明 ICDAR2015竞赛使用的数据集中,每个样本同样通过文本文件描述图片中的文本区域。对于每一个矩形或多边形包围盒,采用的是顺时针方向给出四个顶点坐标的顺序存储方式,即: ``` x1,y1,x2,y2,x3,y3,x4,y4,transcription ``` 这里需要注意的是,虽然两者都记录了四组坐标值来定义边界框的位置,但是它们之间存在细微差别——主要是关于起始点的选择以及遍历的方向不同。 #### 实现转换的方法 基于上述分析,下面提供一段Python代码片段作为解决方案的一部分,该函数接收原始路径、输入目录名及输出标签文件名为参数,读取指定目录下的所有标注文件(.txt),按照新的格式重写这些信息至目标文件夹内相应的新版.txt文件中。 ```python import os def convert_ppocr_to_icdar(input_file_path, output_file_path): with open(input_file_path, 'r', encoding='utf-8') as f_in,\ open(output_file_path, 'w', encoding='utf-8') as f_out: lines = f_in.readlines() for line in lines: parts = line.strip().split(',') points = list(map(int, parts[:8])) # 取前八个数值部分 # 构建新格式字符串 new_line = ','.join([str(points[i]) for i in range(8)]) + ',' + ','.join(parts[8:]) f_out.write(new_line + '\n') root_path = './data' input_dir = 'ppocr_labels' # 原始PP-OCR Label所在子文件夹名称 output_dir = 'icdar2015_format' if not os.path.exists(os.path.join(root_path, output_dir)): os.makedirs(os.path.join(root_path, output_dir)) for filename in os.listdir(os.path.join(root_path, input_dir)): if filename.endswith('.txt'): infile = os.path.join(root_path, input_dir, filename) outfile = os.path.join(root_path, output_dir, filename) convert_ppocr_to_icdar(infile, outfile) ``` 此段程序实现了批量处理功能,能够自动遍历给定路径下的所有符合条件的文本文件,并逐一对它们执行格式转换操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值