智能调度多OCR识别引擎的方法及设备转让专利

申请号 : CN201811615258.7

文献号 : CN109656733B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈辉鑫周文贵

申请人 : 厦门商集网络科技有限责任公司

摘要 :

本发明涉及一种智能调度多OCR引擎的方法,包括如下步骤:调用OCR应用接口上传待识别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的消费类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别引擎数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判断该消费类型的OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对应的OCR队列,已超时,无法入队并通知用户。本发明的优点:充分利用各消费类型的OCR识别引擎的优点达到高性能高准确率的识别,有序调度各OCR识别引擎,防止队列拥挤、系统出错、引擎瘫痪。

权利要求 :

1.一种智能调度多OCR引擎的方法,其特征在于,包括如下步骤:调用OCR应用接口上传待识别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的消费类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别引擎数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判断该消费类型的OCR识别引擎是否超时的超时检测:将任意一消费类型的OCR识别引擎对应的待识别文件的预估耗时与预设的任务超时时间相比较;未超时,待识别文件进入对应的OCR队列,已超时,无法入队并通知用户;

其中,确定预估耗时的方式为:任意一消费类型的OCR识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最小任务数);确定平均耗时方式为:各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,然后取B时间周期内各OCR识别引擎的识别耗时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时值,在相同消费类型的OCR识别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引擎的最小耗时值,最后,将该最小耗时与所述预设初始值比较,若大于预设初始值,则将预设初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时作为该OCR识别引擎的平均耗时,所述A时间周期小于所述B时间周期;各所述OCR识别引擎均对应创建一任务列表,所述最小任务数取值于同一消费类型的各OCR识别引擎对应的任务列表中,任务数最少的任务列表。

2.根据权利要求1所述的一种智能调度多OCR引擎的方法,其特征在于:还创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别引擎:

获取各OCR识别引擎的取数值,各取数值为预设值;

读取各消费类型的OCR识别引擎对应的OCR队列的列表以及OCR队列的列表的版本号,确定各OCR队列中可用于创建任务的队列成员数量:若OCR队列中的待识别文件数量大于取数值,则可用于创建任务的队列成员数量等于取数值,反之,可用于创建任务的队列成员数量等于OCR队列中的待识别文件数量;

判断OCR识别引擎的负载是否超过该OCR识别引擎预设的最大承受范围,所述OCR识别引擎的负载包括OCR识别引擎的任务列表中的任务数和可用于创建任务的队列成员数量,若超过,则不再将队列成员创建为任务,若未超过,先核验读取到的OCR队列的列表版本号与当前OCR队列的列表的版本号是否一致,若一致,更新用于创建任务的队列成员的状态和当前OCR队列的列表的版本号,若不一致,则放弃创建任务;

获取更新状态的队列成员,以任务的形式插入OCR识别引擎的任务列表。

3.根据权利要求1所述的一种智能调度多OCR引擎的方法,其特征在于:各消费类型的OCR识别引擎周期性地执行所述超时检测,及时发现拥挤问题。

4.根据权利要求1所述的一种智能调度多OCR引擎的方法,其特征在于:还包括用于智能调度待识别文件的优先级设置步骤,其为以下几种设置方式中的一种或任意方式的组合:1)设置任务优先级:通过管理界面设置待识别文件的优先级,或设置用户优先级,该用户提交待识别文件时,根据用户优先级自动标记该待识别文件的优先级;2)通过管理系统配置各消费类型的OCR识别引擎对应的OCR队列优先级;3)根据任务时效时间设定优先级,在同一OCR队列中,时效时间越早的优先识别;4)根据识别类型设定优先级:在同一OCR队列中,根据待识别文件的类型确定优先级;5)根据入队时间设定优先级:入队时间越早优先级越高,在同一OCR队列中,按先入先出原则进行识别;采用多种设置方式组合时,设置各方式的优先级。

5.根据权利要求1所述的一种智能调度多OCR引擎的方法,其特征在于:所述OCR识别引擎的消费类型包括紧急、碎片、全文、通用,具体为:紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎和通用OCR识别引擎;各所述消费类型的OCR识别引擎对应创建一OCR队列,包括紧急队列、碎片队列、全文队列以及通用队列,设置各OCR队列的优先级从高到低为:紧急队列、碎片队列、全文队列以及通用队列;

调用OCR应用接口,指定待识别文件的类型和用于处理该待识别文件的OCR识别引擎的消费类型;

确定处理该类型文件的最匹配的OCR识别引擎:判断待识别文件的优先级是否为紧急,若是,紧急OCR识别引擎执行所述超时检测,未超时,则待识别文件进入紧急队列,若超时,无法入队并通知用户;若否,执行下一判断;

判断待识别文件为碎片文件,若是,碎片OCR识别引擎执行所述超时检测,未超时,则待识别文件进入碎片队列,若超时,无法入队并通知用户;若否,执行下一判断;

判断待识别文件为全文文件,若是,全文OCR识别引擎执行所述超时检测,未超时,则待识别文件进入全文队列,若超时,无法入队并通知用户;若否,执行下一判断;

所述通用OCR识别引擎执行超时检测,若未超时,待识别文件进入通用队列,若超时,无法入队并通知用户。

