文本检测算法的性能测试方法、装置、设备及存储介质与流程

文档序号:20780847发布日期:2020-05-19 21:13阅读:151来源:国知局
文本检测算法的性能测试方法、装置、设备及存储介质与流程

本申请涉及文本识别技术领域,尤其涉及一种文本检测算法的性能测试方法、装置、设备及存储介质。



背景技术:

ocr(opticalcharacterrecognition,光学字符识别)是通过扫描等光学输入方式将各种证件、票据、报刊、书籍、文稿及其它印刷品的文字转化为图像信息,再利用文字识别技术将图像信息转化为可以使用的计算机输入技术,在一套完整的ocr算法实施流程中通常包含多个步骤,典型的步骤包括:图像预处理、文本检测以及文字识别等,其中影响识别准确率的步骤为文本检测和文字识别,文本检测是检测文本的所在位置、范围及其布局,包括版面分析和文字行检测等,然后对检测到的包含文字的文本框图片进行文字识别,由此可以看出文本检测的准确率影响着整个ocr算法实施流程的识别准确率,所以针对文本检测算法的性能测试显得尤为重要。



技术实现要素:

本申请所要解决的技术问题在于,提供一种文本检测算法的性能测试方法、装置、设备及存储介质,能够在不改动文本识别模型源代码的情况下,对文本识别模型中的文本检测算法的性能进行测试,基于性能测试结果调整文本检测算法,从而可以提高单层文本检测算法的准确率,同时也提高了整个文本识别模型的准确率。

为了解决上述技术问题,一方面,本申请提供了一种文本检测算法的性能测试方法,所述方法包括:

将目标代码注入到文本识别模型中;所述文本识别模型包括用于基于待测试文本检测算法进行文本检测的文本检测层;所述目标代码包括用于提取所述文本检测层输出信息的代码;

获取目标对象样本,对所述目标对象样本中的各目标对象进行文本信息标注,得到与各目标对象对应的文本标注信息;

将各目标对象依次输入到已注入所述目标代码的文本识别模型中,基于所述目标代码提取与各目标对象对应的文本检测信息;

基于各目标对象的文本检测信息以及各目标对象的文本标注信息,生成对所述待测试文本检测算法的性能测试结果。

另一方面,本申请提供了一种文本检测算法的性能测试装置,所述装置包括:

目标代码注入模块,用于将目标代码注入到文本识别模型中,所述目标代码包括用于提取所述文本检测层输出信息的代码;

目标对象样本获取模块,用于获取目标对象样本,对所述目标对象样本中的各目标对象进行文本信息标注,得到与各目标对象对应的文本标注信息;

文本检测信息提取模块,用于将各目标对象依次输入到已注入所述目标代码的文本识别模型中,基于所述目标代码提取与各目标对象对应的文本检测信息;

测试结果生成模块,用于基于各目标对象的文本检测信息以及各目标对象的文本标注信息,生成对所述待测试文本检测算法的性能测试结果。

另一方面,本申请提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行如上述的文本检测算法的性能测试方法。

另一方面,本申请提供了一种计算机存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行如上述的文本检测算法的性能测试方法。

实施本申请实施例,具有如下有益效果:

本申请通过将目标代码注入到文本识别模型中,所述目标代码包括用于提取所述文本检测层输出信息的代码;对所述目标对象样本中的各目标对象进行文本信息标注,得到目标对象文本标注信息;将各目标对象依次输入到已注入所述目标代码的文本识别模型中,基于所述目标代码提取与各目标对象对应的文本检测信息;基于各目标对象的文本检测信息和文本标注信息,生成对待测试文本检测算法的性能测试结果。本申请能够在不改动文本识别模型源代码的情况下,对文本识别模型中的文本检测算法的性能进行测试,基于性能测试结果调整文本检测算法,从而可以提高单层文本检测算法的准确率,同时也提高了整个文本识别模型的准确率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。

图1是本申请实施例提供的实施环境示意图;

图2是本申请实施例提供的一种文本检测算法的性能测试方法流程图;

图3是本申请实施例提供的一种目标对象的文本标注方法流程图;

