中文识别数据集生成脚本

概述

该脚本能够将用户指定的字符输出为不同字体的图像文件,用于训练文字识别的机器学习模型或用于其他文字识别OCR项目

详细

代码下载:http://www.demodashi.com/demo/13952.html

一、开发背景

随着近几年来计算机算力的不断提升,机器学习也迎来了爆发式的发展,图像识别作为机器学习最典型也是最主要的应用之一,目前应用前景火热。

机器学习最重要的一步就是获取数据集,没有一个坚实的数据集做支撑是无法训练出好用的模型的。因此,本文实现了一个脚本,能够生成任意数量,任意字体,以及带有各种模糊及噪声预处理的图像,用这些图像作为训练集是再合适不过了。

二、脚本效果

1、IDE中的运行界面

2、生成的图像

每个文件夹存放一个汉字,即一个类别:

打开其中一个文件夹,里面存放的是当前类别汉字的各个字体以及各种预处理后的图像文件。

三、具体开发

1、功能需求

1. 根据用户指定的汉字字符生成图像文件

2. 用户可自行更改图像数量及图像尺寸

3. 用户可自行更改预处理效果

2、实际项目

(1)项目结构

项目文件夹ImgGenerator下的fonts文件夹用于存放ttf字体文件。

outputs文件夹用于存放输出图像。

config.py中设置相关路径信息。

draw_chara.py是实际的脚本。

(2)实现思路:

  1. 设定需要输出的字符:
if __name__ == ‘__main__‘:

    # 加载所有指定字体
    fonts = load_fonts(size)

    # 字符集,将其中的字符保存成图像
    charset = ‘u你想输出的汉字‘

    # 生成n个字
    n = 10
    draw_txt(n, charset, fonts, size)

2. 加载字体:

# 自动加载字体文件
def load_fonts(size):
    fnts = []

    # 字体路径
    font_path = os.path.join(config.FONT_PATH, "*.*")
    # 获取全部字体路径,存成list
    fonts = list(glob.glob(font_path))

    # 遍历字体文件
    for each in fonts:
        # 调整字体大小
        fnt = ImageFont.truetype(each, int(size[0]*1.75/2), 0)
        fnts.append(fnt)

    return fnts

这里需要根据输出尺寸调整字体大小,避免超出画布或留白太多。

3. 预处理图像:

作为数据增强的一种方式,对训练图像进行不同程度的预处理,包括模糊,干扰,噪声等可以增强模型的泛化能力。

这里可以根据自己需要选择在0-7个预处理模式中自行选择,只需要更改循环范围即可。

# 数据增强
for mode in range(0, 8):
    aug = augmentation(img, mode, size)
def augmentation(img, mode, size):
    # 不能直接在原始image上改动
    image = img.copy()
    ‘‘‘添加随机模糊和噪声‘‘‘

    # 高斯模糊
    if mode == 0:

    # 模糊后二值化,虚化边缘
    if mode == 1:

    # 横线干扰
    if mode == 2:

    # 竖线
    if mode == 3:

    # 十字线
    if mode == 4:

    # 左右运动模糊
    if mode == 5:

    # 上下运动模糊
    if mode == 6:

    # 高斯噪声
    if mode == 7:

(3)使用说明

现在config文件中设置字体文件路径和输出路径:

# coding=utf-8
# 图像保存路径
IMAGE_PATH = ‘./outputs‘

# 字体文件路径
FONT_PATH = ‘./fonts‘

字体文件路径中存放ttf字体文件,如下:

最后运行draw_chara.py即可在outputs文件夹中得到输出图像。

代码下载:http://www.demodashi.com/demo/13952.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/9582478.html

时间: 2024-10-05 06:33:31

中文识别数据集生成脚本的相关文章

LoadRunner 11中Record无法自动生成脚本——解决办法

