生成训练数据的方法及装置
技术领域
本公开涉及计算机技术领域,特别涉及生成训练数据的方法及装置、计算机可存储介质。
背景技术
OCR(Optical Character Recognition,光学字符识别)训练数据是用来训练OCR模型的数据。OCR模型的优劣与训练数据的质量和数量紧密相关。要想让一个优秀的算法把潜力发挥到极致,除了算法设计外,训练数据的数量和标注质量发挥了关键的作用。
目前OCR模型的训练数据的生成方式有人工采集和计算机程序合成两种。
通过人工采集的方式生成训练数据包括以下步骤。首先,人工收集素材。其次,人工在不同场景、不同角度、不同光照等复杂条件下对素材进行拍照,收集大量的图片。然后,人工通过打标工具分别标注出每一张图片的每一条文本行的四个顶点的位置,同时标注出每一条文本行的文本内容。最后,人工多次对标注结果进行校对。
通过人工采集的方式生成训练数据具有人工标注耗时长、标注成本高且存在误差。针对此技术问题,提出了一种通过计算机程序合成的方式生成训练数据的方法。通过计算机程序合成的方式生成训练数据的方法包括通过传统图像合成方法生成、通过Photoshop图像处理软件提供的JavaScript技术对收集的素材进行批量修改生成或通过GAN(Generative Adversarial Network,生成式对抗网络)生成。
发明内容
发明人认为:相关的生成训练数据的方法中,难以模拟现实场景,利用生成的训练数据训练得到的OCR模型识别真实图像的准确性较差。
针对上述技术问题,本公开提出了一种解决方案,模拟现实场景,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
根据本公开的第一方面,提供了一种生成训练数据的方法,包括:获取包括文字内容的第一图像和与所述文字内容对应的文本,所述第一图像包括文字标记,所述文字标记用于标记所述文字内容的位置;在不同场景条件下,自动对所述第一图像进行拍摄,得到多个第二图像,每个第二图像包括所述文字标记;对于每个第二图像,根据所述文字标记,确定所述文字内容的文字坐标;对于每个第二图像,去除所述文字标记,得到第三图像;将所述文本、所述文字坐标和所述第三图像,确定为训练数据,用于训练光学字符识别OCR模型。
在一些实施例中,在不同场景条件下,自动对所述第一图像拍摄,得到至少一个第二图像包括:利用拍摄装置自动对所述第一图像拍摄,得到至少一个第二图像,其中,所述拍摄装置被配置为自动模拟所述不同场景条件。
在一些实施例中,所述不同场景条件包括:光照和拍摄角度中的至少一种。
在一些实施例中,在所述第一图像为纸质图像的情况下,自动模拟所述不同场景条件包括:自动对所述第一图像随机折叠、在所述第一图像上增加污点或对所述第一图像进行纸张变形。
在一些实施例中,获取包括文字内容的第一图像和与所述文字内容对应的文本包括:利用文档合成算法,获取所述第一图像和所述文本。
在一些实施例中,对于每个第二图像,根据所述文字标记,确定所述文字内容的文字坐标包括:对于每个第二图像,利用关键点检测算法,提取所述文字标记;根据所述文字标记的位置坐标,确定所述文字内容的文字坐标。
在一些实施例中,对于每个第二图像,去除所述文字标记,得到第三图像包括:提取所述每个第二图像的背景;使用所述背景替换所述文字标记。
在一些实施例中,所述文字标记包括第一文字标记和第二文字标记,所述第一文字标记用于标记所述文字内容中每个文字的左上角位置、左下角位置、右上角位置和右下角位置,所述第二文字标记用于标记所述文字内容中每行文字的左上角位置、左下角位置、右上角位置和右下角位置。
在一些实施例中,所述文字坐标包括第一文字坐标和第二文字坐标,所述第一文字坐标为所述文字内容中每个文字的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标,所述第二文字坐标为所述文字内容中每行文字的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标。
在一些实施例中,文字标记为半径为r且圆心坐标为(x,y)的圆点, r大于0,提取所述每个第二图像的背景包括:利用公式(x′,y′)= (max(1,x-r-p),max(1,y-r-p))计算所述背景的坐标,其中, (x′,y′)为所述背景的坐标,p为预设偏移量,p大于0。
根据本公开第二方面,提供了一种生成训练数据的装置,包括:获取模块,被配置为获取包括文字内容的第一图像和与所述文字内容对应的文本,所述第一图像包括文字标记,所述文字标记用于标记所述文字内容的位置;拍摄模块,被配置为在不同场景条件下,自动对所述第一图像进行拍摄,得到多个第二图像,每个第二图像包括所述文字标记;第一确定模块,被配置为对于每个第二图像,根据所述文字标记,确定所述文字内容的文字坐标;去除模块,被配置为对于每个第二图像,去除所述文字标记,得到第三图像;第二确定模块,被配置为将所述文本、所述文字坐标和所述第三图像,确定为训练数据,用于训练光学字符识别OCR模型。
根据本公开第三方面,提供了一种生成训练数据的装置,包括:上述任一实施例所述的数据传输装置;和上述任一实施例所述的生成训练数据的装置。
根据本公开第四方面,提供了一种生成训练数据的装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行上述任一实施例所述的生成训练数据的方法。
根据本公开的第五方面,一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任一实施例所述的生成训练数据的方法。
在上述实施例中,模拟现实场景,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出根据本公开一些实施例的生成训练数据的方法的流程图;
图2示出根据本公开一些实施例的第一图像中某一行文字的文字标记的示意图;
图3示出根据本公开一些实施例的生成训练数据的装置;
图4示出根据本公开一些实施例的生成训练数据的装置的框图;
图5示出用于实现本公开一些实施例的计算机系统的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
通过人力标注具有以下缺点。
(1)人工标注耗时较长
人工收集的方式需要投入大量的人力物力对数据进行拍摄和标注;因为数据收集和标注慢,项目周期容易被拉长,经常会出现数据不到位导致算法工程无法开展的情况,严重地降低了OCR的开发效率。
(2)人工标注成本较高
由于OCR算法所需要的数据量较为庞大,在使用人工标注时,会产生大量的人力成本支出,为开发总预算带来负担。对敏感数据进行标注时有泄露信息的风险。
(3)人工标注存在误差
标注人员在对图像进行标注时,实际上是在有限的时间内大量地做重复性的工作,难免会存在标注遗漏、错误标注等情况。这些错误数据会对模型训练产生不好的影响
另外,图像合成方法与GAN虽然能在短时间内合成大量图片,但是光照、纸张折痕、纸张上的污点等自然场景拍摄的数据难以合成,用合成数据训练的模型迁移到真实图片时效果不理想。通过 Photoshop中的JavaScript技术生成的图片样式比较单一,也难以生成和自然场景下的拍摄条件。
上述的生成训练数据的方法,难以模拟现实场景,利用生成的训练数据训练得到的OCR模型识别真实图像的准确性较差。
针对上述技术问题,本公开提出了一种解决方案,模拟现实场景,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
图1示出根据本公开一些实施例的生成训练数据的方法的流程图。
如图1所示,生成训练数据的方法包括步骤S110-步骤S150。
在步骤S110中,获取包括文字内容的第一图像和与文字内容对应的文本。第一图像包括文字标记。文字标记用于标记文字内容的位置。
在一些实施例中,获取包括文字内容的第一图像和与文字内容对应的文本包括:利用文档合成算法,获取第一图像和文本。例如,调用文档合成算法,设置不同字体、不同字体大小、不同字体颜色等条件生成类似真实文档的数据图像,即第一图像。生成第一图像的同时记录下每个字的内容和每个字和每行字的四个位置坐标,并在第一图像上的每个文字和每行文字的左上角位置注红色圆点、右上角位置标注绿色圆点,右下角位置标注蓝色圆点、左下角位置标注黄色圆点,该圆点的半径公式为
单位为像素,然后依次用红、绿、蓝、黄色的四条的线段将四个顶点连接。
在一些实施例中,文字标记包括文字标记点和文字标记线段。例如,文字内容的每个文字和每行文字分别包括四个文字标记点和四个文字标记线段。
下面将结合图2详细介绍文字标记。
图2示出根据本公开一些实施例的第一图像中某一行文字的文字标记的示意图。
如图2所示,某一行文字的文字标记包括该行文字的四个顶点的文字标记点211、文字标记点212、文字标记点213和文字标记点214。文字标记点211为红色,文字标记点212为绿色,文字标记点213为蓝色,文字标记点214为黄色。
在一些实施例中,该行文字的文字标记还包括该行文字的四条边界的文字标记线段221、文字标记线段222、文字标记线段223和文字标记线段224。文字标记线段221为红色,文字标记线段222为绿色,文字标记线段223为蓝色,文字标记线段224为黄色。
对于每个文字的文字标记,采用与每行文字的文字标记相同的原理进行标记。
返回图1,在步骤S120中,在不同场景条件下,自动对第一图像进行拍摄,得到多个第二图像。每个第二图像包括文字标记。
在一些实施例中,在不同场景条件下,自动对第一图像进行拍摄,得到多个第二图像包括如下步骤。
利用拍摄装置自动对第一图像拍摄,得到至少一个第二图像。其中,拍摄装置被配置为自动模拟不同场景条件。例如,拍摄装置为云台拍摄装置。
在一些实施例中,不同场景条件包括光照和拍摄角度中的至少一种。例如,不同场景条件还包括旋转角度。
在一些实施例中,在第一图像为纸质图像的情况下,自动模拟不同场景条件包括:自动对第一图像随机折叠、在第一图像上增加污点或对所述第一图像进行纸张变形。例如,通过批量彩色打印第一图像,得到纸质版的第一图像。在一些实施例中,将纸质版的第一图像放置在云台拍摄装置的机械臂上,启动拍摄。云台拍摄装置就可以自动调节光照、拍摄角度对纸质版的第一图像进行拍照,同时云台拍摄转置上的握纸手臂自动对纸张进行随机折叠,模拟出人工采集图片的效果。
在步骤S130中,对于每个第二图像,根据文字标记,确定文字内容的文字坐标。
在一些实施例中,对于每个第二图像,根据文字标记,确定文字内容的文字坐标包括如下步骤。
首先,对于每个第二图像,利用关键点检测算法,提取文字标记。在一些实施例中,文字内容中的每个文字或每行文字的不同文字标记使用不同的颜色标记。根据文字标记的颜色特征和形状特征中的至少一种,利用关键点检测算法,提取文字标记。
例如,对图2所示的某一行文字,利用关键点检测算法,使用红色特征和圆形形状特征提取文字标记点211,使用绿色特征和圆形形状特征提取文字标记点212,使用蓝色特征和圆形形状特征提取文字标记点213,使用黄色特征和圆形形状特征提取文字标记线段214。利用关键点检测算法,使用红色特征和线段特征提取文字标记线段221,使用绿色特征和线段特征提取文字标记线段222,使用蓝色特征和线段特征提取文字标记线段223,使用黄色特征和线段特征提取文字标记线段224。
根据文字标记的位置坐标,确定文字内容的文字坐标。在提取到文字标记点的情况下,将文字标记点的位置坐标,确定为文字内容的文字坐标。在无法提取到文字标记点的情况下,将文字标记线段的交点的位置坐标,确定为文字内容的文字坐标。例如,文字标记线段的位置坐标使用线段的起点的位置坐标和终点的位置坐标表示。
在一些实施例中,文字标记包括第一文字标记和第二文字标记。第一文字标记用于标记文字内容中每个文字的左上角位置、左下角位置、右上角位置和右下角位置。第二文字标记用于标记文字内容中每行文字的左上角位置、左下角位置、右上角位置和右下角位置。
在一些实施例中,文字坐标包括第一文字坐标和第二文字坐标。第一文字坐标为文字内容中每个文字的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标。第二文字坐标为文字内容中每行文字的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标。
根据文字标记,可以确定每个文字或每行文字的四个位置。四个位置的位置坐标即为对应的文字坐标。
在步骤S140中,对于每个第二图像,去除文字标记,得到第三图像。在一些实施例中,对于每个第二图像,去除所述文字标记,得到第三图像包括如下步骤。
首先,提取每个第二图像的背景。例如,背景包括背景色或背景纹理。
然后,使用背景替换文字标记。例如,在背景为背景色的情况下,利用颜色填充算法,将文字标记替换为背景色。
在一些实施例中,文字标记为半径为r且圆心坐标为(x,y)的圆点, r大于0,提取每个第二图像的背景包括如下步骤。
利用公式(x′,y′)=(max(1,x-r-p),max(1,y-r-p))计算所述背景的坐标,其中,(x′,y′)为所述背景的坐标,p为预设偏移量,p 大于0。例如,p设置为5。max(1,x-r-p)表示在1和x-r-p中取最大值。这种方式可以避免提取的背景超过第二图像的范围,导致程序出错。应当理解,这里是以第二图像的左上角为坐标原点,从坐标原点向右为x轴方向,从坐标原点向下为y轴方向。
在步骤S150中,将文本、文字坐标和第三图像,确定为训练数据,用于训练光学字符识别OCR模型。
通过本公开的生成训练数据的方法,模拟现实场景,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的 OCR模型识别真实图像的准确性。另外,本公开的生成训练数据的方法,能够快速合成训练数据,减少人力投入,且可直接得到文字坐标,达到自动标注的目的,提高了生成训练数据的效率,进而提高了 OCR模型的训练效率。
图3示出根据本公开一些实施例的生成训练数据的装置。
如图3所示,生成训练数据的装置3包括获取模块31、拍摄模块32、第一确定模块33、去除模块34、第二确定模块35。
获取模块31被配置为获取包括文字内容的第一图像和与所述文字内容对应的文本,所述第一图像包括文字标记,所述文字标记用于标记所述文字内容的位置,例如执行如图1所示的步骤S110。
拍摄模块32被配置为在不同场景条件下,自动对所述第一图像进行拍摄,得到多个第二图像,每个第二图像包括所述文字标记,例如执行如图1所示的步骤S120。
第一确定模块33被配置为对于每个第二图像,根据所述文字标记,确定所述文字内容的文字坐标,例如执行如图1所示的步骤S130。
去除模块34被配置为对于每个第二图像,去除所述文字标记,得到第三图像,例如执行如图1所示的步骤S140。
第二确定模块35被配置为将所述文本、所述文字坐标和所述第三图像,确定为训练数据,用于训练光学字符识别OCR模型,例如执行如图1所示的步骤S150。
图4示出根据本公开一些实施例的生成训练数据的装置的框图。
如图4所示,生成训练数据的装置4包括存储器41;以及耦接至该存储器41的处理器42,存储器41用于存储执行生成训练数据的方法对应实施例的指令。处理器42被配置为基于存储在存储器41中的指令,执行本公开中任意一些实施例中的生成训练数据的方法。
图5示出用于实现本公开一些实施例的计算机系统的框图。
如图5所示,计算机系统50可以通用计算设备的形式表现。计算机系统50包括存储器510、处理器520和连接不同系统组件的总线500。
存储器510例如可以包括系统存储器、非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader) 以及其他程序等。系统存储器可以包括易失性存储介质,例如随机存取存储器(RAM)和/或高速缓存存储器。非易失性存储介质例如存储有执行生成训练数据的方法中的至少一种的对应实施例的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。
处理器520可以用通用处理器、数字信号处理器(DSP)、应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如判断模块和确定模块的每个模块,可以通过中央处理器(CPU)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。
总线500可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构 (MCA)总线、外围组件互连(PCI)总线。
计算机系统50还可以包括输入输出接口530、网络接口540、存储接口550等。这些接口530、540、550以及存储器510和处理器520 之间可以通过总线500连接。输入输出接口530可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口540为各种联网设备提供连接接口。存储接口550为软盘、U盘、SD卡等外部存储设备提供连接接口。
这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。
这些计算机可读程序指令也可存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。
本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
通过上述实施例中的生成训练数据的方法及装置、计算机可存储介质,,模拟现实场景,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
至此,已经详细描述了根据本公开的生成训练数据的方法及装置、计算机可存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。