技术领域
[0001] 本发明涉及光学字符识别(OCR,Optical Character Recognition)技术领域,尤其是涉及两种语言的混排文字图像识别的快速的文本识别方法。
相关背景技术
[0002] 一个能够实际应用的光学识别系统,通常需要识别至少两种语言。以中文文本识别为例,其中通常会夹杂部分或是大段的英文字符(以下称为:混排文本)。
[0003] 目前通常采取两种方案。
[0004] 方案一:使用包含英文字符集的中文OCR识别引擎,同时对中文字符和英文字符进行切分、识别。
[0005] 但是,由于不同语言类型的特点(例如:字符粘连、数量、拓扑结构等),中文OCR识别引擎对英文的识别效果不尽理想。为提高对英文字符的正确识别率,一些系统采用方案二所述的方法。
[0006] 方案二:使用中文OCR识别引擎,对图像中所有字符进行切分识别;根据中文OCR识别引擎的识别结果,确定英文字符区域;再使用英文OCR识别引擎,识别英文字符所在的图像区域,得到英文识别结果;将两种OCR识别引擎的识别结果融合输出。
[0007] 方案二是对方案一的改进,其优点是提高了英文字符的识别率(相对于方案一的方法)。该方法对混排文本中的所有文本行的识别,均先调用中文OCR识别引擎,再判断是否需要调用英文OCR识别引擎。
[0008] 专利名称为光学字符识别方法及系统,200510002097.0,提出了一种识别字符的方法,该方法使用第一识别引擎对所述两种语言混排的图像进行识别后,根据第一识别引擎识别的结果确定第二语言字符,并使用第二识别引擎识别所述确定的第二语言区域;输出第一语言和第二语言识别结果。对于纯中文行或中文区域占绝大部分的文本行,该方法效果是比较好的。但是,对于纯英文或是英文区域占绝大部分的文本行,在会造成两个显著的问题:
[0009] (1)识别速度慢。该专利中的方法,对文本中的英文字符必须先使用中文OCR识别引擎识别,再使用英文OCR识别引擎识别。对一个字符进行两次识别的时间,大大高于对一个字符进行一次识别时间。若该系统在嵌入式上使用,速度问题会变得尤其突出。
[0010] (2)英文字符识别率低于仅调用英文OCR识别引擎。使用中文OCR识别引擎识别英文区域,可能会将某些英文字符识别成置信度高的中文字符,该情况下不再调用英文OCR识别引擎识别该英文区域,造成最终的英文字符识别错误。
具体实施方式
[0047] 以下结合附图并以中文和英文两种语言混排文本为例,对本发明快速文本识别方法进行详细说明。但是,本领域技术人员应该知晓的是,本发明不限于中文和英文两种语言混排文本,而是还可以用于东方语言如日文、韩文和其他西方语言如和俄文、法文、德文、意大利文等的两种语言混排文本。
[0048] 本发明提供一种对两种语言混排文本图像的识别方法。其中,两种语言分别称为第一语言、第二语言;混排文本图像为包含若干行混排语言文字行的图像;混排语言文字行内容可以为:仅包含第一语言字符,或仅包含第二语言字符,或第一、二语言字符夹杂。第一语言OCR识别引擎仅负责得到第一语言识别结果,而第二语言OCR识别引擎仅负责得到第二语言识别结果。
[0049] 在图1的实施例中以中文和英文两种语言混排文本为例,其中中文为第一语言、英文为第二语言。并且同时参考图2,为一个具体的中文和英文混排文本图像利用本方法进行识别的实施例。本实例中,中文OCR识别引擎可对英文进行识别(识别的字符集为GB2312,该字符集包含汉字、符号和英文字母)但识别效果不理想,而英文OCR识别引擎则无法识别中文。
[0050] 如图1所示,本发明快速文本识别方法包括以下步骤:
[0051] 步骤10:开始。接收待识别的文本图像;如前所述,本实施例的两种语言混排文本包括中文和英文,待识别的文本图像以图2(a)接收到的黑白文本图像为例,图像中,前景(文字区域)和背景(空白区域)已经被不同的颜色区分开。本图像中黑色像素代表前景,白色像素代表背景。在其他实施实施例中,也可以以白色代表前景、黑色代表背景。前景中包含了图像的有效信息。
[0052] 步骤20:切分文本行。即对文本图像进行行切分,得到若干行单行文本;图2(a)的文本图像中,包含了7行文字,进过该步骤行切分处理,一个包含多个行的图像块被切分成若干个包含单行文字图像的图像块区域。针对图2(a)中的水平行文本图像,该实施例利用水平方向投影直方图切分文本行:逐行计算图像中的每一像素行中前景像素的个数,得到如图2(b)中右侧所示的图像水平投影直方图,每一行的投影值即为该图左侧的图像中对应该行中的黑色像素点个数;选取合适的阈值,在水平投影直方图上确定文本行的上下边界,在本实施例中选取0为行切分阈值:若第i行投影值为0,第i+1行投影值>0,则第i+1行作为一行的起始行;若第i行投影值为0,第i-1行投影值>0,则第i-1行作为一行的结束行;当然,在其他实施例中也可采取其他数值为行切分阈值。去除单文本行图像左右的空白区域,得到如图2(c)所示的行切分结果,图像中的方框内为单文本行区域,共有7个这样的单文本行区域。
[0053] 步骤30:文本行特征提取。统计每个单文本行区域的行内的字符特征,并计算每个单文本行区域的行特征值。
[0054] 行内字符特征统计:字符特征是区分第一、第二语言文字的结构特征。首先对字符特征做简单说明:一行文本包含若干字符,字符特征主要指其结构上的特征:基本特征包括字宽、字高、字间隙等,此外更复杂的字符特征包括字符中心点间距、上下穿刺特征、基线特征、笔画特征、连通域特征等。
[0055] 合适的特征有助于第一、第二语言文字的区分。本发明的一个实施例采用能够较好区分两种语言文字的上下穿刺特征,进行特征值统计:上下穿刺数指竖线穿过字符块的次数,如图2(d)所示,在字符两处进行上下穿刺,每个箭头代表竖线穿过字符块一次,这两处分别得到的穿刺数为5和1。该实施例中实施例,对文本行进行上下穿刺数目统计,7个单文本行区域得到的上下穿刺数统计图见图2(e),图中,每行文本下方对应的是该文本行中上下穿刺数统计图。从图中可以看出,中文字符上下穿刺数基本上高于英文字符上下穿刺数,其中,中文字符上下穿刺数大多分布在2-5之间,英文字符上下穿刺数大多分布在1-3之间。
[0056] 行特征值计算:行特征值是指通过某种方式,将行内字符特征统计结果转化为一个单一的值输出。本发明实施例中的行内字符特征为一组上下穿刺数。中文字符上下穿刺数大多分布在2-5之间,英文字符上下穿刺数大多分布在1-3之间。本发明实施例计算行特征值E采用的计算公式如下:
[0057] 式(1)
[0058] 其中,i表示上下穿刺数,Si表示上下穿刺数为i的图像列数,Pi表示上下穿刺数为i的穿刺数的权重(权重Pi的取值见式(2)), 表示穿刺数在1-5之间的图像列数。
[0059] 式(2)
[0060] 本实施例中,行特征值E代表行内字符上下穿刺数的加权平均值。权重的选取是经过统计和实验得到的,有效提高了行特征值对中文字符的敏感性。图2(f)为采用公式(1)和公式(2)计算得到的文本行特征值结果图。对于其他语言,可通过改变权重,达到行特征值对某一语言的强敏感性。
[0061] 此外,在另外的实施例中,笔画特征、基线特征等,也可以作为行特征,计算出相应的行特征值。
[0062] 步骤40:文本行排序。根据文本行的特征值,按照特征值大小对文本行进行排序;在本实施例中,排序结果使得文本行顺序按照行特征值递减排序。当然在另外的实施例中,也可按照递增、或其他函数定义的顺序排序。排序后的文本行顺序见图2(g)所示,经过排序后,以中文字符为主的行基本排在了英文行前。
[0063] 步骤50:逐行判断文本识别方式。对排序后的文本行,逐行判断OCR识别引擎的调用顺序。本实施例设立的OCR识别策略是首先用中文OCR识别引擎进行识别,提取英文可疑区域,再用英文OCR识别引擎进行识别;若判断当前行识别结果为英文行,在下一行识别时OCR识别策略是首先用英文OCR识别引擎识别,提取中文可疑区域,再用中文OCR识别引擎进行识别。在本实施例中共有以下两种识别方式供选择:
[0064] 假设共k行,目前识别第i行,k≥i≥1,k和i均为自然数:
[0065] 若i=1,即第一行,则采用识别方式一进行识别;
[0066] 若i>1,即不是第一行,则要根据前若干行(一行或多行)的识别结果判断当前行的识别方式:前若干行(一行或多行)识别结果均为第二语言,则采用识别方式二识别该行;否则,采用识别方式一识别该行;本发明实施例中,通过判断前一行的识别结果确定识别方式。在其它实施例中,可视一行中字符数目的多少或是字符识别可信度确定合适的行数。关于识别方式一和识别方式二如下所述:
[0067] 步骤60:采用识别方式一,包括:
[0068] 步骤61:使用第一语言OCR识别引擎识别该行图像,保存其中的第一语言识别结果;
[0069] 步骤62:根据识别结果,确定并提取第二语言字符可疑区域;由于中文OCR识别引擎可识别英文,在步骤61的识别结果中,第一语言中文OCR识别引擎识别第二语言区域可能得到英文或识别可信度不高的中文字符,那么就需要将这部分字符归入第二语言字符可疑区域。本发明实施例中,根据中文OCR识别结果,首先定位其中识别结果为英文字符的区域(即第二语言字符可疑区域),作为初始英文区域;以该初始英文区域为中心,向文本行左右扩展。而同时也将字形(宽、高、字符间距等)可疑、或是识别可信度低于中文字符可信阈值T1的中文字符区域扩入英文区域;其中,中文字符可信阈值T1为中文OCR识别引擎的经验统计阈值,该值表示:识别可信度小于T1,该字符识别结果可能不正确;一行文字中可能得到若干块英文字符可疑区域;
[0070] 步骤63:使用第二语言OCR识别引擎识别第二语言可疑区域;本发明实施例中,使用英文OCR识别引擎识别每一块英文可疑区域图像,得到英文可疑区域识别结果;
[0071] 步骤64:识别结果融合;此处的指融合是指,将第一识别引擎识别结果和第二识别引擎识别结果合并成一份识别结果输出,使得每一个字符块有且仅有一个识别结果输出。识别方式一对第二语言可疑区域进行了两次识别,分别调用第一语言OCR识别引擎和第二语言OCR识别引擎,得到了两个识别结果,那么该步骤主要处理第二语言——即英文可疑区域中的识别结果的取舍问题。假设字符K为英文可疑区域中的字符,那么:
[0072] 若中文OCR识别引擎得到的该字符识别结果为英文:保存英文引擎识别结果;
[0073] 若中文OCR识别引擎得到的该字符识别结果为中文字符:若经过英文OCR识别引擎的再次识别,得到的字符可信度阈值高于英文字符可信阈值T2,则字符K的英文引擎识别结果可信,保存英文引擎识别结果;若经过英文OCR识别引擎的再次识别,得到的字符可信度阈值低于英文字符可信阈值T2,则字符K的英文引擎识别结果不可信,保存中文引擎识别结果;其中,英文字符可信阈值T2为英文OCR识别引擎的经验统计阈值,该值表示:识别可信度小于T2,该字符识别结果可能不正确;
[0074] 步骤70:采用识别方式二,包括:
[0075] 步骤71:使用第二语言OCR识别引擎识别该行,保存其中的第二语言识别结果;
[0076] 步骤72:根据识别结果,确定并提取第一语言字符可疑区域;在步骤71的识别结果中,某些情况下可能还存在不能被第二语言英文OCR识别引擎识别、或英文OCR识别引擎识别结果可信度不高的字符,那么就需要将这部分字符归入第一语言字符可疑区域。本发明实施例中,根据英文OCR识别结果,定位其中字形(宽、高、字符间距等)可疑、或是识别可信度低的区域作为中文区域;一行文字中可能得到若干块中文字符区域;
[0077] 步骤73:使用第一语言OCR识别引擎识别第一语言字符可疑区域;本发明实施例中,使用中文OCR识别引擎识别每一块中文区域图像,得到中文字符可疑区域识别结果;
[0078] 步骤74:识别结果融合;与前述的融合类似,只是融合策略稍微不同:识别方式二对第一语言可疑区域进行了两次识别,分别调用第二语言OCR识别引擎和第一语言OCR识别引擎,该步骤主要处理第一语言可疑区域中的识别结果的取舍问题。假设字符K为中文可疑区域中的字符:
[0079] 若中文OCR识别引擎得到的该字符识别结果为英文:保存英文引擎识别结果;
[0080] 若经过中文OCR识别引擎识别,得到的字符可信度阈值高于中文字符可信阈值T1,则字符K的中文引擎识别结果可信,保存中文引擎识别结果;若经过中文OCR识别引擎识别,得到的字符可信度阈值低于中文字符可信阈值T1,则字符K的中文引擎识别结果不可信,保存英文引擎识别结果;
[0081] 步骤80:是否处理完毕所有的行?是的话进行下一步骤,否则回到步骤50。
[0082] 步骤90:识别结果输出,本发明的识别结果可以是很多种格式:例如以不同的文字编码方式(GBK,UniCode等)输出到不同格式的文本文件中(WORD、TXT、HTML)方便用户阅读,还可转换成音频文件输出。
[0083] 步骤100:结束。
[0084] 图3(a)和图(b)显示了现有技术的混排识别方法和本发明采用的识别方法在识别上的差异:图3(a)采用现有技术的混排识别方式,对文本行顺序识别,该方法对所有英文至少要识别两次,即:中文OCR识别引擎识别、英文OCR识别引擎识别。而图3(b)采用本发明方法,对文本行进行了排序、再识别,该方法减少了英文行识别时调用中文OCR识别引擎的次数,提高了识别速度;同时减少可疑区域提取和识别结果融合中引入的错误,提高了识别率。
[0085] 本发明中采用的优选实施例,只是对本发明思想的一种具体实施方式的描述。其具体应用形式的多样的。例如,对文本语言类型的自动判断:采用行排序的方式检测文本是否为纯英文文本,从而决定是否需要进行混排识别;此外,混排语言可以适用于日英、韩英、中俄等语言的混排文本的识别。