6.一种智能调度多OCR引擎的设备,其特征在于,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:调用OCR应用接口上传待识别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的消费类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别引擎数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判断该消费类型的OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对应的OCR队列,已超时,无法入队并通知用户;

其中,确定预估耗时的方式为:任意一消费类型的OCR识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最小任务数);确定平均耗时方式为:各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,然后取B时间周期内各OCR识别引擎的识别耗时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时值,在相同消费类型的OCR识别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引擎的最小耗时值,最后,将该最小耗时与所述预设初始值比较,若大于预设初始值,则将预设初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时作为该OCR识别引擎的平均耗时,所述A时间周期小于所述B时间周期;各所述OCR识别引擎均对应创建一任务列表,所述最小任务数取值于同一消费类型的各OCR识别引擎对应的任务列表中,任务数最少的任务列表。

7.根据权利要求6所述的一种智能调度多OCR引擎的设备,其特征在于,所述指令由处理器加载后还执行如下步骤:创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别引擎:获取各OCR识别引擎的取数值,各取数值为预设值;

读取各消费类型的OCR识别引擎对应的OCR队列的列表以及OCR队列的列表的版本号,确定各OCR队列中可用于创建任务的队列成员数量:若OCR队列中的待识别文件数量大于取数值,则可用于创建任务的队列成员数量等于取数值,反之,可用于创建任务的队列成员数量等于OCR队列中的待识别文件数量;

判断OCR识别引擎的负载是否超过该OCR识别引擎预设的最大承受范围,所述OCR识别引擎的负载包括OCR识别引擎的任务列表中的任务数和可用于创建任务的队列成员数量,若超过,则不再将队列成员创建为任务,若未超过,先核验读取到的OCR队列的列表版本号与当前OCR队列的列表的版本号是否一致,若一致,更新用于创建任务的队列成员的状态和当前OCR队列的列表的版本号,若不一致,则放弃创建任务;

获取更新状态的队列成员,以任务的形式插入OCR识别引擎的任务列表。

8.根据权利要求6所述的一种智能调度多OCR引擎的设备,其特征在于:各消费类型的OCR识别引擎周期性地执行所述超时检测,及时发现拥挤问题。

9.根据权利要求6所述的一种智能调度多OCR引擎的设备,其特征在于:所述指令由处理器加载后还执行用于智能调度待识别文件的优先级设置步骤,其为以下几种设置方式中的一种或任意方式的组合:1)设置任务优先级:通过管理界面设置待识别文件的优先级,或设置用户优先级,该用户提交待识别文件时,根据用户优先级自动标记该待识别文件的优先级;2)通过管理系统配置各消费类型的OCR识别引擎对应的OCR队列优先级;3)根据任务时效时间设定优先级,在同一OCR队列中,时效时间越早的优先识别;4)根据识别类型设定优先级:在同一OCR队列中,根据待识别文件的类型确定优先级;5)根据入队时间设定优先级:入队时间越早优先级越高,在同一OCR队列中,按先入先出原则进行识别;采用上述多种方式组合设置时,同时设置各方式的优先级。

10.根据权利要求6所述的一种智能调度多OCR引擎的设备,其特征在于:所述OCR识别引擎的消费类型包括紧急、碎片、全文、通用,具体为:紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎和通用OCR识别引擎;各所述消费类型的OCR识别引擎对应创建一OCR队列,包括紧急队列、碎片队列、全文队列以及通用队列,设置各OCR队列的优先级从高到低为:紧急队列、碎片队列、全文队列以及通用队列;所述处理器执行以下步骤:调用OCR应用接口,指定待识别文件的类型和用于处理该待识别文件的OCR识别引擎的消费类型;

确定处理该类型文件的最匹配的OCR识别引擎,具体为:判断待识别文件优先级是否为紧急,若是,紧急OCR识别引擎执行所述超时检测,未超时,则待识别文件进入紧急队列,若超时,无法入队并通知用户;若否,执行下一判断;

判断待识别文件为碎片文件,若是,碎片OCR识别引擎执行所述超时检测,未超时,则待识别文件进入碎片队列,若超时,无法入队并通知用户;若否,执行下一判断;

判断待识别文件为全文文件,若是,全文OCR识别引擎执行所述超时检测,未超时,则待识别文件进入全文队列,若超时,无法入队并通知用户;若否,执行下一判断;

所述通用OCR识别引擎执行超时检测,若未超时,待识别文件进入通用队列,若超时,无法入队并通知用户。

说明书 :

智能调度多OCR识别引擎的方法及设备

技术领域

[0001] 本发明涉及一种智能调度多OCR识别引擎的方法及设备,属于OCR识别领域。

背景技术

