做OCR项目,需要有很多印刷体的数据集,靠人工手动截图标注显然不现实,于是“人生苦短,我用python”

思路:数据集分两类,一类是长浮点数,模拟财务报表中的上亿元金额:
比如799,889,565.24
实验证明,识别模型经常把最后的小数点识别成,
还有一类就是随机的各种数字以及符号混合

生成完之后用pycharm的库将文本转为图片,把标签信息按格式写入label.txt中。

为了模拟扫描件效果,用opencv再打开,作图片(微小的)旋转,再保存。

最后的图片锐化处理模拟扫描(这个另讲)和数据集处理。
上代码:

#先导入所需的包
import pygame
import os
import string
import random
import shutil
import cv2
import numpy as nppygame.init()  #  初始化def generate_random_str(geshu):#生成不规则字符串stringlist=list()for i in range(geshu):random_str = ''base_str = '-().%0123456789'length = len(base_str) - 1for i in range(random.randint(3,10)):random_str += base_str[random.randint(0, length)]# print(random_str)stringlist.append(random_str)return stringlist;
def get_correct(geshu):#生成随机两位浮点数stringlist=list()for i in range(geshu):j=random.randint(1,9)maxnum=pow(10,j)num=round(random.uniform(-maxnum, maxnum),2)# print("{:,}".format(num))stringlist.append("{:,}".format(num))return stringlist;def rotate_bound(image, angle):#获取宽高(h, w) = image.shape[:2](cX, cY) = (w // 2, h // 2)# 提取旋转矩阵 sin cos M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)cos = np.abs(M[0, 0])sin = np.abs(M[0, 1])# 计算图像的新边界尺寸nW = int((h * sin) + (w * cos))
#     nH = int((h * cos) + (w * sin))nH = h# 调整旋转矩阵M[0, 2] += (nW / 2) - cXM[1, 2] += (nH / 2) - cYreturn cv2.warpAffine(image, M, (nW, nH),flags=cv2.INTER_CUBIC, borderMode=cv2.BORDER_REPLICATE)try:shutil.rmtree('image')#强制删除
except:pass
try:os.mkdir("image") #创建目录
except:pass
try:os.remove("label.txt")
except:pass
randomcount=eval(input("请输入生成的随机浮点数字符串数量:"))
numbercount=eval(input("请输入生成的随机符号字符串数量:"))
rotatedmaxangel=eval(input("请输入最大随机旋转角度:"))
randomstringlist = get_correct(randomcount)#在括号里输入生成数量
numberstringlist = generate_random_str(numbercount)#在括号里输入生成数量list = numberstringlist+randomstringlist#列表合并
listcount=randomcount+numbercount
#设置字体大小及路径
font = pygame.font.Font(os.path.join("C:\\Windows\\Fonts\\STKAITI.TTF"), 26)with open('label.txt','a') as file_handle:   # .txt可以不自己新建,代码会自动新建  for i in range(listcount):text = u"{0}".format(list[i])           #  引号内引用变量使用字符串格式化#设置位置及颜色rtext = font.render(text, True, (0, 0, 0), (255 ,255 ,255))#保存图片及路径path=".\\image\\"+str(i)+".png"pygame.image.save(rtext, path)image = cv2.imread(path)#再次读取rotated = rotate_bound(image, random.randint(-rotatedmaxangel,rotatedmaxangel))#转转转cv2.imwrite(path, rotated)#保存旋转的图片file_handle.write("image/"+str(i)+".png"+"\t"+list[i]+"\n")#写入标签文件print("完成,请查看目录下内容")

其中图片旋转的代码是copy别人的,忘了是在哪个网站了……


这是生成的图片,想生成多少张就生成多少张,比人工标注高到不知道哪里去了。


这是对应的标签txt