图4是本申请实施例提供的一种文本检测信息提取方法流程图;

图5是本申请实施例提供的一种文本检测算法的性能测试结果生成方法流程图;

图6是本申请实施例提供的一种位置信息还原方法流程图;

图7是本申请实施例提供的一种性能测试结果计算方法流程图;

图8是本申请实施例提供的另一种文本检测算法的性能测试结果生成方法流程图;

图9是本申请实施例提供的示例流程示意图;

图10是本申请实施例提供的中间结果图片文件格式示意图;

图11是本申请实施例提供的一种文本检测算法的性能测试装置示意图;

图12是本申请实施例提供的一种设备结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先对本申请实施例中涉及的相关术语做以下解释:

aop:面向切面编程,对业务处理过程中的切面进行提取,动态地将代码切入到指定的方法、位置上。

文本检测:在ocr领域中,文本检测是场景文本识别的前提条件,要解决的问题是如何在杂乱无序、千奇百怪的复杂场景中准确地定位出文字所匹配的文本框的位置。

交并比(intersectionoverunion,iou):是模型所预测的检测框和真实的检测框的交集和并集之间的比例,预测框和真实框重叠的区域就是交集区域,预测框和真实框的总面积区域就是并集框,使用iou看检测是否正确需要设定一个阈值,最常用的阈值是0.5(可根据实际情况自定义阀值),即如果iou>0.5,则认为是真实的检测(truedetection),否则认为是错误的检测(falsedetection)。

opencv:是一个跨平台计算机视觉库,可以运行在linux、windows、android和macos操作系统上,由一系列c函数和少量c++类构成,同时提供了python、ruby、matlab等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

请参阅图1,其示出了一种应用场景示意图,该环境中可包括:至少一个用户终端110和服务器120,所述用户终端110和所述服务器120可通过网络进行数据通信。具体地,所述用户终端110向服务器120提交文本检测算法的性能测试请求,服务器120接收所述性能测试请求,并获取相关性能测试所需要的数据,对文本识别模型中的文本检测算法进行性能测试,生成性能测试结果。

所述用户终端110可以基于浏览器/服务器模式(browser/server,b/s)或客户端/服务器模式(client/server,c/s)与服务器120进行通信。所述用户终端110可以包括:智能手机、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、车载终端、服务器等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。本发明实施例中的用户终端110上运行的操作系统可以包括但不限于安卓系统、ios系统、linux、windows等。

所述服务器120与用户终端110可以通过有线或者无线建立通信连接,所述服务器120可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,其中服务器可以是云端服务器。

由于文本检测算法的准确率影响着整个ocr算法实施流程的识别准确率,因此需要对文本检测算法的性能进行测试;针对现有技术中对ocr算法的性能指标测试一般为端到端的整体性能指标测试,即是通过人工或者程序合成的方式采集到大量符合业务要求的测试样本集合,编写脚本调用整个的ocr工程服务计算整体指标,而没有对ocr算法流程中的文本检测算法的性能进行单独测试的技术方案,因此,本申请实施例提供了一种文本检测算法的性能测试方法,其执行主体可以为上述图1中的服务器,具体地,请参阅图2,所述方法可包括:

s210.将目标代码注入到文本识别模型中;所述文本识别模型包括用于基于待测试文本检测算法进行文本检测的文本检测层;所述目标代码包括用于提取所述文本检测层输出信息的代码。

在将目标代码注入到文本识别模型之前还可以包括:获取文本识别模型,所述文本识别模型包括对象预处理层、文本检测层以及文字识别层;其中,所述文本检测层基于待测试文本检测算法进行文本检测。

本申请中的文本识别模型即ocr算法模型,是指能够对各种证件、票据、报刊、书籍、文稿及其它印刷品的文字进行识别,并转化为可使用的计算机输入的模型。

在基于文本识别模型进行识别时,首先通过对象预处理层对通过扫描等光学输入方式得到的包含文字信息的图片进行预处理,这里的预处理方式包括对包含文字信息的图片进行灰度化、二值化、几何变换、畸变校正、去除模糊、图像增强和光线校正,以及行、字切分,平滑,规范化等;将经过预处理之后的图片送入到文本检测层,文本检测层采用待测试文本检测算法检测文本所在位置、范围及其布局,包括版面分析和文字行检测;将检测到的包含文字的文本框图片送入文字识别层进行文字识别。

