从文本到图像——文本识别数据集生成器

本文介绍了一款用于图像文本识别的自动生成数据集的脚本,详细阐述了开发背景、脚本效果及具体开发过程。通过该脚本,用户可以根据需求定制文本长度、图像数量和尺寸,并可以选择是否进行数据增强。提供了项目结构、实现思路及使用说明,帮助用户创建用于模型训练的图像数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码地址如下:
http://www.demodashi.com/demo/14792.html

一、开发背景

图像中的文本识别近几年来备受瞩目。通常来说,图片中的文本能够比图片中其他内容提供更加丰富的信息。因此,图像文本识别能够将图像中的文本区域转化成计算机可以读取和编辑的符号,打通了从图像到文本再到信息的通路。

随着计算机算力的提升,基于深度学习方法的本文识别技术逐渐成为主流,而深度学习中数据集的获取是重中之重。本脚本实现读取语料集中的文本内容,以保存为图像形式的数据集,用于模型训练。

二、脚本效果

1、IDE中的运行界面

(1)选择字体文件

(2)生成数据集

2、生成的图像

不使用数据增强


使用数据增强



3、映射表

存储图像文件名和类别序列标注的对应关系

三、具体开发

1、功能需求

  1. 根据用户指定的语料数据生成图像文件及映射表
  2. 用户可自行更改文本长度,图像数量及图像尺寸
  3. 用户可自行选择是否进行增强处理

2、实际项目

1. 项目结构

(1)根目录下的fonts文件夹用于存放ttf字体文件, imageset文件夹用于存放输出图像和映射表
(2)config中设置相关参数并存放语料文件, dict5990.txt是字典, sentences.txt是语料集

2. 实现思路

3. 代码实现
1. 设置参数
# 语料集
corpus = 'config/sentences.txt'
dict = 'config/dict5990.txt'

# 字体文件路径
FONT_PATH = 'fonts/'

# 输出路径
OUTPUT_DIR = 'imageset/'

# 样本总数
n_samples = 50
# 每行最大长度
sentence_lim = 10
# 画布能容纳的最大序列长度,对应img_w
canvas_lim = 50
2. 构建生成器

1. 加载字体文件

# 选择字体
root = tk.Tk()
root.withdraw()
self.font_path = filedialog.askopenfilename()
		
def load_fonts(self, factor, font_path):
	""" 加载字体文件并设定字体大小
        """
	self.fonts = []
	# 加载字体文件
	font = ImageFont.truetype(font_path, int(self.img_h*factor), 0)
	self.fonts.append(font)

2. 构建字典

def build_dict(self):
	""" 打开字典,加载全部字符到list
            每行是一个字
        """
	with codecs.open(self.dictfile, mode='r', encoding='utf-8') as f:
		# 按行读取语料
		for line in f:
			# 当前行单词去除结尾,为了正常读取空格,第一行两个空格
			word = line.strip('\r\n')
			# 只要没超出上限就继续添加单词
			self.dict.append(word)
			# 最后一位作为空白符
			self.blank_label = len(self.dict)

3. 加载语料

def build_train_list(self, num_rows, max_row_len=None):
	# 过滤语料,留下适合的内容组成训练list
	assert max_row_len <= self.img_lim
	self.num_rows = num_rows
	self.max_row_len = max_row_len
	sentence_list = []
	self.train_list = []
	
	with codecs.open(self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值