[0002] 目前市场上的OCR识别引擎很多,但是每一种OCR识别引擎的消费类型均不相同,即各种OCR识别引擎的注重点各不相同,有的引擎注重于识别全文本,有的引擎注重于识别
碎片,有的引擎注重于识别准确率,有的引擎注重于识别性能。当需要同时处理一批票据文
档,且其中既包含全文本,又包含碎片时,如何使各类型票据合理有序地进入匹配的OCR识
别引擎且能够防止识别任务出现拥挤、程序出错是亟待解决的技术问题。
[0003] 公开号为CN106326741A的中国发明专利《基于多引擎系统的恶意程序检测方法和装置》,其公开了:所述多引擎系统包括多个引擎,其中,每个引擎分别对应有各自的擅长处
理类型,所述方法包括以下步骤:分析待测程序的类型;根据所述待测程序的类型和所述多
个引擎对应的擅长处理类型确定擅长处理所述待测程序的第一引擎;通过所述第一引擎对
所述待测程序进行检测,并将所述第一引擎的检测结果作为所述多引擎系统对所述待测程
序的检测结果。该公开的技术方案仅提出了根据待测程序的类型和多个引擎对应的擅长处
理类型确定擅长处理所述待测程序的第一引擎,但并未给出多个引擎如何有序批量处理多
类型识别文本且保证识别文本类型与OCR识别引擎所擅长处理的类型相匹配,即,公开的技
术方案无法解决多引擎系统同时做到高性能和高准确率完成批量任务这一技术问题。

发明内容