本申请实施例中的目标代码是通过面向切面编程aop技术注入到文本识别模型中的,测试人员可根据具体的测试要求,注入自定义的规则代码,从而使得测试人员可通过注入的目标代码产生的日志或者其他输出文件来达到提取文本检测算法输出值的目的。

s220.获取目标对象样本,对所述目标对象样本中的各目标对象进行文本信息标注,得到与各目标对象对应的文本标注信息。

所述目标对象具体可以是上述的各种证件、票据、报刊、书籍、文稿及其它印刷品中的一种,所述目标对象是原始目标对象,即没有进行任何处理的对象;从而这里是对原始目标对象进行文本框标注,对于各原始目标对象的文本标注信息可看成是各目标对象的源标签,可作为后续与检测处理之后得到的检测信息进行比较的基础,具体地,请参阅图3,其示出了一种目标对象的文本标注方法,所述方法可包括:

s310.确定每个目标对象包含的文本区域,对每个文本区域进行标注得到相应的文本框。

所述文本区域可以是包含文字信息的相关区域,在所述目标对象中处于不同行的文字可以看成是不同的区域,对不同的文本区域进行标注从而得到相应的文本框。

s320.确定所述目标对象中各文本框的源位置信息。

以原始目标对象是证件为例,直接以获取的各证件的左上角为原点,建立坐标系,从而可以得到步骤s310中每项证件中的每个文本框在相应坐标系中的位置信息,该位置信息便可以看成是每项证件中的每个文本框在相应证件中的源位置信息。具体地,对于每个文本框的源位置信息,可以通过文本框的四个顶点的坐标值来进行确定,即每一个文本框的位置信息可由四个点的坐标值来唯一标识。

s330.将与所述目标对象对应的各文本框的源位置信息作为所述目标对象的文本标注信息。

每个目标对象中各文本框的源位置信息便可作为所述目标对象的文本标注信息。

通过上述图3所示的目标对象的文本标注方法,能够为每个原始目标对象中包含的所有文本框进行位置信息标注,该位置标注信息可作为原始目标对象的标签信息,可作为后续与经过处理之后得到的信息进行比较的基础。

s230.将各目标对象依次输入到已注入所述目标代码的文本识别模型中,基于所述目标代码提取与各目标对象对应的文本检测信息。

对于已注入所述目标代码的文本识别模型,需要重新编译以及运行,具体地,请参阅图4,其示出了一种文本检测信息提取方法,所述方法可包括:

s410.对已注入所述目标代码的文本识别模型进行编译,生成可执行模型。

s420.将各目标对象依次作为所述可执行模型的输入,运行所述可执行模型。

s430.基于所述可执行模型中的目标代码,在所述文本检测层的输出端提取与各目标对象对应的文本检测信息。

通过上述对注入目标代码的文本识别模型进行编译以及运行,并基于目标代码提取到了运行所述模型之后文本检测层的输出信息,即实现了在不修改原模型代码的基础上,通过注入目标代码能够实现在预设注入点执行预设操作。

s240.基于各目标对象的文本检测信息以及各目标对象的文本标注信息,生成对所述待测试文本检测算法的性能测试结果。

本申请实施例中的文本检测信息为基于所述待测试文本检测算法得到的文本框的检测位置信息,所述文本框的检测位置信息为检测到的文本框在经过所述对象预处理层之后的已处理对象中的位置信息,相应地,请参阅图5,其示出了一种文本检测算法的性能测试结果生成方法,所述方法可包括:

s510.对于经过所述对象预处理层处理之后的每个已处理对象,基于所述已处理对象中各文本框的检测位置信息进行位置信息还原,得到所述已处理对象中各文本框的还原位置信息。

