其他分享
首页 > 其他分享> > 合成自己OCR数据

合成自己OCR数据

作者:互联网




 

文章目录






前言

       最近在搞OCR识别,由于开源数据集不太符合我的需求,所以只好自己来生成一些自己的数据集。这里主要介绍PaddleOCR里给的一个StyleText和自己另外找的一个数据合成工具,思路就是提取出来已有数据的背景,然后更改文本内容和保存的背景进行融合。下面切入正题。


提示:以下是本篇文章正文内容,下面案例可供参考





1、PaddleOCR工程下载连接

https://github.com/PaddlePaddle/PaddleOCR

        安装步骤在它的教程里已经给了,大家可以根据教程只是进行安装和训练,文档写的很清晰,也可以自行百度查询。 它的一些教程文档在doc/doc_ch里,里面包含各种教程及介绍,还有一些高频问题,大家可以仔细阅读。





2、数据合成工具





 2.1StyleText

         它的位置如下图所示,框中的部分是它的一些教程文档,大家可以根据这个文档进行操作。这个数据合成工具用于向于更换图片背景,从而扩增我们的数据量。它在执行过程中会给我们保留下来三张图,分别是fake_fusion.jpg(生成的合成数据)、fake_bg.jpg(擦除文字后的 背景图) 以及fake_text.jpg(用我们提供的字符生成的灰色背景的文字图片)  。然而,在实际使用中我发现,它给定的那几个风格图片效果较好,而想要提取自己的数据背景效果却不好,有的字体的擦除效果并不是很好,所以建议自己在手动筛选一下生成的背景图。

                

 合成单张图时,执行命令在上图框中的README_ch.md文档中的第64行,参数介绍如下

      

  生成大量数据时,执行的命令为REAMME_ch.md文档的131行左右(如果版本没啥变化的话),它的参数含义和生成单张图大致相同,只不过改了运行文件和配置文件而已。还有就是批量合成数据时,默认只保存了生成图像,没有保存背景图。如果自己的背景图充足的情况下,则无需保存背景图,直接在语料库(examples/corpus/example.txt)里添加自己家的语料,它会在其中随机选取一行作为我们的文本内容去合成数据;需要保存背景图的话,需要自己去添加相应的代码(在engine/predictors.py或者engine/synthesisers.py里,找对地方直接cv2.imwrite即可)。





2.2 合成中英文数据

 2.2.1:下载链接:

https://github.com/junwenzhu/chinese-image-generator#%E5%8A%9F%E8%83%BD

2.2.2:简单介绍:

        这个工具我们只需将背景图放入bg文件夹下,然后在corpus/CN或者corpus/EN下放入我们自己的语料,然后它会根据我们的cfg.py中给定的参数来生成对应的数据,cfg.py中的文件注释也很充足,我们只需要改成自己的即可,然后运行main.py,会生成res文件夹,里面就是我们生成的数据以及对应的txt文档(里面记录了图片路径对应的文本内容)。如果我们字符不在他给定的字典中,将该字符加入到charset_raw.txt里即可(最好在末尾追加,然后在加一行回车),charset_unique.txt是去重后得到字典 。





总结

以上就是我生成数据的方式,这也是本人第一次写,时间也有点仓促,可能有很多不足,还请指正。

标签:数据,合成,py,生成,文档,OCR,背景图
来源: https://blog.csdn.net/qq_55068938/article/details/120596088