[0004] 为了解决上述技术问题,本发明提供一种智能调度多OCR引擎的方法,根据用户需求将不同种类的待识别文件归类到不同的OCR队列中,然后根据各OCR识别引擎的特点对相
关的队列任务进行消费,充分利用各OCR识别引擎的优点,同时,在待识别文件入队前进行
超时判定,防止队列拥堵,从而达到高性能、高准确率的识别效果。
[0005] 本发明技术方案一如下:
[0006] 一种智能调度多OCR引擎的方法,包括如下步骤:调用OCR应用接口上传待识别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的消费
类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别引擎
数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判断该
消费类型的OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对应的OCR队列,已
超时,无法入队并通知用户。
[0007] 更优地,所述超时检测为:任意一消费类型的OCR识别引擎对应的待识别文件的预估耗时与预设的任务超时时间相比较,得出该OCR队列是否已超时。
[0008] 更优地,所述超时检测为:任意一消费类型的OCR识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最小任务数),得到该消费类型的
OCR识别引擎的预估耗时,将预估耗时与预设的任务超时时间进行比较,从而确定OCR队列
是否已超时;各所述OCR识别引擎均对应创建一任务列表,所述最小任务数取值于同一消费
类型的各OCR识别引擎对应的任务列表中,任务数最少的任务列表。
[0009] 更优地,确定各消费类型的OCR识别引擎平均耗时方式为:各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,然后取B时间周
期内各OCR识别引擎的识别耗时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时
值,在相同消费类型的OCR识别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引
擎的最小耗时值,最后,将该最小耗时值与所述预设初始值比较,若大于预设初始值,则将
预设初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时作为该OCR
识别引擎的平均耗时,所述A时间周期小于所述B时间周期。
[0010] 更优地,智能调度多OCR引擎的方法还包括创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别引擎:获取各OCR识别引擎
的取数值,各取数值为预设值;读取各消费类型的OCR识别引擎对应的OCR队列的列表以及
OCR队列的列表的版本号,确定各OCR队列中可用于创建任务的队列成员数量:若OCR队列中
的待识别文件数量大于取数值,则可用于创建任务的队列成员数量等于取数值,反之,可用
于创建任务的队列成员数量等于OCR队列中的待识别文件数量;判断OCR识别引擎的负载是
否超过该OCR识别引擎预设的最大承受范围,所述OCR识别引擎的负载包括OCR识别引擎的
任务列表中的任务数和可用于创建任务的队列成员数量,若超过,则不再将队列成员创建
为任务,若未超过,先核验读取到的OCR队列的列表版本号与当前OCR队列的列表的版本号
是否一致,若一致,更新用于创建任务的队列成员的状态和当前OCR队列的列表的版本号,
若不一致,则放弃创建任务;获取更新状态的队列成员,以任务的形式插入OCR识别引擎的
任务列表。
[0011] 更优地,各消费类型的OCR识别引擎周期性地执行所述超时检测,及时发现拥挤问题。
[0012] 更优地,智能调度多OCR引擎的方法还包括用于智能调度待识别文件的优先级设置步骤,其为以下几种设置方式中的一种或任意方式的组合:1)设置任务优先级:通过管理
界面设置待识别文件的优先级,或设置用户优先级,该用户提交待识别文件时,根据用户优
先级自动标记该待识别文件的优先级;2)通过管理系统配置各消费类型的OCR识别引擎对
应的OCR队列优先级;3)根据任务时效时间设定优先级,在同一OCR队列中,时效时间越早的
优先识别;4)根据识别类型设定优先级:在同一OCR队列中,根据待识别文件的类型确定优
先级;5)根据入队时间设定优先级:入队时间越早优先级越高,在同一OCR队列中,按先入先
出原则进行识别;采用多种设置方式组合时,设置各方式的优先级。
[0013] 更优地,所述OCR识别引擎的消费类型包括紧急、碎片、全文、通用,具体为:紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎和通用OCR识别引擎;各所述消费类型的
OCR识别引擎对应创建一OCR队列,包括紧急队列、碎片队列、全文队列以及通用队列,设置
各OCR队列的优先级从高到低为:紧急队列、碎片队列、全文队列以及通用队列;调用OCR应
用接口,指定待识别文件的类型和用于处理该待识别文件的OCR识别引擎的消费类型;确定
处理该类型文件的最匹配的OCR识别引擎:判断待识别文件优先级是否为紧急,若是,紧急
OCR识别引擎执行所述超时检测,未超时,则待识别文件进入紧急队列,若超时,无法入队并
通知用户;若否,执行下一判断;判断待识别文件为碎片文件,若是,碎片OCR识别引擎执行
所述超时检测,未超时,则待识别文件进入碎片队列,若超时,无法入队并通知用户;若否,
执行下一判断;判断待识别文件为全文文件,若是,全文OCR识别引擎执行所述超时检测,未
超时,则待识别文件进入全文队列,若超时,无法入队并通知用户;若否,执行下一判断;所
述通用OCR识别引擎执行超时检测,若未超时,待识别文件进入通用队列,若超时,无法入队
并通知用户。
[0014] 本发明还提供一种智能调度多OCR引擎的设备。
[0015] 本发明技术方案二如下:
[0016] 一种智能调度多OCR引擎的设备,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:调用OCR应用接口上传待识别文件,指定待识
别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的消费类型,每种消
费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别引擎数量为至少
一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判断该消费类型的
OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对应的OCR队列,已超时,无法
入队并通知用户。
[0017] 更优地,所述超时检测为:任意一消费类型的OCR识别引擎对应的待识别文件的预估耗时与预设的任务超时时间相比较,得出该OCR队列是否已超时。
[0018] 更优地,述超时检测为:任意一消费类型的OCR识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最小任务数),得到该消费类型的OCR
识别引擎的预估耗时,将预估耗时与预设的任务超时时间进行比较,从而确定OCR队列是否
已超时;各所述OCR识别引擎均对应创建一任务列表,所述最小任务数取值于同一消费类型
的各OCR识别引擎对应的任务列表中,任务数最少的任务列表。
[0019] 更优地,确定各消费类型的OCR识别引擎平均耗时方式为:各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,取B时间周期内
各OCR识别引擎的识别耗时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时值,
在相同消费类型的OCR识别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引擎的
最小耗时值,最后,将该最小耗时值与所述预设初始值比较,若大于预设初始值,则将预设
初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时作为该OCR识别
引擎的平均耗时,所述A时间周期小于所述B时间周期。
[0020] 更优地,所述指令由处理器加载后还执行如下步骤:创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别引擎:获取各OCR
识别引擎的取数值,各取数值为预设值;读取各消费类型的OCR识别引擎对应的OCR队列的
列表以及OCR队列的列表的版本号,确定各OCR队列中可用于创建任务的队列成员数量:若
OCR队列中的待识别文件数量大于取数值,则可用于创建任务的队列成员数量等于取数值,
反之,可用于创建任务的队列成员数量等于OCR队列中的待识别文件数量;判断OCR识别引
擎的负载是否超过该OCR识别引擎预设的最大承受范围,所述OCR识别引擎的负载包括OCR
识别引擎的任务列表中的任务数和可用于创建任务的队列成员数量,若超过,则不再将队
列成员创建为任务,若未超过,先核验读取到的OCR队列的列表版本号与当前OCR队列的列
表的版本号是否一致,若一致,更新用于创建任务的队列成员的状态和当前OCR队列的列表
的版本号,若不一致,则放弃创建任务;获取更新状态的队列成员,以任务的形式插入OCR识
别引擎的任务列表。
[0021] 更优地,各消费类型的OCR识别引擎周期性地执行所述超时检测,及时发现拥挤问题。
[0022] 更优地,所述指令由处理器加载后还执行用于智能调度待识别文件的优先级设置步骤,其为以下几种设置方式中的一种或任意方式的组合:1)设置任务优先级:通过管理界
面设置待识别文件的优先级,或设置用户优先级,该用户提交待识别文件时,根据用户优先
级自动标记该待识别文件的优先级;2)通过管理系统配置各消费类型的OCR识别引擎对应
的OCR队列优先级;3)根据任务时效时间设定优先级,在同一OCR队列中,时效时间越早的优
先识别;4)根据识别类型设定优先级:在同一OCR队列中,根据待识别文件的类型确定优先
级;5)根据入队时间设定优先级:入队时间越早优先级越高,在同一OCR队列中,按先入先出
原则进行识别;采用上述多种方式组合设置时,同时设置各方式的优先级。
[0023] 更优地,所述OCR识别引擎的消费类型包括紧急、碎片、全文、通用,具体为:紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎和通用OCR识别引擎;各所述消费类型的
OCR识别引擎对应创建一OCR队列,包括紧急队列、碎片队列、全文队列以及通用队列,设置
各OCR队列的优先级从高到低为:紧急队列、碎片队列、全文队列以及通用队列;所述处理器
执行以下步骤:调用OCR应用接口,指定待识别文件的类型和用于处理该待识别文件的OCR
识别引擎的消费类型;确定处理该类型文件的最匹配的OCR识别引擎,具体为:判断待识别
文件优先级是否为紧急,若是,紧急OCR识别引擎执行所述超时检测,未超时,则待识别文件
进入紧急队列,若超时,无法入队并通知用户;若否,执行下一判断;判断待识别文件为碎片
文件,若是,碎片OCR识别引擎执行所述超时检测,未超时,则待识别文件进入碎片队列,若
超时,无法入队并通知用户;若否,执行下一判断;判断待识别文件为全文文件,若是,全文
OCR识别引擎执行所述超时检测,未超时,则待识别文件进入全文队列,若超时,无法入队并
通知用户;若否,执行下一判断;所述通用OCR识别引擎执行超时检测,若未超时,待识别文
件进入通用队列,若超时,无法入队并通知用户。
[0024] 本发明具有如下有益效果:
[0025] 1、本发明一种智能调度多OCR引擎的方法和设备,通过确定与待识别文件匹配的OCR识别引擎以及入队前检测OCR识别引擎是否超时,不仅充分利用各消费类型的OCR识别
引擎的优点达到高性能高准确率的识别,而且能够有序调度各OCR识别引擎,防止队列拥挤
带来的系统出错、引擎瘫痪等;
[0026] 2、本发明一种智能调度多OCR引擎的方法和设备,其超时检测能够准确反映当前OCR识别引擎的耗时情况,为系统稳健运行提供保障;
[0027] 3、本发明一种智能调度多OCR引擎的方法和设备,通过OCR队列消费端检测并控制OCR识别引擎的负载,防止负载超量引起OCR识别引擎瘫痪,同时,先核验OCR队列的列表版
本号再更新队列成员状态和更新队OCR队列的列表版本号,能有效避免队列成员在同一消
费类型的多个OCR识别引擎中重复创建任务。
[0028] 4、本发明一种智能调度多OCR引擎的方法和设备,各消费类型的OCR识别引擎周期性地执行所述超时检测,确保各OCR识别引擎的正常运行以及及时发现并处理拥挤问题。
[0029] 5、本发明一种智能调度多OCR引擎的方法和设备,还提供多种设置优先级的方式,实现智能调度任务;
[0030] 6、本发明一种智能调度多OCR引擎的方法和设备,能够同时智能调度紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎和通用OCR识别引擎,且结合队列优先级进行有
序调度,实现高性能高准确率的OCR识别。