这里之所以需要对位置信息进行还原是因为已处理对象中各文本框的检测信息位置是各文本框在已处理对象中的位置信息,而已处理对象是对目标对象进行预处理之后得到,即已处理对象相对于目标对象已经发生了变化,所以各文本框在已处理对象中的位置信息并不是各文本框在目标对象中的位置,为了将已处理对象中各文本框的位置信息与目标对象的各文本框的源位置信息进行比较,需要先将已处理对象中各文本框的检测位置信息还原为各文本框在目标对象中的位置,从而得到了已处理对象中各文本框的还原位置信息。

s520.确定所述已处理对象对应的目标对象,获取所述目标对象中各文本框的源位置信息。

由于目标对象与已处理对象存在对应关系,可以根据已处理对象确定相应的目标对象,并获取所述目标对象中各文本框的源位置信息。

s530.基于预设方法、所述已处理对象中各文本框的还原位置信息以及所述目标对象中各文本框的源位置信息进行计算,得到所述待测试文本检测算法的性能测试结果。

对于每个已处理对象,在得到所述已处理对象中每个文本框的还原位置信息以及相应目标对象中每个文本框的源位置信息,通过预设的处理方法,得到对待测试文本检测算法的性能测试结果,具体的预设方法实现过程可参阅图7所示的内容。

对于上述步骤s510中的位置信息还原过程具体可参阅图6,其示出了一种位置信息还原方法,所述方法可包括:

s610.基于所述对象预处理层中的对象预处理方法,确定逆向对象预处理方法。

通过对象预处理层将目标对象处理为已处理对象,其对应的方法是对象预处理方法,当需要进行还原时,则是对象预处理方法的逆过程,需要确定逆向对象预处理方法。逆向对象预处理方法是与对象预处理方法相反的处理过程,对象预处理方法用于将目标对象处理为已处理对象,相应地,逆向对象预处理方法用于将已处理对象还原为目标对象。例如,采用对象预处理方法将所述目标对象的原始图像处理为已处理图像,可采用逆向对象预处理方法将所述已处理图像还原为目标对象的原始图像。

s620.基于所述逆向对象预处理方法以及每个已处理对象中的各文本框的检测位置信息,计算每个已处理对象中的各文本框在相应目标对象中的还原位置信息。

根据逆向对象预处理方法,将每个预处理对象中的各文本框的位置信息还原各文本框在目标对象中的位置信息。本申请实施例中,可基于相同的标号规则对各目标对象中的各文本框以及已处理对象中的各文本框进行标号,这里目标对象中的各文本框是指在标注源位置信息时所确定的文本框,已处理对象中的各文本框是指通过文本检测算法检测到的各文本框;具体的标号规则可以为:以各目标对象或者已处理对象的左上角为起点,按照从左到右,从上到下的顺序对其中的文本框进行依次标号,从而使得每个文本框都有了相应的标号;对于上述步骤s530中性能测试结果的具体生成过程可参阅图7,其示出了一种性能测试结果计算方法,所述方法可包括:

s710.遍历各已处理对象。

s720.确定与当前已处理对象对应的当前目标对象。

s730.基于所述当前已处理对象以及当前目标对象中具有相同标号的文本框,生成至少一项文本框对。

将每个已处理对象中的各文本框与相应目标对象中的文本框进行组合,具体的组合方式是将具有相同的标号的两个文本框进行组合,得到至少一项文本框对。

s740.在每项文本框对中,基于当前已处理对象的还原位置信息以及当前目标对象的源位置信息,计算所述文本框对中两个文本框的交并比。

这里的还原位置信息以及源位置信息具体可以是坐标值的表现形式,即对于每个文本框,其位置信息是由四个坐标值来表示的。

交并比是检测框和真实框的交集和并集之间的比值,具体地,本申请实施例中,检测框和真实框的交集即是已处理对象中的文本框与目标对象中文本框的交集区域,并集即是已处理对象中的文本框与目标对象中文本框的总面积,具体的面积计算可通过文本框的坐标值来进行计算,从而得到了这一文本框对的交并比。

对于每个目标对象的每一文本框对,均可基于上述的计算方法得到相应的文本框交并比。

s750.统计与各目标对象对应的文本框对的第一数量。

这里的第一数量是指所有目标对象的文本框对的总数量。