[问题描述] 安装loadRunner 11, 使用IE为默认浏览器,打开一个页面进行脚本录制:录制完成后,无法生成脚本. [问题现象] 控制台输出如下: ****** Start Log Message ******Web Recorder version : 11.0.0.8859 Recording Mode: HTML-based scriptCorrelation is enabled system wideNot recording headersNot excluding cont

数据库生成脚本,架构+数据

简介 通过数据生成数据库架构.数据或架构和数据脚本,方便对数据库和数据的备份和迁移 步骤 1. 数据库右键-->任务-->生成脚本 2. 下一步-->选择需要备份的表 3. 下一步-->高级,选择你需要备份的类型 4. 选择合适的路径和名称,下一步即可 5.生成的脚本如下

loadrunner11录制报 NOT PROXIED!错误,无法生成脚本

使用loadrunner11,IE9录制完脚本,报错: [Net An. Error    (1dec:282c)] Request Connection: Remote Server @ 210.52.215.177:80   (Service=)  NOT PROXIED! (REASON: Unable to connect to remote server: rc = -1 , le = 0),且生成脚本为空. 解决方案: 录制选项-->网络-->端口映射-->套接字级别数据和W

SQL Server镜像自动生成脚本

SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 192.168.1.1 WSQL01192.168.1.2 WSQL02192.168.1.3 WWEB03 --★Do部分都是需要填写的 -- ============================================= -- Author: <桦仔> -- Blog: <ht

Aspose.BarCode已修复关于PDF417条码识别和生成的各种问题条码控件网

Aspose.BarCode是由Aspose Pty Ltd所开发的一款功能强大,且稳健的条形码生成和条码识别组件,其使用托管的C#编写,能帮助开发者快速简便的向其Microsoft应用程序(WinForms, ASP.NET 和.NET Compact Framework)添加条形码生成和条码识别功能.有了Aspose.BarCode,开发者能对条形码图像的每一方面进行全面的控制:背景颜色,条形颜 色,图像质量,旋转角度,X尺寸,标题,客户自定义分辨率等.Aspose.BarCode可以从任意

android tesseract-ocr实例教程(包含中文识别)(附源码)--转载

(转载注明出处:http://blog.csdn.net/buptgshengod) 1.介绍     快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中.下面分享一下这个应用中的核心功能ocr,也就是图片识词功能.先来看下我的实现效果.上图是在网上随便截下来的一个带有英文的页面,下图是我的应用的实现效果.   2.实现    (1)首先要下载我的源码和语言包,博客下方会给出地址.(源码设为10分,是想让大家珍惜别人的劳动成果)     (2)把代码中的lib中的两个文件夹

android tesseract-ocr实例教程(包含中文识别)(附源码)

(转载请注明出处:http://blog.csdn.net/buptgshengod) 1.介绍     快过年了,博主的新应用-屏幕取词之了老花镜的编码工作也在紧锣密鼓的进行中.下面分享一下这个应用中的核心功能ocr,也就是图片识词功能.先来看下我的实现效果.上图是在网上随便截下来的一个带有英文的页面,下图是我的应用的实现效果.   2.实现    (1)首先要下载我的源码和语言包,博客下方会给出地址.(源码设为10分,是想让大家珍惜别人的劳动成果)     (2)把代码中的lib中的两个文件

ORA-02266错误的批量生成脚本解决方案

原文:ORA-02266错误的批量生成脚本解决方案 ORA-02266: unique/primary keys in table referenced by enabled foreign keys这篇博客是很早之前总结的一篇文章,最近导数时使用TRUNCATE清理主表数据又遇到了这个错误,发现还有其它解决方案: a) 禁用与主表相关的外键约束 b) TRUNCATE TABLE c) 启用那些外键约束. 在实际操作中,发现使用上面的流程操作虽然正确,但是要写很多脚本,有些主表中的字段可能是多

验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等

以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 四位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数字+小写.数字+大写.数字+大小写等情况. 简单验证码识别:验证码类型 : 数字+字母, 纯英文, 纯数字,计算题 英数_验证码识别:纯数字,纯英文,数字+英文 中英数_验证码识别:英文.数