主要目的
本文主要是为了做印刷体字体识别的前期工作做准备,后期需要大量字体样本做神经网络训练,但缺乏印刷体样本,因此特地写了个程序自动生成所需要的样本。

##主要实现过程

本文主要分为三个部分实现,主要包括文本字库预处理,生成图片字已及保存到相应文件夹。其中文本字库采用的是百度上搜索到的《常用汉字3500个》,生成图片用的是PIL模块。

#文件目录一
# -*- coding: utf-8 -*-
#获取字体文件名,字体文件可以在百度下载或者电脑字体目录下寻找
import os
def Word_Font():Word_Font_Path = 'D:\pycharm11\文字生成\Word_Font'dirs = os.listdir(Word_Font_Path)Word_Font_List=[]for dir in dirs:Word_Font_List.append(dir)return Word_Font_List#文件目录二
import re
f = open ("D:\pycharm11\文字生成\常用汉字3500个.txt","r")
lines = f.readlines()  # 读取全部内容 ,并以列表方式返回
Library = []
for line in lines:line = line.split('\n')line = re.sub(r'\n', "", line[0])line = re.sub(':', "", line)line=line.replace(" ", "")line = line.lstrip(':')line = line[:0] + line[13:]for i in line:Library.append(i)
size_L=len(Library)#主程序目录
from PIL import Image, ImageDraw, ImageFont, ImageOps
import os
import re
import Word_Font
#读取字体文件
Word_Font_List = Word_Font.Word_Font()#选择字体以及图片参数的初始值
class LetterImage():def __init__(self, imgSize=(0, 0), imgMode='RGB', bg_color=(0, 0,0), fg_color=(255, 255, 255),fontsize=10,Word_Font=Word_Font_List[1]):self.imgSize = imgSizeself.imgMode = imgModeself.fontsize = fontsizeself.bg_color = bg_colorself.fg_color = fg_colorself.font = ImageFont.truetype(Word_Font, fontsize)#设定生成图片大小def GenLetterImage(self, letters):self.letters = letters(self.letterWidth, self.letterHeight) = self.font.getsize(letters)if self.imgSize == (0, 0):self.imgSize = (self.letterWidth - 0, self.letterHeight +15) #底边边距self.imgWidth, self.imgHeight = self.imgSizeself.img = Image.new(self.imgMode, self.imgSize, self.bg_color)self.drawBrush = ImageDraw.Draw(self.img)textY0 = (self.imgHeight - self.letterHeight-2 )textY0 = int(textY0)textX0 = int((self.imgWidth - self.letterWidth-2 )) #显示窗口坐标self.drawBrush.text((textX0, textY0), self.letters, fill=self.fg_color, font=self.font)if __name__ == '__main__':f = open("D:\pycharm11\文字生成\常用汉字3500个.txt", "r")lines = f.readlines()  # 读取全部内容 ,并以列表方式返回Library = []for line in lines:line = line.split('\n')line = re.sub(r'\n', "", line[0])line = re.sub(':', "", line)line = line.replace(" ", "")line = line.lstrip(':')# line = line[:0] + line[13:]for i in line:Library.append(i)letterList = []#---------------将图片参数追加到列表以便后期调用--------------------for j in range (0,len(Word_Font_List),1):letterList.append(LetterImage(bg_color=(0, 120, 0), fontsize=100,Word_Font=Word_Font_List[j]))print(Word_Font_List[j])num_letter = len(Library)  #字体数量# ---------------------------创建文件夹------------------------------File_name = re.sub(r'\.', '_', Word_Font_List[j])paths = os.getcwd()[:-4] + '文字生成\\'+File_name  # 获取此py文件路径,在此路径选创建文件夹if not os.path.exists(paths):os.makedirs(paths)paths = paths +"\\"# -----------------在某一种字体下,对字库遍历,生成相应字体图片------------------------for i in range(num_letter-1):letterList[j].GenLetterImage(Library[i])grayImg = ImageOps.grayscale(letterList[j].img)grayImg.save(paths+str(i)+".png")

流程图:

总结:
本文在在字库文本库里中,处理得不干净,主要有里面的冒号以及重复字处理,后期有待改进,另外程序中没有写入判断机制,比如创建的文件夹是否存在,里面的文件是否要重新更新。