s760.统计所述第一数量的文本框对中所述交并比大于第一阈值的文本框对的第二数量。

根据每一文本框对的交并比的计算结果,得到交并比大于第一阈值的文本框对的数量。

s770.基于所述第一数量以及所述第二数量,生成性能测试结果。

计算交并比大于第一阈值的文本框对的数量与文本框对的总数量的比值,将所述比值作为对待测试文本检测算法的性能测试结果;也可以是计算交并比大于第一阈值的文本框对的数量与交并比小于等于第一阈值的文本框对的数量的比值,并将其作为对待测试文本检测算法的性能测试结果。根据性能测试结果,可以确定待测试文本检测算法的识别准确率,识别准确率越高,则说明文本检测算法稳定可靠,反之则认为文本检测算法准确率不高,需要继续进行文本检测模型训练以提高文本检测准确率。

上述实施过程中,当已处理对象中的文本框数量与目标对象中标注的文本框数量一致时,可基于具有相同标号的文本框生成至少一项文本框对;但是当通过文本检测层得到的已处理对象的文本框数量大于或者小于相应目标对象中标注的文本框数量时,此时可以按照从上到下,从左到右的顺序,将已处理对象中的每个文本框与目标对象中的各文本框进行循环比对,在目标对象中找到与其位置最接近的文本框生成文本框对,其余经过检测遗漏的或者多出来的文本框,可根据实际情况考虑是否需要进行重新检测或者不计入考虑。

进一步地,在实施上述文本检测算法的性能测试方法时,还可以基于目标代码对各目标对象的文本检测信息进行文本框标注,基于对标注信息的分析结果,来辅助基于交并比来对文本检测算法进行性能测试的方法,具体地,请参阅图8,其示出了另一种文本检测算法的性能测试结果生成方法,所述方法可包括:

s810.基于所述目标代码,获取经过所述对象处理层进行预处理之后的各已处理对象。

s820.基于各目标对象的文本检测信息,分别对各目标对象对应的已处理对象进行文本框标注。

s830.基于已进行文本框标注的已处理对象,生成对所述待测试文本检测算法的性能测试结果。

通过人工直接查看的方式来确定根据文本检测信息对已处理对象进行标注的结果是否合理,若已处理对象中出现画出的非文字区域的文本框,或者是很多不同类型的文字连在一起的文本框等,则认为文本检测算法在该对象中的文本检测识别出现问题,统计所有出现该问题的对象,辅助基于位置信息计算交并比的性能测试方法,从而能够进一步提升检测算法的准确率。

下面以一具体示例来说明本申请的实施过程,以证件ocr识别场景为例,其实施流程示意图请参阅图9(a)以及图9(b),相应的实施过程可以包括:

1.编写aop代码,实现对证件ocr识别流程中文本检测算法层进行输出注入控制。注入点规则要匹配到所有会影响到文本检测算法的模块,包括相应的函数、线程、进程等。

注入点内容主要包含两个部分:

(1)ocr工程代码中文本检测算法针对执行样本的识别结果输出:主要为识别的文本框位置输出,为了不影响ocr原有日志文件等,可以将这些输出结果按照一定的格式重新定义到新的输出文件,输出文件中保存可以被区分的各个样本执行过程中在文本检测算法的输出值。

(2)ocr工程代码中文本检测算法对执行样本的中间图片文件输出:通过上述(1)中识别的样本的文本框位置,通过opencv技术在图片上处理画出当前文本框位置并按照一定命名规范存储该中间图片。

具体地,通过(1)中识别的样本的文本框位置在ocr流程中针对已经预处理后且准备送入文本检测算法模型进行识别的样本输入图片,通过opencv技术在图片上处理画出当前文本框位置,并通过一定规则保存当前画好文本框位置的中间结果图片文件,该图片文件用来后续进行人工辅助查看文本检测算法功能效果是否存在问题,文本框位置是否都检测正确,其中输出的中间结果图片文件格式如图10所示。

2.编译部署

将采用aop编译好的ocr工程化服务版本,部署到测试或者其他可用环境上,并运行。

3.测试执行

