【OCR技术系列之三】大批量生成文字训练集
放假了,终于可以继续可以静下心写一写OCR方面的东西。上次谈到文字的切割,今天打算总结一下我们怎么得到用于训练的文字数据集。如果是想训练一个手写体识别的模型,用一些前人收集好的手写文字集就好了,比如中科院的 这些数据集 。但是如果我们只是想要训练一个专门用于识别印刷汉字的模型,那么我们就需要各种印刷字体的训练集,那怎么获取呢?借助强大的图像库,自己生成就行了! 先捋一捋思路,生成文字集需要什么步骤: 确定你要生成多少字体,生成一个记录着汉字与label的对应表。 确定和收集需要用到的字体文件。 生成字体图像,存储在规定的目录下。 适当的数据增强。 第三步的生成字体图像最为重要,如果仅仅是生成很正规的文字,那么用这个正规文字集去训练模型,第一图像数目有点少,第二模型泛化能力比较差,所以我们需要对字体图像做大量的图像处理工作,以增大我们的印刷体文字数据集。 我总结了一下,我们可以做的一些图像增强工作有这些: 文字扭曲 背景噪声(椒盐) 文字位置(设置文字的中心点) 笔画粘连(膨胀来模拟) 笔画断裂(腐蚀来模拟) 文字倾斜(文字旋转) 多种字体 做完以上增强后,我们得到的数据集已经非常庞大了。 现在开始一步一步生成我们的3755个汉字的印刷体文字数据集。 一、生成汉字与label的对应表 这里的汉字、label映射表的生成我使用了pickel模块,借助它生成一个id