批量生成印刷字体字库相关推荐

  1. 自定义边界_如何批量生成CAD填充的边界?

    下面是本公众号文章分类目录,点击标题文字可打开分类文章列表: 安装卸载 异常.退出 文件及输入输出  基本操作技巧 设置及相关问题  界面和显示 快捷键 视图设置和调整  图层管理 颜色   线型   ...

  2. 【Python实战】使用python批量生成发票

    一般的贸易或者货运型公司,经常需要做发票,有时候我们会遇到需要做大批量重复性的发票时,如果人工一个个去做,即耗时而且容易出错,这时我们可以用的python和excel相关的模块去批量生成. 现在有这样 ...

  3. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...

    关于python连接SQL server数据库的问题? 你把完整的连接代码贴一下 如何将现有的数据利用python 填入word的表格中? VB,VBA我会,py不会哦 DB2教程推荐,新手想学习这个 ...

  4. python批量生成word报告_Python操作Word批量生成合同的实现示例

    背景:大约有3K家商家需要重新确认信息并签订合同.合同是统一的Word版本.每个供应商需要修改合同内的金额部分.人工处理方式需要每个复制粘贴且金额要生成大写金额.基于重复工作可偷懒.用Python解救 ...

  5. 5 video关掉字幕选项_Photoshop 2020中英文字幕批量生成的制作方法

    下面说下Photoshop 2020中英文字幕批量生成的制作方法   1.先在excel里把中文字幕设置为一列,英文设置为一列,首列标题分别设置为A和B为标题,接着复制粘贴到txt文档里进行保存: 2 ...

  6. 高效办公!Python 批量生成PDF文档

    日常办公中,经常会使用PDF文档,难免需要对PDF文档进行编辑,有时候PDF文档中的大部分内容都是一样的,只是发送对象不同. 这种模板套用的场景下,使用Python进行自动化就尤为方便,用最短的时间办 ...

  7. 前端js html转换成pdf可下载打印;前端js可批量生成条形码;前端js可批量生成二维码,生成letter标签

    注意:本文调试的是letter纸尺寸 前端js html转换成pdf可下载打印  html2canvas  + jspdf 前端js生成条形码 Options · lindell/JsBarcode ...

  8. 如何批量生成Flattermarken条码

    一维条形码的种类繁多,很多条形码在日常生活中不太常见,比如下面我们要介绍的Flattermarken条码,这种条码属于一种比较特殊的条形码,主要在印刷车间使用.Flattermarken条码有效的字符 ...

  9. Code39码如何批量生成

    Code 39是 Intermec公司在1975年研制成功的一维条码.包括数字.字母和一些符号在内,条形码共包括43个字符.由于可以处理字母,CODE 39在工业领域必不可少,多用于汽车.电子等工厂自 ...

最新文章

  1. 【下有对策】verycd没有的资源有很多方法下载
  2. 压力测试与提升服务器能力的几个方法
  3. 嵌入式系统 Contiki 代码移至 Github
  4. SVN使用log,list,cat,diff命令查看特定文件版本信息
  5. 普通图片在字模软件中的提取方法
  6. [HNOI2016]网络 树链剖分,堆
  7. jquery 点击事件
  8. 马哥linux第六周作业
  9. YolactEdge:首个开源边缘设备上的实时实例分割(Jetson AGX Xavier: 30 FPS)
  10. HP 380 G5安装CentOS7时找不到P400 raid卡
  11. curl 慢 不稳定_徐工起重机:龟速一样"慢"的机器,竟还有人抢着买?
  12. Struts标签 bean:write用法
  13. NET开发资源站点和部分优秀.NET开源项目
  14. 真无线蓝牙耳机,享受高品质杜比音效
  15. 网吧服务器网络维护教程,高效维护网吧局域网网络的方法
  16. 计算机考研压分的学校,考研压分院校盘点 | 都说这些学校今年压分严重?!
  17. 远程IT运维的升级,“团队协作”
  18. iterative-mergesort
  19. Python --- 输入、输出、运算符
  20. 涂涂乐的详细实现之四--unity3d调用EmguCV实现图片识别

热门文章

  1. leetcode--116. 填充每个节点的下一个右侧节点指针
  2. java内部类的特点
  3. mysql 8.0.22_mysql 8.0.22 安装配置图文教程
  4. bose耳机信号断续_最强真无线降噪耳机?BOSE QC Earbuds消噪耳塞上手评测
  5. 华为交换机的配置及:access、trunk、hybird端口详解
  6. Juniper 210 密码清不掉_三分钟学会如何找回mysql密码
  7. c++ windows 点击按钮跳转另一个窗体_PyQt5学习笔记(一)窗体控制
  8. python日历下拉框_python日历来计算月份倒退
  9. createprocess失败代码2_极客战记[森林]:边地之叉-通关代码及讲解
  10. python合并两个数据框_python 学习的第五天 数据框合并