生成训练数据的方法及装置
技术领域
本公开涉及机器学习领域,特别涉及生成训练数据的方法及装置、计算机可存储介质。
背景技术
光学字符识别(Optical Character Recognition,OCR)是指对含有文字内容的图像进行分析识别处理,获取文字内容及版面信息的过程。目前,大多数OCR算法都使用了深度学习技术,需要大量的训练数据作为支撑。因此,训练数据对于OCR算法的最终性能有着至关重要的作用。
目前用于OCR算法的训练数据的生成方式有人工标注和图像合成两种。
通过人工标注的方式生成训练数据主要分为以下三个阶段。首先,标注人员需要对大量的待识别对象的样本在不同光照、角度、遮挡等条件下进行照片拍摄,获得大量的包含待识别对象的图像。然后,标注人员利用标注工具,对这些图像中的每行文字内容进行手工位置标记,并进一步对每行文字内容进行手工输入转写得到包括文字内容的文本,耗费大量的人力和时间。最后,由于ORC算法对于训练数据中的标注信息的准确性要求很高,通常还需要标注人员对标注信息进行至少一轮的校对,才能保证训练数据的质量。
通过人工标注的方式生成训练数据具有人工标注耗时长、标注成本高且存在误差。针对此技术问题,提出了一种通过图像合成的方式生成训练数据的方法。具体地,利用脚本程序,将待识别对象随机合成在背景图片中,获取待识别对象的文字区域信息和文字内容信息,从而得到包括标注信息的训练数据。或利用图像处理软件PhotoShop提供的JavaScript接口,对素材进行解析和批量修改,生成包括标注信息的训练数据。图像合成的方式本质上是一种仿真数据的生成方法。
发明内容
发明人认为:相关技术中,生成的训练数据不符合现实场景规律,利用生成的训练数据训练得到的OCR模型识别真实图像的准确性较差。
针对上述技术问题,本公开提出了一种解决方案,在不同的现实场景条件下,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
根据本公开的第一方面,提供了一种生成训练数据的方法,包括:获取包括文字内容的内容文档、与所述文字内容对应的文本以及每行文字内容在所述内容文档中的位置坐标;根据每行文字内容在所述内容文档中的位置坐标,生成包括行标记的标记文档,其中,一个行标记对应一行文字内容,一个内容文档对应一个标记文档;在不同场景条件下,自动对所述内容文档和所述标记文档分别进行拍摄,得到多组拍摄图像,其中,每组拍摄图像包括与所述内容文档对应的第一拍摄图像和与所述标记文档对应的第二拍摄图像,且对应一种场景条件;对于每种场景条件,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标;将每种场景条件下的文本、各行文字内容的位置坐标和第一拍摄图像,确定为训练数据,用于训练光学字符识别OCR模型。
在一些实施例中,自动对所述内容文档和所述标记文档分别进行拍摄包括:自动对包括所述内容文档的屏幕和包括所述标记文档的屏幕分别进行拍摄。
在一些实施例中,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标包括:确定所述屏幕在第二拍摄图像中的位置坐标;对第二拍摄图像进行预处理,得到包括所述屏幕的最小区域图像;确定每个行标记在所述最小区域图像中的位置坐标;根据所述屏幕在第二拍摄图像中的位置坐标和每个行标记在所述最小区域图像中的位置坐标,确定每行文字内容在第二拍摄图像中的位置坐标。
在一些实施例中,对第二拍摄图像进行预处理,得到包括所述屏幕的最小区域图像包括:根据所述屏幕在第二拍摄图像中的位置坐标,确定所述屏幕的最小外接矩形区域;对第二拍摄图像进行裁剪,保留所述最小外接矩形区域,得到最小区域图像。
在一些实施例中,根据所述屏幕在第二拍摄图像中的位置坐标和每个行标记在所述最小区域图像中的位置坐标,确定每行文字内容在第二拍摄图像中的位置坐标包括:根据所述屏幕在第二拍摄图像中的位置坐标,将每个行标记在所述最小区域图像中的位置坐标转换为所述每个行标记在第二拍摄图像中的位置坐标,作为每行文字内容在第二拍摄图像中的位置坐标。
在一些实施例中,确定所述屏幕在第二拍摄图像中的位置坐标包括:利用目标检测算法,确定所述屏幕在第二拍摄图像中的位置坐标。
在一些实施例中,确定每个行标记在所述最小区域图像中的位置坐标包括:利用关键点检测算法,确定每个行标记在所述最小区域图像中的位置坐标。
在一些实施例中,所述场景条件包括光照、角度、距离和遮挡中的至少一种。
在一些实施例中,所述位置坐标包括左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标。
在一些实施例中,根据每行文字内容在所述内容文档中的位置坐标,生成包括行标记的标记文档包括:根据每行文字内容在所述内容文档中的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标,确定每行文字内容的行区域;对每个行区域进行颜色填充,得到每个行标记,从而生成包括行标记的标记文档。
在一些实施例中,获取包括文字内容的内容文档、与所述文字内容对应的文本以及每行文字内容在所述内容文档中的位置坐标包括:利用文档合成算法,获取包括文字内容的内容文档、与所述文字内容对应的文本以及每行文字内容在所述内容文档中的位置坐标。
在一些实施例中,所述屏幕包括投影屏幕。
根据本公开的第二方面,提供了一种生成训练数据的装置,包括:获取模块,被配置为获取包括文字内容的内容文档、与所述文字内容对应的文本以及每行文字内容在所述内容文档中的位置坐标;生成模块,被配置为根据每行文字内容在所述内容文档中的位置坐标,生成包括行标记的标记文档,其中,一个行标记对应一行文字内容,一个内容文档对应一个标记文档;拍摄模块,被配置为在不同场景条件下,自动对所述内容文档和所述标记文档分别进行拍摄,得到多组拍摄图像,其中,每组拍摄图像包括与所述内容文档对应的第一拍摄图像和与所述标记文档对应的第二拍摄图像,且对应一种场景条件;第一确定模块,被配置为对于每种场景条件,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标;第二确定模块,被配置为将每种场景条件下的文本、各行文字内容的位置坐标和第一拍摄图像,确定为训练数据,用于训练光学字符识别OCR模型。
根据本公开第三方面,提供了一种生成训练数据的装置,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令,执行上述任一实施例所述的生成训练数据的方法。
根据本公开的第四方面,一种计算机可存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任一实施例所述的生成训练数据的方法。
在上述实施例中,在不同现实场景条件下,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1示出根据本公开一些实施例的生成训练数据的方法的流程图;
图2示出根据本公开一些实施例的内容文档的示意图;
图3示出根据本公开一些实施例的与图2所示的内容文档对应的标记文档的示意图;
图4示出根据本公开一些实施例的利用拍摄装置在不同场景条件下自动对内容文档和标记文档分别进行拍摄的流程图;
图5示出根据本公开一些实施例的与图2所示的内容文档对应的第一拍摄图像的示意图;
图6示出根据本公开一些实施例的与图3所示标记文档对应的第二拍摄图像的示意图;
图7示出根据本公开一些实施例的在由屏幕演示内容文档和标记文档的情况下,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标的流程图;
图8示出了根据本公开一些实施例的图6所示的第二拍摄图像中的投影屏幕的最小外接矩形区域的示意图;
图9示出了根据本公开一些实施例的对图8所示的第二拍摄图像进行裁剪得到的最小区域图像的示意图;
图10示出根据本公开一些实施例的利用关键点检测算法确定的图9所示的最小区域图像中的每个行标记的关键点的示意图;
图11示出根据本公开一些实施例的生成训练数据的装置的框图;
图12示出根据本公开另一些实施例的生成训练数据的装置的框图;
图13示出用于实现本公开一些实施例的计算机系统的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1示出根据本公开一些实施例的生成训练数据的方法的流程图。
如图1所示,生成训练数据的方法包括步骤S110-步骤S150。
在步骤S110中,获取包括文字内容的内容文档、与文字内容对应的文本以及每行文字内容在内容文档中的位置坐标。例如,内容文档可以是图像格式或文本格式。
具体地,利用文档合成算法,获取包括文字内容的内容文档、与文字内容对应的文本以及每行文字内容在内容文档中的位置坐标。利用文档合成算法可以大规模自动化地生成包括文字内容的内容文档、与文字内容对应的文本以及每行文字内容在内容文档中的位置坐标,节省了人力成本,提高了生成训练数据的效率。例如,文档合成算法可以是脚本程序或封装函数。
下面将结合图2对本公开一些实施例中的内容文档进行示意性地描述。
图2示出根据本公开一些实施例的内容文档的示意图。
如图2所示,内容文档包括多行文字内容。图2中的内容文档以两栏的阅读模式进行展示。
返回图1,在步骤S120中,根据每行文字内容在内容文档中的位置坐标,生成包括行标记的标记文档。其中,一个行标记对应一行文字内容,一个内容文档对应一个标记文档。例如,位置坐标可以包括左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标。应当理解,本公开提及的位置坐标都可以是该含义。
例如,通过如下方式实现根据每行文字内容在内容文档中的位置坐标,生成包括行标记的标记文档。
首先,根据每行文字内容在内容文档中的左上角位置坐标、左下角位置坐标、右上角位置坐标和右下角位置坐标,确定每行文字内容的行区域。例如,行区域可以是覆盖每行文字内容的最小矩形区域。
然后,对每个行区域进行颜色填充,得到每个行标记,从而生成包括行标记的标记文档。例如,行标记可以是文本行掩膜(Mask)。
下面将结合图3对本公开一些实施例中的与图2所示的内容文档对应的标记文档进行示意性地描述。
图3示出根据本公开一些实施例的与图2所示的内容文档对应的标记文档的示意图。
如图3所示,标记文档包括多个行标记,每个行标记对应于图2中的一行文字内容。例如,标记文档中的第一个行标记31与图2中左侧一栏的第一行文字内容对应。
返回图1,在步骤S130中,在不同场景条件下,自动对内容文档和标记文档分别进行拍摄,得到多组拍摄图像。其中,每组拍摄图像包括与内容文档对应的第一拍摄图像和与标记文档对应的第二拍摄图像,且对应一种场景条件。例如,场景条件包括但不限于光照、角度、距离和遮挡中的至少一种。
例如,利用拍摄装置,在不同场景条件下,自动对内容文档和标记文档分别进行拍摄。
下面将结合图4详细描述利用拍摄装置,在不同场景条件下自动对内容文档和标记文档分别进行拍摄的过程。
图4示出根据本公开一些实施例的利用拍摄装置在不同场景条件下自动对内容文档和标记文档分别进行拍摄的流程图。
如图4所示,利用拍摄装置在不同场景条件下自动对内容文档和标记文档分别进行拍摄的过程包括步骤S131-步骤S133。
在步骤S131中,拍摄装置自动设置场景条件。具体地,拍摄装置包括主控制器、摄像头、照明装置、遮挡装置等。拍摄装置的主控制器通过控制摄像头的拍摄角度和拍摄距离自动调节角度场景条件和距离场景条件,通过控制照明装置的照明角度或照明亮度自动调节光照场景条件,通过控制遮挡装置遮挡摄像头的位置自动调节遮挡条件。
在步骤S132中,在该场景条件下,对内容文档进行拍摄,得到第一拍摄图像。
在步骤S133中,在该场景条件下,对与内容文档对应的标记文档进行拍摄,得到第二拍摄图像。此时,第一拍摄图像和第二拍摄图像构成了该场景条件下的一组拍摄图像。完成步骤S133后,返回步骤S131。应当理解,这里是通过设置不同的场景条件,对内容文档和标记文档进行拍摄,得到不同场景条件下的多组拍摄图像。
在由屏幕演示内容文档和标记文档的情况下,通过自动对包括内容文档的屏幕和包括标记文档的屏幕分别进行拍摄,实现自动对内容文档和标记文档分别进行拍摄,得到第一拍摄图像和第二拍摄图像。例如,屏幕包括但不限于投影屏幕。
下面将结合图5和图6分别对本公开一些实施例中的与图2所示的内容文档对应的第一拍摄图像和与图3所示的标记文档对应的第二拍摄图像进行示意性地描述。
图5示出根据本公开一些实施例的与图2所示的内容文档对应的第一拍摄图像的示意图。
图5所示的第一拍摄图像通过利用投影装置将图2所示的内容文档投影到投影屏幕上,进而利用拍摄装置对包括图2所示的内容文档的投影屏幕进行拍摄得到。
图6示出根据本公开一些实施例的与图3所示标记文档对应的第二拍摄图像的示意图。
图6所示的第二拍摄图像通过利用投影装置将图3所示的标记文档投影到投影屏幕上,进而利用拍摄装置对包括图3所示的标记文档的投影屏幕进行拍摄得到。
图5所示的第一拍摄图像和图6所示的第二拍摄图像为在同一场景条件下的一组拍摄图像。
返回图1,在步骤S140中,对于每种场景条件,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标。例如,利用关键点检测算法,确定的每个行标记在第二拍摄图像中位置坐标,作为每行文字内容在第二拍摄图像中的位置坐标。具体地,在行区域是覆盖每行文字内容的最小矩形区域的情况下,利用关键点检测算法,检测每个最小矩形区域的左上角顶点、左下角顶点、右上角顶点和右上角顶点这四个顶点作为每行文字内容的关键点,进而确定每个最小矩形区域的四个顶点在第二拍摄图像中的位置坐标,作为每行文字内容在第二拍摄图像中的位置坐标。
下面将结合图7详细描述在由屏幕演示内容文档和标记文档的情况下,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标的具体过程。
图7示出根据本公开一些实施例的在由屏幕演示内容文档和标记文档的情况下,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标的流程图。
如图7所示,在由屏幕演示内容文档和标记文档的情况下,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标的过程包括步骤S141-步骤S144。
在步骤S141中,确定屏幕在第二拍摄图像中的位置坐标。例如,利用目标检测算法,确定屏幕在第二拍摄图像中的位置坐标。具体地,利用目标检测模型识别第二拍摄图像中的屏幕,从而确定屏幕在第二拍摄图像中的位置坐标。
在步骤S142中,对第二拍摄图像进行预处理,得到包括屏幕的最小区域图像。
例如,通过如下方式实现上述步骤S142。
首先,根据屏幕在第二拍摄图像中的位置坐标,确定屏幕的最小外接矩形区域。
下面将结合图8展示利用目标检测算法确定的图6所示的第二拍摄图像中的投影屏幕的最小外接矩形区域。
图8示出了根据本公开一些实施例的图6所示的第二拍摄图像中的投影屏幕的最小外接矩形区域的示意图。
如图8所示,利用目标检测算法,可以确定图6所示的第二拍摄图像中的投影屏幕的左上角顶点81、左下角顶点82、右上角顶点83、右上角顶点84的位置坐标,根据四个顶点的位置坐标可以确定投影屏幕的最小外接矩形区域85。
返回图7的步骤S142,确定屏幕的最小外接矩形区域后,对第二拍摄图像进行裁剪,保留最小外接矩形区域,得到最小区域图像。
下面将结合图9展示对图8所示的第二拍摄图像进行裁剪得到的最小区域图像。
图9示出了根据本公开一些实施例的对图8所示的第二拍摄图像进行裁剪得到的最小区域图像的示意图。
图9所示的最小区域图像通过对图8所示的第二拍摄图像进行裁剪,保留图8所示的最小外接矩形区域85得到。
返回图7,在步骤S143中,确定每个行标记在最小区域图像中的位置坐标。例如,利用关键点检测算法,确定每个行标记在最小区域图像中的位置坐标。
下面将结合图10详细描述利用关键点检测算法确定图9所示的最小区域图像中的每个行标记在最小区域中的位置坐标。
图10示出根据本公开一些实施例的利用关键点检测算法确定的图9所示的最小区域图像中的每个行标记的关键点的示意图。
如图10所示,利用关键点检测算法可以确定图9所示的最小区域图像中的每个行标记的关键点。例如,行标记31的关键点分别为行标记31的左上角顶点31a、左下角顶点31b、右上角顶点31c和右下角顶点31d。
返回图7,在步骤S144中,根据屏幕在第二拍摄图像中的位置坐标和每个行标记在最小区域图像中的位置坐标,确定每行文字内容在第二拍摄图像中的位置坐标。
例如,通过如下方式根据屏幕在第二拍摄图像中的位置坐标和每个行标记在最小区域图像中的位置坐标,确定每行文字内容在第二拍摄图像中的位置坐标。
根据屏幕在第二拍摄图像中的位置坐标,将每个行标记在最小区域图像中的位置坐标转换为每个行标记在第二拍摄图像中的位置坐标,作为每行文字内容在第二拍摄图像中的位置坐标。例如,以第二拍摄图像的左下角顶点为坐标原点,屏幕在第二拍摄图像中的左下角位置坐标为(a,b)。以最小区域图像的左下角顶点为坐标原点,某一行标记在最小区域图像中的左下角位置坐标为(c,d)。通过坐标转换,该行标记在第二拍摄图像中的左下角位置坐标为(a+c,b+d),即该行标记对应的一行文字内容在第二拍摄图像中的左下角位置坐标为(a+c,b+d)。其他位置坐标采用类似的方法进行坐标转换。
返回图1,在步骤S150中,将每种场景条件下的文本、各行文字内容的位置坐标和第一拍摄图像,确定为训练数据。其中,训练数据用于训练OCR模型。
本公开的生成训练数据的方法,通过在不同现实场景条件下,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。另外,本公开的生成训练数据的方法,能够实现自动得到文本和每行文字内容的位置坐标等标注数据,从而快速合成训练数据,减少了生成训练数据的时间,降低了人工标注的人力成本,提高了生成训练数据的效率和准确率,进而提高了OCR模型的训练效率
图11示出根据本公开一些实施例的生成训练数据的装置的框图。
如图11所示,生成训练数据的装置11包括获取模块111、生成模块112、拍摄模块113、第一确定模块114和第二确定模块115。
获取模块111,被配置为获取包括文字内容的内容文档、与文字内容对应的文本以及每行文字内容在内容文档中的位置坐标,例如执行如图1所示的步骤S110。
生成模块112,被配置为根据每行文字内容在内容文档中的位置坐标,生成包括行标记的标记文档,其中,一个行标记对应一行文字内容,一个内容文档对应一个标记文档,例如执行如图1所示的步骤S120。
拍摄模块113,被配置为在不同场景条件下,自动对内容文档和标记文档分别进行拍摄,得到多组拍摄图像,其中,每组拍摄图像包括与内容文档对应的第一拍摄图像和与标记文档对应的第二拍摄图像,且对应一种场景条件,例如执行如图1所示的步骤S130。
第一确定模块114,被配置为对于每种场景条件,根据第二拍摄图像中的每个行标记,确定每行文字内容在第二拍摄图像中的位置坐标,例如执行如图1所示的步骤S140。
第二确定模块115,被配置为将每种场景条件下的文本、各行文字内容的位置坐标和第一拍摄图像,确定为训练数据,用于训练光学字符识别OCR模型,例如执行如图1所示的步骤S150。
图12示出根据本公开另一些实施例的生成训练数据的装置的框图。
如图12所示,生成训练数据的装置12包括存储器121;以及耦接至该存储器121的处理器122。存储器121用于存储执行生成训练数据的方法对应实施例的指令。处理器122被配置为基于存储在存储器121中的指令,执行本公开中任意一些实施例中的生成训练数据的方法。
图13示出用于实现本公开一些实施例的计算机系统的框图。
如图13所示,计算机系统130可以通用计算设备的形式表现。计算机系统130包括存储器1310、处理器1320和连接不同系统组件的总线1300。
存储器1310例如可以包括系统存储器、非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(Boot Loader)以及其他程序等。系统存储器可以包括易失性存储介质,例如随机存取存储器(RAM)和/或高速缓存存储器。非易失性存储介质例如存储有执行生成训练数据的方法中的至少一种的对应实施例的指令。非易失性存储介质包括但不限于磁盘存储器、光学存储器、闪存等。
处理器1320可以用通用处理器、数字信号处理器(DSP)、应用专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管等分立硬件组件方式来实现。相应地,诸如判断模块和确定模块的每个模块,可以通过中央处理器(CPU)运行存储器中执行相应步骤的指令来实现,也可以通过执行相应步骤的专用电路来实现。
总线1300可以使用多种总线结构中的任意总线结构。例如,总线结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、外围组件互连(PCI)总线。
计算机系统130还可以包括输入输出接口1330、网络接口1340、存储接口1350等。这些接口1330、1340、1350以及存储器1310和处理器1320之间可以通过总线1300连接。输入输出接口1330可以为显示器、鼠标、键盘等输入输出设备提供连接接口。网络接口1340为各种联网设备提供连接接口。存储接口1350为软盘、U盘、SD卡等外部存储设备提供连接接口。
这里,参照根据本公开实施例的方法、装置和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个框以及各框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可提供到通用计算机、专用计算机或其他可编程装置的处理器,以产生一个机器,使得通过处理器执行指令产生实现在流程图和/或框图中一个或多个框中指定的功能的装置。
这些计算机可读程序指令也可存储在计算机可读存储器中,这些指令使得计算机以特定方式工作,从而产生一个制造品,包括实现在流程图和/或框图中一个或多个框中指定的功能的指令。
本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
通过上述实施例中的生成训练数据的方法及装置、计算机可存储介质,在不同的现实场景条件下,自动生成符合现实场景的训练数据,提高了利用生成的训练数据训练得到的OCR模型识别真实图像的准确性。
至此,已经详细描述了根据本公开的生成训练数据的方法及装置、计算机可存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。