附图说明

[0031] 图1为本发明的框图示意图;
[0032] 图2为本发明的流程示意图;
[0033] 图3为本发明的平均耗时流程示意图;
[0034] 图4为本发明的OCR队列消费端流程图;
[0035] 图5为本发明采用四个消费类型OCR识别引擎的流程示意图。

具体实施方式

[0036] 下面结合附图和具体实施例来对本发明进行详细的说明。
[0037] 实施例一
[0038] 请参阅图1和图2,一种智能调度多OCR引擎的方法,包括如下步骤:调用OCR应用接口上传待识别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR
识别引擎的消费类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类
型的OCR识别引擎数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先
执行用于判断该消费类型的OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对
应的OCR队列,已超时,无法入队并通知用户。通过确定匹配的OCR识别引擎以及入队前判断
OCR识别引擎是否超时,不仅充分利用各消费类型的OCR识别引擎的优点达到高性能高准确
率的识别,而且能够有序调度各OCR识别引擎,防止队列拥挤带来的系统出错、引擎瘫痪等。
[0039] 所述超时检测为:任意一消费类型的OCR识别引擎对应的待识别文件的预估耗时与预设的任务超时时间相比较,得出该OCR队列是否已超时。具体地,任意一消费类型的OCR
识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最
小任务数),得到该消费类型的OCR识别引擎的预估耗时,将预估耗时与预设的任务超时时
间进行比较,从而得到OCR队列是否已超时。各所述OCR识别引擎均对应创建一任务列表,所
述最小任务数取值于同一消费类型的各OCR识别引擎对应的任务列表中,任务数最少的任
务列表。
[0040] 请参阅图3,确定OCR识别引擎平均耗时的方法有多种,第一种,为各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,例如每
隔一分钟采样一次近6小时内的识别耗时值,然后取B时间周期内各OCR识别引擎的识别耗
时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时值,在相同消费类型的OCR识
别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引擎的最小耗时值,例如,取24
小时周期内的3个碎片OCR识别引擎的耗时值分别为10秒,8秒,15秒,完成任务数均为100
个,因此,3个碎片OCR识别引擎的任务耗时值为0.1秒,0.08秒,以及0.15秒,取0.08秒作为
碎片OCR识别引擎的最小耗时,最后,将该最小耗时与所述预设初始值比较,若大于预设初
始值,则将预设初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时
作为该OCR识别引擎的平均耗时,所述A时间周期小于所述B时间周期,或B=KA,其中K为正
整数。对于平均耗时值,其所取的时间周期大些,得到的耗时值准确度就更高,然而多次采
样大周期内的识别耗时值,不仅数据处理速度慢,还会占用较大的缓存资源,影响处理器性
能,因此,本实施例采用周期性采样短时间内的识别耗时值,再通过简单的累加得到B时间
周期内的耗时值,提高系统处理速度的同时也提高了平均耗时值的准确度。第二种:较为简
单地,预设采样周期和用于计算耗时的时间周期,将该时间周期内的任务耗时值直接作为
该OCR识别引擎的平均耗时,例如,每隔一分钟采样近6个小时内的识别耗时,将该值作为
OCR识别引擎的平均耗时,这种方式数据处理量较小,易执行,但该方式确定的平均耗时的
准确度不高,容易受到突发多任务影响,导致该时间周期内的平均耗时过大,不准确。
[0041] 本实施例第一种平均耗时确定方法能够准确反映当前OCR识别引擎的耗时情况,为系统稳健运行提供保障。
[0042] 请参阅图4,本实施例还创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别引擎,具体地:获取各OCR识别引擎的取数值,
各取数值为预设值;读取对应OCR队列的列表以及OCR队列的列表的版本号,确定各OCR队列
中可用于创建任务的队列成员数量:若OCR队列中的待识别文件数量大于取数值,则可用于
创建任务的队列成员数量等于取数值,反之,可用于创建任务的队列成员数量等于OCR队列
中的待识别文件数量;判断OCR识别引擎的负载是否超过该OCR识别引擎预设的最大承受范
围,所述OCR识别引擎的负载包括OCR识别引擎的任务列表中的任务数和可用于创建任务的
队列成员数量,若超过,则不再将队列成员创建为任务,若未超过,先核验读取到的OCR队列
的列表版本号与当前OCR队列的列表的版本号是否一致,若一致,更新用于创建任务的队列
成员的状态和当前OCR队列的列表的版本号,例如将队列成员的状态更新为:已出队,将OCR
队列的列表的版本由V1.0变更为V1.1,若不一致,则放弃创建任务;获取更新状态的队列成
员,以任务的形式插入OCR识别引擎的任务列表。
[0043] 例如,采用2个碎片OCR识别引擎识别碎片文件,各碎片识别引擎的取数值均为3,读取碎片OCR队列的列表及版本号,OCR队列的列表中的待识别文件数量为2,版本号为
V1.0,因此,确定碎片OCR队列中可用于创建任务的队列成员数量为2;接着,设定碎片OCR识
别引擎的最大承受范围为3-5个,第一碎片OCR识别引擎的任务列表内任务数为3,第二碎片
OCR识别引擎的任务列表内任务数为5,则,第一碎片OCR识别引擎的负载为任务列表中的任
务数3加上可用于创建任务的队列成员数量2,该负载在最大承受范围内,因此,在更新时,
先校验当前OCR队列的列表的版本是否还是V1.0,若是,则将OCR队列的列表中的两个待识
别文件标记为“已出队”,并将OCR队列的列表的版本号更新为V1.1。最后将标记为已出队的
两个待识别文件分别创建为任务,插入第一碎片OCR识别引擎的任务列表中。第二碎片OCR
识别引擎的任务列表内的任务数已达到最大承受范围,因此不再创建新任务至该任务列表
中。
[0044] 通过OCR队列消费端检测并控制OCR识别引擎的负载,防止负载超量引起OCR识别引擎瘫痪,同时,先核验OCR队列的列表版本号再更新队列成员状态和更新OCR队列的列表
版本号,能有效避免队列成员在同一消费类型的多个OCR识别引擎中重复创建任务。
[0045] 为及时发现OCR识别引擎在识别过程中出现超时问题,本实施例中各消费类型的OCR识别引擎周期性地执行所述超时检测,确保各OCR识别引擎的正常运行以及及时发现并
处理拥挤问题。
[0046] 本实施例还提供用于智能调度待识别文件的方法,其为以下几种方式中的一种或任意方式的组合:1)设置任务优先级:通过管理界面设置待识别文件的优先级或通过设置
用户优先级,该用户提交待识别文件时,根据用户优先级自动设置该待识别文件的优先级;
2)通过管理系统配置各消费类型的OCR识别引擎对应的OCR队列优先级;3)根据任务时效时
间判断优先级,同等情况下,时效时间越早的优先识别;4)根据识别类型设定优先级:在同
一OCR队列中,根据识别类型确定优先级,例如,对于消费类型为通用的OCR识别引擎,其对
应的OCR队列中可能既包含全文识别,也包含碎片识别,因此,可以设置碎片类型的文件优
先识别,因为碎片文件识别速度快,全文识别耗时长;5)入队时间:入队时间越早优先级越
高,即同等情况下,按先入先出原则进行识别。
[0047] 请参阅图5,现以系统同时包含紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎以及通用OCR识别引擎为例,各所述消费类型的OCR识别引擎对应创建一OCR队列,具体
为:紧急队列、碎片队列、全文队列、通用队列,且设置队列任务分配的优先级从高到低为:
紧急队列、碎片队列、全文队列、通用队列;
[0048] 步骤1、客户端调用OCR应用接口,上传待识别文件,指定待识别文件的类型和用于处理该待识别文件的OCR识别引擎的消费类型;同时,还可设置是否使用缓存文件;所述缓
存文件是该待识别文件在上一次识别的识别结果;步骤2、服务器接收后,判断是否使用缓
存文件,若是,则从缓存中提取上一次的识别结果返回给客户端,若否,或者缓存文件不存
在,则执行步骤3;步骤3、确定处理该类型文件的最匹配的OCR识别引擎:
[0049] 判断待识别文件优先级是否为紧急,若是,紧急OCR识别引擎执行所述超时检测,未超时,则待识别文件进入紧急队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0050] 判断待识别文件为碎片文件,若是,碎片OCR识别引擎执行所述超时检测,未超时,则待识别文件进入碎片队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0051] 判断待识别文件为全文文件,若是,全文OCR识别引擎执行所述超时检测,未超时,则待识别文件进入全文队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0052] 所述通用OCR识别引擎执行超时检测,若未超时,待识别文件进入通用队列,若超时,无法入队并通知用户。
[0053] 上述四个OCR识别引擎通过设置队列优先级,且结合待识别文件的消费类型,进行引擎匹配且能够有序调度待识别文件,实现高性能高准确率的OCR识别。
[0054] 实施例二
[0055] 请参阅图1和图2,一种智能调度多OCR引擎的设备,包括存储器和处理器,所述存储器存储有指令,所述指令适于由处理器加载并执行以下步骤:调用OCR应用接口上传待识
别文件,指定待识别文件的类型;根据待识别文件的类型确定处理该文件的OCR识别引擎的
消费类型,每种消费类型的OCR引擎均创建一与之对应的OCR队列,各种消费类型的OCR识别
引擎数量为至少一个;待识别文件请求进入对应OCR识别引擎的OCR队列时,先执行用于判
断该消费类型的OCR识别引擎是否超时的超时检测,未超时,待识别文件进入对应的OCR队
列,已超时,无法入队并通知用户。通过确定匹配的OCR识别引擎以及入队前判断OCR识别引
擎是否超时,不仅充分利用各消费类型的OCR识别引擎的优点达到高性能高准确率的识别,
而且能够有序调度各OCR识别引擎,防止队列拥挤带来的系统出错、引擎瘫痪等。
[0056] 所述超时检测为:任意一消费类型的OCR识别引擎对应的待识别文件的预估耗时与预设的任务超时时间相比较,得出该OCR队列是否已超时。具体地:任意一消费类型的OCR
识别引擎的平均耗时*(OCR队列的列表中的待识别文件数+该消费类型的OCR识别引擎的最
小任务数),得到该消费类型的OCR识别引擎的预估耗时,将预估耗时与预设的任务超时时
间进行比较,从而得到OCR队列是否已超时。各所述OCR识别引擎均对应创建一任务列表,所
述最小任务数取值于同一消费类型的各OCR识别引擎对应的任务列表中,任务数最少的任
务列表。
[0057] 请参阅图3,确定OCR识别引擎平均耗时的方法有多种,第一种,为各消费类型的OCR识别引擎预设初始值;周期性采样各OCR识别引擎在A时间周期内的识别耗时值,例如每
隔一分钟采样一次近6小时内的识别耗时值,然后取B时间周期内各OCR识别引擎的识别耗
时值与识别任务总数,求均值得到各OCR识别引擎的任务耗时值,在相同消费类型的OCR识
别引擎中,取最小的任务耗时值作为该消费类型的OCR识别引擎的最小耗时值,例如,取24
小时周期内的3个碎片OCR识别引擎的耗时值分别为10秒,8秒,15秒,完成任务数均为100
个,因此,3个碎片OCR识别引擎的任务耗时值为0.1秒,0.08秒,以及0.15秒,取0.08秒作为
碎片OCR识别引擎的最小耗时,最后,将该最小耗时与所述预设初始值比较,若大于预设初
始值,则将预设初始值作为该OCR识别引擎的平均耗时,若小于预设初始值,则将最小耗时
作为该OCR识别引擎的平均耗时,所述A时间周期小于所述B时间周期,或B=KA,其中K为正
整数。对于平均耗时值,其所取的时间周期大些,得到的耗时值准确度就更高,然而多次采
样大周期内的识别耗时值,不仅数据处理速度慢,还会占用较大的缓存资源,影响处理器性
能,因此,本实施例采用周期性采样短时间内的识别耗时值,再通过简单的累加得到B时间
周期内的耗时值,提高系统处理速度的同时也提高了平均耗时值的准确度。第二种:较为简
单地,预设采样周期和用于计算耗时的时间周期,将该时间周期内的任务耗时值直接作为
该OCR识别引擎的平均耗时,例如,每隔一分钟采样近6个小时内的识别耗时,将该值作为
OCR识别引擎的平均耗时,这种方式数据处理量较小,易执行,但该方式确定的平均耗时的
准确度不高,容易受到突发多任务影响,导致该时间周期内的平均耗时过大,不准确。
[0058] 本实施例第一种平均耗时确定方法能够准确反映当前OCR识别引擎的耗时情况,为系统稳健运行提供保障。
[0059] 请参阅图4,本实施例中,所述指令由处理器加载后还执行如下步骤:创建一OCR队列消费端,其不断检测OCR队列并将队列成员不断创建成任务,然后分发给对应的OCR识别
引擎,具体地:获取各OCR识别引擎的取数值,各取数值为预设值;取对应OCR队列的列表以
及OCR队列的列表的版本号,确定各OCR队列中可用于创建任务的队列成员数量:若OCR队列
中的待识别文件数量大于取数值,则可用于创建任务的队列成员数量等于取数值,反之,可
用于创建任务的队列成员数量等于OCR队列中的待识别文件数量;判断OCR识别引擎的负载
是否超过该OCR识别引擎预设的最大承受范围,所述OCR识别引擎的负载包括OCR识别引擎
的任务列表中的任务数和可用于创建任务的队列成员数量,若超过,则不再将队列成员创
建为任务,若未超过,先核验读取到的OCR队列的列表版本号与当前OCR队列的列表的版本
号是否一致,若一致,更新用于创建任务的队列成员的状态和当前OCR队列的列表的版本
号,例如将队列成员的状态更新为:已出队,将OCR队列的列表的版本由V1.0变更为V1.1,若
不一致,则放弃创建任务;获取更新状态的队列成员,以任务的形式插入OCR识别引擎的任
务列表。
[0060] 例如,采用2个碎片OCR识别引擎识别碎片文件,各碎片识别引擎的取数值均为3,读取碎片OCR队列的列表及版本号,OCR队列的列表中的待识别文件数量为2,版本号为
V1.0,因此,确定碎片OCR队列中可用于创建任务的队列成员数量为2;接着,设定碎片OCR识
别引擎的最大承受范围为3-5个,第一碎片OCR识别引擎的任务列表内任务数为3,第二碎片
OCR识别引擎的任务列表内任务数为5,则,第一碎片OCR识别引擎的负载为任务列表中的任
务数3加上可用于创建任务的队列成员数量2,该负载在最大承受范围内,因此,在更新时,
先校验当前OCR队列的列表的版本是否还是V1.0,若是,则将OCR队列的列表中的两个待识
别文件标记为“已出队”,并将OCR队列的列表的版本号更新为V1.1。最后将标记为已出队的
两个待识别文件分别创建为任务,插入第一碎片OCR识别引擎的任务列表中。第二碎片OCR
识别引擎的任务列表内的任务数已达到最大承受范围,因此不再创建新任务至该任务列表
中。
[0061] 通过OCR队列消费端检测并控制OCR识别引擎的负载,防止负载超量引起OCR识别引擎瘫痪,同时,先核验OCR队列的列表版本号再更新队列成员状态和更新OCR队列的列表
版本号,能有效避免队列成员在同一消费类型的多个OCR识别引擎中重复创建任务。
[0062] 为及时发现OCR识别引擎在识别过程中出现超时问题,本实施例中各消费类型的OCR识别引擎周期性地执行所述超时检测,确保各OCR识别引擎的正常运行以及及时发现并
处理拥挤问题。
[0063] 本实施例中,所述指令由处理器加载后还执行用于智能调度待识别文件的优先级设置步骤,其为以下几种方式中的一种或任意方式的组合:1)设置任务优先级:通过管理界
面设置待识别文件的优先级或通过设置用户优先级,该用户提交待识别文件时,根据用户
优先级自动设置该待识别文件的优先级;2)通过管理系统配置各消费类型的OCR识别引擎
对应的OCR队列优先级;3)根据任务时效时间判断优先级,同等情况下,时效时间越早的优
先识别;4)根据识别类型设定优先级:在同一OCR队列中,根据识别类型确定优先级,例如,
对于消费类型为通用的OCR识别引擎,其对应的OCR队列中可能既包含全文识别,也包含碎
片识别,因此,可以设置碎片类型的文件优先识别,因为碎片文件识别速度快,全文识别耗
时长;5)入队时间:入队时间越早优先级越高,即同等情况下,按先入先出原则进行识别。
[0064] 请参阅图5,现以系统同时包含紧急OCR识别引擎、碎片OCR识别引擎、全文OCR识别引擎以及通用OCR识别引擎为例,各所述消费类型的OCR识别引擎对应创建一OCR队列,具体
为:紧急队列、碎片队列、全文队列、通用队列,且设置队列任务分配的优先级从高到低为:
紧急队列、碎片队列、全文队列、通用队列;
[0065] 步骤1、客户端调用OCR应用接口,上传待识别文件,指定待识别文件的类型和用于处理该待识别文件的OCR识别引擎的消费类型;同时,还可设置是否使用缓存文件;所述缓
存文件是该待识别文件在上一次识别的识别结果;
[0066] 步骤2、服务器接收后,判断是否使用缓存文件,若是,则从缓存中提取上一次的识别结果返回给客户端,若否,或者缓存文件不存在,则执行步骤3;
[0067] 步骤3、确定处理该类型文件的最匹配的OCR识别引擎:
[0068] 判断待识别文件优先级是否为紧急,若是,紧急OCR识别引擎执行所述超时检测,未超时,则待识别文件进入紧急队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0069] 判断待识别文件为碎片文件,若是,碎片OCR识别引擎执行所述超时检测,未超时,则待识别文件进入碎片队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0070] 判断待识别文件为全文文件,若是,全文OCR识别引擎执行所述超时检测,未超时,则待识别文件进入全文队列,若超时,无法入队并通知用户;若否,执行下一判断;
[0071] 所述通用OCR识别引擎执行超时检测,若未超时,待识别文件进入通用队列,若超时,无法入队并通知用户。
[0072] 以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本发明的专利保护范围内。