python制作印刷体数据集:数字符号数据集(字符串转图片)相关推荐

  1. python中如何将数字改成字符串_python中如何将数字转字符串

    python数字转字符串的实现方法:1.使用格式化字符串,语句如"tt=322 tem='%d' %tt":2.通过"str(5)"方法实现转换. 数字转成字符 ...

  2. 【Python】数据类型 Number数字、String字符串、List列表、Tuple元组、Set集合、Dictionary字典

    Python数据类型 2021/6/3 周四 学习内容: Python数据类型.Number(数字).String(字符串).List(列表).Tuple(元组).Set(集合).Dictionary ...

  3. Python基本类型之数字类型,字符串

    目录 一.数字类型 1.int(整数) 2.float(浮点数) 3.bool(布尔类型) 4.comple(复数类型) 5.数字类型的相互交换 5.1隐式类型 5.2显示类型的转换 二.字符串 1. ...

  4. python制作手机壁纸_Python爬取手机壁纸图片

    使用Python爬取图片. 1 说明 本文通过爬虫程序的编写,实现了一个简单易懂的爬虫程序,方便初学者理解,主要程序分为网页获取函数,以及保存下载函数,这就是所有爬虫程序的基本思想.(本文不涉及反爬, ...

  5. linux bmp添加字符,linux 将数字符号画到BMP图片上

    首先我本先了解一下BMP图片的格式. BMP文件主要分为如下4个部分: 块名称 对应Windows结构体定义                                               ...

  6. Python神经网络编程:手写数字的数据集MNIST

    识别人的笔迹这个问题相对复杂,也非常模糊,因此这是一种检验人工智能的理想挑战.这不像进行大量数字相乘那样明确清晰. 让计算机准确区分图像中包含的内容,有时也称之为图像识别问题.科学家对这个问题进行了几 ...

  7. Python神经网络识别手写数字-MNIST数据集

    Python神经网络识别手写数字-MNIST数据集 一.手写数字集-MNIST 二.数据预处理 输入数据处理 输出数据处理 三.神经网络的结构选择 四.训练网络 测试网络 测试正确率的函数 五.完整的 ...

  8. 基于TensorFlow深度学习框架,运用python搭建LeNet-5卷积神经网络模型和mnist手写数字识别数据集,设计一个手写数字识别软件。

    本软件是基于TensorFlow深度学习框架,运用LeNet-5卷积神经网络模型和mnist手写数字识别数据集所设计的手写数字识别软件. 具体实现如下: 1.读入数据:运用TensorFlow深度学习 ...

  9. 【数据集处理】Python 将图片名字中含有某一字符串的图片存到指定文件夹下

    目的: 某一个文件下存放的是各种各样所有的图片,希望把这些图片进行分类.比如:将图片名字中含有绝缘子自爆的图片放在绝缘子自爆的文件夹下.将图片名字中含有树枝的图片放在树枝的文件夹下. 一.将含有某一个 ...

最新文章

  1. python数据结构与算法之问题求解
  2. SAP ERP 安全管理平台系统
  3. 实习分享 | 来康康字节小姐姐的经验
  4. iconfont-阿里巴巴矢量图标库使用教程
  5. 2022年最新google drive 谷歌云盘下载文件限额解决方法
  6. ICANN拟删旧国别域名 含英国gb苏联su塞黑cs
  7. 【精品整站】WordPress自适应美女写真网站源码/美图整站源码带数据/安装即可运营
  8. ceshi wenz
  9. 【实习日报】2019年4月上半月 前端开发实习工作日报汇总
  10. 升级鸿蒙系统手机网络信号变差了,这是为什么?
  11. 数据分析统计基础(三):差异性/相关性分析
  12. 阻容感基础09:电感器原理(1)-电感器模型
  13. 老路用得上的商学课-81-100学习(读书)笔记
  14. 数据结构课设任务内容
  15. AXI总线详解完结篇
  16. 使用Kubernetes最常见的10个错误
  17. win10 进不了修复服务器失败,win10系统电脑启动不了的修复方法
  18. 佳顺通用进销存系统去广告_钱大妈布局自助售货柜,智能收银助力生鲜零售进销存管理...
  19. 《地理信息系统导论》第3章 矢量数据模型 复习题
  20. 用HTML+CSS搭建前端二手书商城

热门文章

  1. Codeforces Round #467 (Div. 2)
  2. HTTP Status 404 - There is no Action mapped for...
  3. Linux 下获取 IP 和 MAC Adr 的方法
  4. 祝每位读者在新的一年里虎虎有生气·事事皆如意!
  5. python elasticsearch模块_Python3 操作 elasticsearch
  6. 用python做数据分析教程_Python运用于数据分析的简单教程
  7. 王校长撩妹不成反被锤爆?再有钱的舔狗也只是舔狗【Python爬虫实战:微博评论采取】
  8. mysql外部关联视图_MySQL数据库 : 自关联,视图,事物,索引
  9. Python+OpenCV:图像修复(Image Inpainting)
  10. Qt信号槽如何传递参数