(1)准备符合业务场景的一定数量的测试样本,针对每个测试样本证件图片进行文本框位置标注,按照统一的存储格式生成包含有文本框标注的源标签文件。

一般采用标注软件进行人工或者脚本自动化的标注工作,生成针对每个测试样本图片的文本框标注结果,例如,对一个测试样本证件进行标注得到的标签文件内容(文本框位置)如下所示:

{"object":[{"name":"香港居民身份证","polygon":{"x1":649,"y1":63,"x2":1129,"y2":57,"x3":1133,"y3":113,"x4":649,"y4":119}},{"name":"hongkongidentitycard","polygon":{"x1":483,"y1":125,"x2":1293,"y2":117,"x3":1291,"y3":159,"x4":483,"y4":167}},{"name":"cn_name","polygon":{"x1":193,"y1":199,"x2":451,"y2":197,"x3":449,"y3":263,"x4":193,"y4":269}},{"name":"en_name","polygon":{"x1":193,"y1":281,"x2":545,"y2":273,"x3":545,"y3":325,"x4":193,"y4":327}},{"name":"num","polygon":{"x1":585,"y1":365,"x2":1085,"y2":357,"x3":1085,"y3":407,"x4":585,"y4":413}},{"name":"出生日期dateofbirth","polygon":{"x1":-82,"y1":573}},{"name":"birth","polygon":{"x1":585,"y1":493,"x2":":989,"y2":493,"x3":989,"y3":533,"x4":579,"y4":541}},{"name":"sex","polygon":{"x1":589,"y1":553,"x2":941,"y2":549,"x3":941,"y3":597":"签发日期dateofissue","polygon":{"x1":585,"y1":629,"x2":657,"y2":629,"x3":657,"y3":673,"x4":587,"y4":677}},{"name":"issue_datel","polygon":{"x1":585,"y1":693,"x2":1009,"y2":693,"x3":1009,"y3":733,"x4":585,"y4":741}},{"name":"issue_date2","polygon"1":759,"x2":833,"y2":759,"x3":833,"y3":809,"x4":587,"y4":809}},{"name":"id","polygon":{"x1":581,"y1":861,"x2":947,"y2":861,"x3":949,"y3":925,"x4":581,"y4":927}}]}。

例如,对于{"name":"香港居民身份证","polygon":{"x1":649,"y1":63,"x2":1129,"y2":57,"x3":1133,"y3":113,"x4":649,"y4":119}}这样一组数据,其对应一个文本框信息,具体含义为:文本框中的文字为“香港居民身份证”,可通过四个坐标点来表示文本框的位置:("x1":649,"y1":63)、("x2":1129,"y2":57)、("x3":1133,"y3":113)以及("x4":649,"y4":119)。

(2)编写测试执行脚本调用aop插装后的ocr工程服务,批量测试测试样本。

4.文本检测算法输出结果提取

(1)针对ocr工程服务测试执行期间产生的文件检测算法输出结果进行脚本提取,生成测试样本对应的中间结果标签文件。

文本检测模型算法针对样本识别结果输出文件中提取每个样本的模型结果输出值,即每个样本经过文本检测算法后识别后输出的文本框的位置坐标,并按照一定的规则存储为中间结果标签文件。

(2)脚本提取通过opencv技术产生的已经画好文本框位置的中间图片文件。

5.文本检测算法验证

验证过程包含:

(1)针对步骤4中提取产生的中间结果标签文件中样本的坐标位置,编写脚本,利用数学公式和opencv技术还原成针对样本原图的坐标位置点。

(2)针对源标签文件文本框坐标位置和还原后的坐标位置,脚本循环遍历比较每张样本的每个文本框,利用文本框位置的面积来计算iou交并比,通过文本框面积的交并比值是否大于某个阈值来判断文本框是否检测正确。

(3)脚本统计所有样本所有文本框检测正确与否,利用数学公式计算出文本检测算法准确率指标,从而来判断算法的优劣。

(4)通过收集查看aop插装的opencv代码生成的中间结果图片文件,进一步辅助定位文本检测算法功能和准确率精度问题。

其中上述步骤5中的两种文本检测算法的验证方式具体为:

a.脚本计算iou交并比

针对测试样本,在获取到源标签文件和中间结果标签文件后,通过编写脚本、进行一定的预处理坐标还原(因为中间结果标签文件中获取到的文本框位置坐标不一定是针对测试样本原图的,很大程度上是原图经过一定预处理后的图片位置坐标,所以需要根据ocr流程中的图片预处理过程,利用数学公式或者是opencv技术逆向的将中间结果标签文件中的坐标还原到针对原图片文本框坐标位置),然后通过循环遍历,按照指定的计算规则,依次计算源标签文件中每个样本的每个文本框的位置坐标和还原后对应的位置坐标面积的交并比值,并设定面积的交并比值大于某个阈值,则认为文本框位置识别通过,否则认为识别不通过,然后统计所有样本的识别通过与识别不通过的比值,按照相应的计算公式计算文本检测算法准确率。文本检测识别准确率越高,则表明算法更加稳定和可靠,反之则认为算法准确率精度不够友好,需要继续训练模型提高准确率。

b.查看opencv产生的画好文本框位置的中间结果图片文件

针对测试样本,在测试执行完成后,通过aop插装的opencv代码生成的中间结果图片文件,通过人工直接查看的方式来定位文本框坐标位置是否识别准确,假设证件图片中出现画出的非文字区域的文本框、或者是很多不同类型的文字连在一起的文本框等,则认为文本检测算法在该样本上识别出现问题,统计所有这些出现问题的样本图片,辅助定位算法问题,进一步提升算法效果准确度。

上述的算法性能检测流程中采用aop技术无需改动源代码,保留源代码的设计架构,利用aop技术,针对文本检测算法,可以可控的注入各种测试想要的和算法模型有关的输出值并进行测试,从而提高文本检测算法的准确性和可靠性。采用aop的方式对ocr工程化代码进行注入,将注入代码和ocr工程化代码进行编译部署并运行,然后通过对人工或者程序采集到的一定数量的证件样本中每张样本进行图片文字文本框位置的标注,生成测试样本标签文件,然后利用脚本调用已经插入aop代码的工程服务,批量测试测试样本,从工程服务运行生成的规定好的输出日志和文件中脚本提取文本框检测算法的坐标位置输出值,并对输出值进行整理分析提取,生成文本检测算法结果输出文件,然后通过计算脚本来计算标签文件和算法结果输出文件中的文本框位置交并比值是否大于某个阀值,来验证文本框检测算法的准确率,并通过aop插装代码生成的输出图片进行功能辅助验证,一起来检测文本框检测算法的准确率和功能是否符合测试预期要求。通过上述针对证件ocr单个的文本检测算法测试方法,来提高单层文本检测算法的准确率精度,从而达到提高整体ocr效果准确率精度目的,同样的思路也可以适用于ocr整体流程中其他算法模块的验证,通过层层提高单个的算法模块精度,最终来提高整体准确率精度。

本申请能够在不改动文本识别模型源代码的情况下,对文本识别模型中的文本检测算法的性能进行测试,基于性能测试结果调整文本检测算法,从而可以提高单层文本检测算法的准确率,同时也提高了整个文本识别模型的准确率。

本实施例还提供了一种文本检测算法的性能测试装置,请参阅图11,所述装置可包括:

目标代码注入模块1110,用于获取目标代码,将所述目标代码注入到所述文本识别模型中,所述目标代码包括用于提取所述文本检测层输出信息的代码;

目标对象样本获取模块1120,用于获取目标对象样本,对所述目标对象样本中的各目标对象进行文本信息标注,得到与各目标对象对应的文本标注信息;

文本检测信息提取模块1130,用于将所述目标对象样本中的各目标对象依次输入到已注入所述目标代码的文本识别模型中,基于所述目标代码提取与各目标对象对应的文本检测信息;

测试结果生成模块1140,用于基于各目标对象的文本检测信息以及各目标对象的文本标注信息,生成对所述待测试文本检测算法的性能测试结果。

进一步地,所述目标对象样本获取模块1120包括:

第一标注模块,用于确定每个目标对象包含的文本区域,对每个文本区域进行标注得到相应的文本框;

源位置信息确定模块,用于确定所述目标对象中各文本框的源位置信息;

文本标注信息确定模块,用于将与所述目标对象对应的各文本框的源位置信息作为所述目标对象的文本标注信息。

进一步地,所述文本检测信息提取模块1130包括:

模型编译模块,用于对已注入所述目标代码的文本识别模型进行编译,生成可执行模型;

可执行模型运行模块,用于将各目标对象依次作为所述可执行模型的输入,运行所述可执行模型;

第一提取模块,用于基于所述可执行模型中的目标代码,在所述文本检测层的输出端提取与各目标对象对应的文本检测信息。

进一步地,所述文本检测信息为基于所述待测试文本检测算法得到的文本框的检测位置信息,所述文本框的检测位置信息为检测到的文本框在经过所述对象预处理层之后的已处理对象中的位置信息;相应地,所述测试结果生成模块1140包括:

位置信息还原模块,用于对于经过所述对象预处理层处理之后的每个已处理对象,基于所述已处理对象中各文本框的检测位置信息进行位置信息还原,得到所述已处理对象中各文本框的还原位置信息;

源位置信息获取模块,用于确定所述已处理对象对应的目标对象,获取所述目标对象中各文本框的源位置信息;

第一性能测试结果生成模块,用于基于预设方法、所述已处理对象中各文本框的还原位置信息以及所述目标对象中各文本框的源位置信息进行计算,得到所述待测试文本检测算法的性能测试结果。

进一步地,所述位置信息还原模块包括:

逆向对象预处理方法确定模块,用于基于所述对象预处理层中的对象预处理方法,确定逆向对象预处理方法;

还原位置信息计算模块,用于基于所述逆向对象预处理方法以及每个已处理对象中的各文本框的检测位置信息,计算每个已处理对象中的各文本框在相应目标对象中的还原位置信息。

进一步地,本申请实施例中基于相同的规则对各目标对象中的各文本框,以及各已处理对象中的各文本框进行标号;相应地,所述性能测试结果生成模块包括:

遍历模块,用于遍历各已处理对象;

当前目标对象确定模块,用于确定与当前已处理对象对应的当前目标对象;

文本框对生成模块,用于基于所述当前已处理对象以及当前目标对象中具有相同标号的文本框,生成至少一项文本框对;

交并比计算模块,用于在每项文本框对中,基于当前已处理对象的还原位置信息以及当前目标对象的源位置信息,计算所述文本框对中两个文本框的交并比;

第一统计模块,用于统计与各目标对象对应的文本框对的第一数量;

第二统计模块,用于统计所述第一数量的文本框对中所述交并比大于第一阈值的文本框对的第二数量;

第一计算模块,用于基于所述第一数量以及所述第二数量,生成性能测试结果。

进一步地,所述装置还包括:

已处理对象获取模块,用于基于所述目标代码,获取经过所述对象处理层进行预处理之后的各已处理对象;

第二标注模块,用于基于各目标对象的文本检测信息,分别对各目标对象对应的已处理对象进行文本框标注;

第二性能测试结果生成模块,用于基于已进行文本框标注的已处理对象,生成对所述待测试文本检测算法的性能测试结果。

上述实施例中提供的装置可执行本申请任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。

本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如本实施例上述任一方法。

本实施例还提供了一种设备,其结构图请参见图12,该设备1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessingunits,cpu)1222(例如,一个或一个以上处理器)和存储器1232,一个或一个以上存储应用程序1242或数据1244的存储介质1230(例如一个或一个以上海量存储设备)。其中,存储器1232和存储介质1230可以是短暂存储或持久存储。存储在存储介质1230的程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对设备中的一系列指令操作。更进一步地,中央处理器1222可以设置为与存储介质1230通信,在设备1200上执行存储介质1230中的一系列指令操作。设备1200还可以包括一个或一个以上电源1226,一个或一个以上有线或无线网络接口1250,一个或一个以上输入输出接口1258,和/或,一个或一个以上操作系统1241,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。本实施例上述的任一方法均可基于图12所示的设备进行实施。

本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。

本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。

基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。

以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1