本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種字符識別的處理方法和裝置。
背景技術(shù):
字符分割和字符識別是光學(xué)字符識別(英文全稱:Optical Character Recognition,英文縮寫:OCR)技術(shù)中最重要的兩個方面,這兩部分直接影響到字符識別的效果和結(jié)果,在OCR技術(shù)中需要將分割好的字符進行行方向上的排序后呈現(xiàn)給用戶,因此字符的行方向排序技術(shù)會直接影響到呈現(xiàn)給用戶觀看的識別效果。但是當前對于OCR的分行技術(shù)主要是基于分割后字符間距來對字符進行簡單的分行。
現(xiàn)有技術(shù)中依據(jù)分割后的字符間距來進行字符的合并和拆分,當不同格式的字符進行排版后,拍攝到的每行字符在頁面中有很大傾斜等情況發(fā)生時,對頁面上中的字符識別存在較大的誤差,并且在后續(xù)利用識別結(jié)果進行語義分析時也很難達到很高的準確性。另外,現(xiàn)有技術(shù)中對字符分行是根據(jù)字符間距實現(xiàn)的,但隨著環(huán)境變化在把字符塊組合成行時有很大可能會被其它字符所影響,從而會影響最終所給出的識別效果。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種字符識別的處理方法和裝置,用于提高字符識別的識別效果。
為解決上述技術(shù)問題,本發(fā)明實施例提供以下技術(shù)方案:
第一方面,本發(fā)明實施例提供一種字符識別的處理方法,包括:
根據(jù)字符在頁面上的高度信息將所述頁面上的多個字符歸屬到所述頁面上的多個行上,得到所述頁面上的每一行包括的多個字符,所述字符在頁面上的高度信息包括:該字符在所述頁面上的縱坐標和該字符的高度范圍;
按照所述頁面上字符之間在高度范圍上的重疊信息對所述頁面上的每個 行包括的多個字符進行行校正,得到所述頁面上的每一行包括的行校正后的多個字符;
使用語義分析模型對所述頁面上的每一行包括的行校正后的多個字符進行語義校正。
第二方面,本發(fā)明實施例還提供一種字符識別的處理裝置,包括:
行拆分模塊,用于根據(jù)字符在頁面上的高度信息將所述頁面上的多個字符歸屬到所述頁面上的多個行上,得到所述頁面上的每一行包括的多個字符,所述字符在頁面上的高度信息包括:該字符在所述頁面上的縱坐標和該字符的高度范圍;
行校正模塊,用于按照所述頁面上字符之間在高度范圍上的重疊信息對所述頁面上的每個行包括的多個字符進行行校正,得到所述頁面上的每一行包括的行校正后的多個字符;
語義校正模塊,用于使用語義分析模型對所述頁面上的每一行包括的行校正后的多個字符進行語義校正。
從以上技術(shù)方案可以看出,本發(fā)明實施例具有以下優(yōu)點:
在本發(fā)明實施例中,首先根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符,字符在頁面上的高度信息包括:該字符在頁面上的縱坐標和該字符的高度范圍,接下來按照頁面上字符之間在高度范圍上的重疊信息對頁面上的每個行包括的多個字符進行行校正,得到頁面上的每一行包括的行校正后的多個字符,最后使用語義分析模型對頁面上的每一行包括的行校正后的多個字符進行語義校正。本發(fā)明中采用字符在頁面上的高度信息將頁面上的所有字符歸屬到多個行,由于同一行的字符在頁面上的縱坐標以及字符的高度范圍都相對固定,因此按照字符的高度信息對頁面上的所有字符進行分行到的分行結(jié)果是準確的,并且本發(fā)明中還可以按照頁面上字符之間在高度范圍上的重疊信息對每個行包括的多個字符進行行校正,因此可以通過重疊信息檢測到對不同格式的字符排版中字符應(yīng)該歸屬的行,通過重疊信息也可以檢測到拍攝的原始頁面中可能存在傾斜的字符,另外本發(fā)明中還可以利用語義分析模型對字符進行語義校正,因此對字符進行行校正和語義校正可以改變因字符排版的 格式不同以及拍攝原始頁面中存在傾斜的字符導(dǎo)致的識別錯誤,提高字符識別的識別效果。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域的技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種字符識別的處理方法的流程方框示意圖;
圖2-a為本發(fā)明實施例提供的一種對字符識別的處理方法的實現(xiàn)場景示意圖;
圖2-b為本發(fā)明實施例提供的校正字符的行屬性的一種實現(xiàn)方式示意圖;
圖2-c為本發(fā)明實施例提供的采用語義分析模型進行語義校正之前的一種頁面內(nèi)容示意圖;
圖2-d為本發(fā)明實施例提供的采用語義分析模型進行語義校正之后的一種頁面內(nèi)容示意圖;
圖3-a為本發(fā)明實施例提供的一種字符識別的處理裝置的組成結(jié)構(gòu)示意圖;
圖3-b為本發(fā)明實施例提供的一種行拆分模塊的組成結(jié)構(gòu)示意圖;
圖3-c為本發(fā)明實施例提供的一種行校正模塊的組成結(jié)構(gòu)示意圖;
圖3-d為本發(fā)明實施例提供的另一種字符識別的處理裝置的組成結(jié)構(gòu)示意圖;
圖3-e為本發(fā)明實施例提供的另一種字符識別的處理裝置的組成結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的字符識別的處理方法應(yīng)用于服務(wù)器的組成結(jié)構(gòu)示意圖。
具體實施方式
本發(fā)明實施例提供了一種字符識別的處理方法和裝置,用于提高字符識別的識別效果。
為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例。基于本發(fā)明中的實施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它單元。
以下分別進行詳細說明。
本發(fā)明字符識別的處理方法的一個實施例,具體可以應(yīng)用于COR技術(shù)中,請參閱圖1所示,本發(fā)明一個實施例提供的字符識別的處理方法,可以包括如下步驟:
101、根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符。
其中,字符在頁面上的高度信息包括:該字符在頁面上的縱坐標和該字符的高度范圍。
在本發(fā)明實施例中,頁面上的字符可以是通過OCR技術(shù)從頁面上分割出單個字符以及識別出各個字符之后得到的字符,首先獲取到頁面上每個字符的高度信息,其中,字符的高度信息是指:該字符在頁面上的縱坐標和該字符的高度范圍,通過字符在頁面上的高度信息可以準確的確定出字符在頁面上縱坐標方向上的固定坐標,以及字符在縱坐標方向上的最低點坐標和最高點坐標,其中,縱坐標方向上的最高點坐標和最低點坐標之間的差值即為字符的高度范圍。舉例說明,可以以當前頁面的左上角頂點作為坐標原點,以左上角頂點作為參考點,測量出在縱坐標方向上字符的左上角頂點到該坐標原點的距離作為字符的縱坐標,另外字符的左上角頂點為字符在縱坐標方向上的最高點坐標,字符的左下角頂點為字符在縱坐標方向上的最低點坐標, 通過最高點坐標和最低點坐標之間的差值計算出字符的高度范圍,也可以稱之為高度大小。
本發(fā)明實施例中,計算出頁面上的所有字符的高度信息,然后根據(jù)頁面上字符的高度信息對頁面上的多個字符進行行歸屬的拆分,即根據(jù)字符的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,與現(xiàn)有技術(shù)使用字符的間距進行行劃分不同,本發(fā)明實施例中對字符的行歸屬確定方法使用的是字符所在頁面的高度信息,即使用字符在頁面上的縱坐標和該字符的高度范圍來確定行的歸屬,因為同一行的字符在頁面上的縱坐標以及字符的高度范圍都相對固定,因此按照字符的高度信息對頁面上的所有字符進行分行到的分行結(jié)果是準確的。進一步的,在本發(fā)明的一些實施例中,步驟101根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符,具體可以包括如下步驟:
A1、從頁面上的多個字符中任意選擇一個字符作為當前字符,根據(jù)當前字符在頁面上的高度信息計算當前字符的中心點在頁面上的縱坐標;
A2、判斷當前字符的中心點是否在當前字符的前一個字符的高度范圍內(nèi),若當前字符的中心點在當前字符的前一個字符的高度范圍內(nèi),則當前字符和前一個字符屬于同一個行,若當前字符的中心點不在當前字符的前一個字符的高度范圍內(nèi),則當前字符和前一個字符分別屬于兩個不同的行。
其中,步驟A1至A2中給出了一個字符進行行歸屬的判斷方法,對于步驟A1至A2的行歸屬判斷方式適用于對頁面上每個字符的行歸屬確定過程,其中,以頁面上的多個字符中任意選擇的一個字符作為當前字符,步驟A1和步驟A2中均以對當前字符的行歸屬判斷為例,頁面中的所有字符都可以采用對當前字符的行歸屬判斷方式。其中,當前字符的中心點指的是字符在縱坐標方向上高度范圍的中間值,例如,當前字符的高度范圍為(y1,y2),則字符的中心點在縱坐標方向上的縱坐標為(y1+y2)/2,將當前字符的縱坐標(y1+y2)/2和當前字符的前一個字符的高度范圍進行判斷,從而可以判斷當前字符和當前字符的前一個字符的行歸屬。
需要說明的是,在本發(fā)明的一些實施例中,步驟101根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上之前,本發(fā)明實施 例提供的字符識別的處理方法還可以包括如下步驟:
B1、根據(jù)從頁面上分割出的多個符號塊識別出頁面上的多個原始字符;
B2、根據(jù)頁面上每個原始字符的高度范圍和寬度范圍從頁面上的所有原始字符中剔除掉過大字符或過小字符,得到頁面上的多個字符。
其中,頁面上的原始字符可以是通過OCR技術(shù)從頁面上分割出單個字符以及識別出各個字符之后得到的字符,首先獲取到頁面上每個原始字符的高度信息和寬度信息,其中,原始字符的高度信息與前述內(nèi)容描述的字符的高度信息相類似,原始字符的寬度信息是指:該原始字符在頁面上的橫坐標和該原始字符的寬度范圍,通過原始字符在頁面上的高度信息和寬度信息可以準確的確定出原始字符在頁面上縱坐標方向上的固定坐標和橫坐標方向上的固定坐標,以及原始字符在縱坐標方向上的高度范圍和寬度范圍。另外步驟B2中所述的過大字符指的是在高度范圍和/或?qū)挾确秶洗笥谝欢〝?shù)值的字符,步驟B2中所述的過小字符指的是在高度范圍和/或?qū)挾确秶闲∮谝欢〝?shù)值的字符,從頁面上的所有原始字符中剔除掉過大字符或過小字符,可以得到步驟101中所述的頁面上的多個字符。
進一步的,上述步驟B2根據(jù)頁面上每個原始字符的高度范圍和寬度范圍從頁面上的所有原始字符中剔除掉過大字符或過小字符,得到頁面上的多個字符,具體可以包括如下步驟:
B21、根據(jù)頁面上每個原始字符的高度范圍和寬度范圍分別計算頁面的平均字符高度和平均字符寬度;
B22、根據(jù)平均字符高度從頁面上的所有原始字符中剔除掉高度范圍大于平均字符高度的N倍的原始字符或者高度范圍小于平均字符高度的M倍的原始字符,和根據(jù)平均字符寬度從頁面上的所有原始字符中剔除掉寬度范圍大于平均字符寬度的N倍的原始字符或者寬度范圍小于平均字符寬度的M倍的原始字符,完成剔除后得到頁面上的字符,N為大于1的數(shù)值,M為大于0小于1的數(shù)值。
其中,步驟B21中頁面的平均字符高度是指頁面上所有原始字符的高度的平均值,頁面的平均字符寬度是指頁面上所有原始字符的寬度的平均值,步驟B22中N的取值可以為1.5,即步驟B22中需要剔除掉高度范圍為平均 字符高度的1.5倍的原始字符,也需要剔除掉寬度范圍為平均字符寬度的1.5倍的原始字符,步驟B22中M的取值可以為0.2,即步驟B22中需要剔除掉高度范圍為平均字符高度的0.2倍的原始字符,也需要剔除掉寬度范圍為平均字符寬度的0.2倍的原始字符,按照上述方式從頁面上的所有原始字符中剔除掉過大字符或過小字符,得到步驟101中所述的頁面上的字符,其中N和M的具體取值可不局限于前述舉例說明,還可以結(jié)合具體的應(yīng)用場景來決定N、M的具體取值。
在本發(fā)明的一些實施例中,步驟101根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符之后,本發(fā)明實施例提供的字符識別的處理方法還可以包括如下步驟:
C1、根據(jù)頁面上的每一行中相鄰兩個字符之間的字符間距計算頁面上的每一行的字符段分割距離;
C2、根據(jù)字符段分割距離對頁面上的每一行包括的多個字符進行分段,得到頁面上的每一行包括的多個字符段。
其中,步驟C1中,首先獲取到頁面上每個字符的寬度信息,字符的寬度信息是指:該字符在頁面上的橫坐標和該字符的寬度范圍,通過字符在頁面上的寬度信息可以準確的確定出字符在頁面上的橫坐標方向上的固定坐標,以及字符在縱坐標方向上的寬度范圍。則在同一個行中相鄰兩個字符之間的字符間距就是后一個字符與前一個字符之間的橫坐標差值,根據(jù)一個行中相鄰兩個字符之間的字符間距計算出在頁面上的每一個行的字符段分割距離,根據(jù)每一行中相鄰兩個字符之間的字符間距對如何設(shè)置字符段分割距離進行設(shè)置,其中,字符段是所在一行中可以拆分成多組字符的集合,舉例說明如下:在頁面中的一個行中記錄的內(nèi)容如下:
姓名:小明 年級:三年級二班 性別:男
則在如上的行有就可以有3個字符段,分別為“姓名:小明”、“年級:三年級二班”、“性別:男”。預(yù)測出字符段分割距離之后,采用該字符段分割距離對每一行包括的多個字符進行分段,得到頁面上的每一行包括的多個字符段。
進一步的,步驟C1根據(jù)頁面上的每一行中相鄰兩個字符之間的字符間距 計算頁面上的每一行的字符段分割距離,具體可以包括如下步驟:
C11、計算出頁面上的每一行中相鄰兩個字符之間的字符間距;
C12、對每一行中相鄰兩個字符之間的字符間距按照數(shù)值大小進行降序排列,選擇字符間距中的中間值作為頁面上的每一行的字符段分割距離。
其中,計算出每一行中相鄰兩個字符之間的字符間距之后,對獲取到所有字符間距按照數(shù)值大小進行降序排列,選擇在排序中處于中間值的字符間距作為字符段分割距離,字符段分割距離作為字符段分割的依據(jù),選擇所有字符間距中的中間值作為字符段分割距離可以準確的獲取到每一行中的字符段。
進一步的,步驟C2根據(jù)字符段分割距離對頁面上的每一行包括的多個字符進行分段,得到頁面上的每一行包括的多個字符段,具體可以包括如下步驟:
C21、從頁面上的多個字符中任意選擇一個字符作為當前字符,獲取當前字符與相鄰字符之間的字符間距;
C22、若當前字符與相鄰字符之間的字符間距小于或等于字符段分割距離,將當前字符和相鄰字符劃分到一個字符段中,若當前字符與相鄰字符之間的字符間距大于字符段分割距離,將當前字符和相鄰字符劃分到兩個不同的字符段中。
其中,步驟C21至C22中給出了一個字符段的判斷方法,對于步驟C21至C22的字符段判斷方式適用于對頁面上每個字符的字符段確定過程,其中,以頁面上的多個字符中任意選擇的一個字符作為當前字符,步驟C21和步驟C22中均以對當前字符的字符段判斷為例,頁面中的所有字符都可以采用對當前字符的字符段判斷方式。
102、按照頁面上字符之間在高度范圍上的重疊信息對頁面上的每個行包括的多個字符進行行校正,得到頁面上的每一行包括的行校正后的多個字符。
在本發(fā)明實施例中,針對頁面上所有字符,獲取頁面上所有字符之間在高度范圍上有重疊的字符,對字符之間在高度范圍上存在重疊的字符進行行校正,其中,頁面上字符之間在高度范圍上存在重疊可以判斷出頁面上的大致處于同一個行的多個字符,因為在頁面上屬于同一個行的多個字符的高度 范圍都相類似,若因為字符的排版或者拍攝頁面的圖片中字符產(chǎn)生傾斜時,有些字符可能被劃分到錯誤的行,因此本發(fā)明實施例中在對頁面上的字符歸屬到多個行之后,還可以按照重疊信息對頁面上的每個行包括的多個字符進行行校正,從而糾正可能出現(xiàn)的對字符進行行歸屬時產(chǎn)生的判斷錯誤。
在本發(fā)明的一些實施例中,步驟102按照頁面上字符之間在高度范圍上的重疊信息對頁面上的每個行包括的多個字符進行行校正,具體可以包括如下步驟:
D1、從頁面上的多個字符中任意選擇一個字符作為當前字符,獲取高度范圍與當前字符的高度范圍有重疊的多個字符;
D2、若獲取到的高度范圍與當前字符的高度范圍有重疊的多個字符都屬于同一個行,則保持當前字符所在的行不變;
D3、若獲取到的高度范圍與當前字符的高度范圍有重疊的多個字符分別屬于兩個行,分別計算出兩個行中高度范圍與當前字符的高度范圍有重疊的字符的個數(shù),將當前字符所在的行確定為高度范圍與當前字符的高度范圍有重疊的字符的個數(shù)最多的行。
其中,步驟D1至D2中給出了一個字符進行行校正的方法,對于步驟D1至D3的行校正判斷方式適用于對頁面上每個字符的行校正的確定過程,其中,以頁面上的多個字符中任意選擇的一個字符作為當前字符,步驟D1至步驟D3中均以對當前字符的行校正為例,頁面中的所有字符都可以采用對當前字符的行校正方式。其中,高度范圍與當前字符的高度范圍有重疊的多個字符可能是同一個行,也可能是相鄰的兩個行,步驟D3中通過統(tǒng)計的方式判斷出當前字符應(yīng)該歸屬的行,可以對原步驟101中進行行歸屬判斷后進一步的實現(xiàn)行校正,從而可以實現(xiàn)高準確度的字符識別。
103、使用語義分析模型對頁面上的每一行包括的行校正后的多個字符進行語義校正。
在本發(fā)明實施例中,得到頁面上的每一個行包括的行校正后的多個字符之后,可以按照預(yù)設(shè)的語義分析模型對上述字符進行語義校正,其中,本發(fā)明實施例中采用的語義分析模型可以是word2vec,或者隱馬爾科夫模型等,對字符進行語義校正可以實現(xiàn)對字符識別結(jié)果的進一步優(yōu)化,得到更符合語 言習(xí)慣的字符識別效果。
在本發(fā)明的前述實施例中,若執(zhí)行步驟C1和C2,則通過步驟102進行行校正之后,頁面上每一行都包括多個字符段,多個字符段中每個字符段包括:行校正后的多個字符,在這種實現(xiàn)場景下,步驟103使用語義分析模型對頁面上的每一行包括的行校正后的多個字符進行語義校正,包括:
E1、使用語義分析模型對頁面上的每一行中字符段內(nèi)信息和字符段間信息分別進行語義校正。
其中,若獲取到了頁面上的每一行包括的字符段,則可以對字符段間和字符段內(nèi)分別進行語義校正,具體使用語義分析模型進行語義校正的過程可參閱現(xiàn)有技術(shù)。
通過以上實施例對本發(fā)明實施例的描述可知,首先根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符,字符在頁面上的高度信息包括:該字符在頁面上的縱坐標和該字符的高度范圍,接下來按照頁面上字符之間在高度范圍上的重疊信息對頁面上的每個行包括的多個字符進行行校正,得到頁面上的每一行包括的行校正后的多個字符,最后使用語義分析模型對頁面上的每一行包括的行校正后的多個字符進行語義校正。本發(fā)明中采用字符在頁面上的高度信息將頁面上的所有字符歸屬到多個行,由于同一行的字符在頁面上的縱坐標以及字符的高度范圍都相對固定,因此按照字符的高度信息對頁面上的所有字符進行分行到的分行結(jié)果是準確的,并且本發(fā)明中還可以按照頁面上字符之間在高度范圍上的重疊信息對每個行包括的多個字符進行行校正,因此可以通過重疊信息檢測到對不同格式的字符排版中字符應(yīng)該歸屬的行,通過重疊信息也可以檢測到拍攝的原始頁面中可能存在傾斜的字符,另外本發(fā)明中還可以利用語義分析模型對字符進行語義校正,因此對字符進行行校正和語義校正可以改變因字符排版的格式不同以及拍攝原始頁面中存在傾斜的字符導(dǎo)致的識別錯誤,提高字符識別的識別效果。
為便于更好的理解和實施本發(fā)明實施例的上述方案,下面舉例相應(yīng)的應(yīng)用場景來進行具體說明。本發(fā)明實施例中對于獲取到所分割的字符塊,不僅 采用了字符塊間彼此的邏輯關(guān)系,并且也考慮到分行中字符本身行的不對齊問題,即所拍攝的字符行不是水平的時的行校正。
由于目前OCR技術(shù)中很多人所關(guān)注的是字符分割和識別部分,對于最終的顯示結(jié)果,通過字符行分割和合并,在結(jié)合需要使用的語義分析會對OCR的整體效果有很大提升,尤其在生成OCR字符行不平行,有噪點等多種情況下,本發(fā)明實施例能很好的進行字符行拆分,使用場景廣泛。本發(fā)明的一種應(yīng)用場景,具體可以包括如下步驟,請參閱如圖2-a所示。
步驟1、OCR識別出的單個字符
本發(fā)明實施例中,首先通過OCR技術(shù)對單個字符分割、識別。首先利用OCR技術(shù)中的字符分割方法(如圖像二值化,凸包等方法)得到分割后的各個字符塊,然后通過邏輯和字符塊間關(guān)系把合理的單個字符分割并識別出原始字符。識別方法如:基于凸包輪廓的匹配,基于圖像灰度的梯度特征匹配等,得到了一個頁面下所有分割的字符以及其識別結(jié)果,基于上述結(jié)果,接著通過二值化、凸包等方法得到了每個字符的各個小塊組成,如字符“小”得到三部分的小塊,分別為:左點,豎勾、右點,通過組合各字符塊識別,最終識別出這三塊字符合并在一起所得的漢字。
步驟2、去除頁面上的噪點
通過計算頁面中總體字符的寬(用char_width表示)和高(用char_height表示)總和,得到關(guān)于該頁面的平均字符寬度(char_average_width)和平均字符高度(char_average_height),然后從頁面的原始字符中去掉大于1.5*char_average_width或1.5*char_average_height的原始字符,因為在一個字符的頁面中,大部分情況下都是基于字符的分布,而字符的分布有一定的規(guī)律性,要么在寬高上一致(例如:國、并),要么寬一致(例如:一、二),要么高一致(例如如:!、[等),在字符識別中總有些較大的塊或較小的塊會影響字符的分行效果,例如較大塊會占用兩行的字符高度,再合并過程中使得當前原本分為兩行的字符段合并為一個字符段,從而影響最終的字符識別結(jié)果。
步驟3、計算頁面每一行和字符段
首先,計算得到頁面上的字符分行的初步拆分結(jié)果。利用步驟1中得到 合理的字符分布,按照如下邏輯進行字符的合并從而得到初步的字符段(用char_section表示)。
(1)、對每個字符所屬行進行標簽化:當前字符的位置可以定義為(char_x,char_y,char_width,char_height),其中,char_x為當前字符左上角所在頁面的x坐標,char_y為當前字符左上角所在頁面的y坐標,char_width為當前字符寬度,當前字符的寬度范圍為(char_x,char_x+char_width),char_height為當前字符高度,當前字符的高度范圍為(char_y,char_y+char_height)。利用這里所屬的字符位置信息,可以計算出每個字符的中心點的y坐標為:char_y+char_height/2,若當前字符的中心點y坐標在當前字符的前一個字符所在的高度范圍內(nèi),則當前字符與前一個字符是屬于一行,公式化如下:
chari+1_y+chari+1_height/2∈[chari_y,chari_y+chari_height];
其中,i=(1,2,3,....n),n為當前頁面的總字符數(shù)。
根據(jù)上述方法可以把每一個字符歸屬到對應(yīng)的行上,這樣就得到了當前頁面字符的初步行屬性分布。
(2)對所屬每一行的字符計算出進行字符合并的字符段分割距離:
通過上面(1)的方法得到每一行的所屬字符后,利用下述方法計算出當前行中相連兩個字符之間的字符間距:
distancek=chari+1_x-(chari_x+chari_width);
其中i=1,2,3,......m,k=1,2,3,.....m-1,m為當前行中的字符數(shù)。對所存儲的每個相鄰字符間距(distance)按照降序進行排序,選取里面的中間值(即distance_sort_middle)作為當前行的字符段分割距離。
(3)根據(jù)字符段分割距離對當前行的字符進行分段,得到當前行的每個字符段:
對于當前行中的字符間距大于distance_sort_middle的字符拆分到兩個字符段中,對于小于distance_sort_middle的字符合并到同一個字符段中。其中,這里的拆分就是把當前字符單獨作為新的集合表示,合并是把當前字符合并到滿足條件的集合中用于構(gòu)建字符段。
按照上述方法得到了一個頁面下字符所屬行和行中字符的分段信息,然后執(zhí)行步驟4。
步驟4、對字符進行行校正
其中,對頁面上的字符校正字符行屬性:在對字符進行行屬性劃分過程中因拍攝角度問題會出現(xiàn)本為一行的字符不再水平方向上,如圖圖2-b所示,每個框為一個字符分布,本屬于第二行的字符因為拍攝角度等外界原因被標注了第一行的屬性,長線框框和點框所框出的字符行是按照步驟3中的方法得到的,本步驟4中可采用校正的方法如下:
(1)、在完成步驟3方法下得到當前頁面所有字符的行屬性,對每個字符按照如下方法計算當前字符的行歸屬信息:
當前字符行范圍:chari_range=[chari_y,chari_y+chari_height];
如果chari_range與另外一個字符的charj_range有重疊,則對chari_line_record這個一維記錄數(shù)組相應(yīng)位置增加一個記錄值。最后比對兩個行中各自存在重疊的字符的個數(shù)之后,取chari_line_record里面數(shù)值最高所對應(yīng)的行為當前chari的行屬性。以圖2-b為例,對于頁面中兩個行中的最后一個字符,chari_line_record數(shù)組長度為2,利用當前字符行范圍進行判斷,可以得到圖2-b最后一個字符在第一行中重疊的字符個數(shù)為5,chari_line_record[0]=5而在第二行中重疊的字符個數(shù)為:6,chari_line_record[1]=6,這時選取數(shù)組中數(shù)值最高的6所在行(即第二行)作為當前字符的行屬性,那么圖2-b中最后一個字符的行屬性確定為第二行。
其中,i,j=(1,2,3,....n),n為當前頁面的總字符數(shù),chari_range是一個字符在y方向的分布范圍,chari_line_record是初始值為0的一個維數(shù)組,維度數(shù)為步驟3方法下所得到的總行數(shù)。
步驟5、對字符段內(nèi)信息和字符段間信息進行語義校正
對于已經(jīng)分割融合好的各字符段,可采用語義分析模型對字符段再次進行語義校正,及是對字符段內(nèi)識別的每個字符內(nèi)容融合語義分析模型進行判斷,語義分析模型可以采用當前比較成熟的技術(shù)如:word2vec,或者隱馬爾科夫模型等。這樣對于字符段內(nèi)本身識別有誤的部分進行校正,如原本為深圳市,被錯誤識別為深訓(xùn)市等,對于字符段間,則可以利用語義分析模型進行進一步語義校正,請分別參閱如圖2-c和圖2-d所示,圖2-c為語義校正前的字符段示意圖,圖2-d為語義校正后的字符段示意圖,按照語義分析模型, “結(jié)”和“果”應(yīng)該屬于一個語義段,因此可以進行語義段的合并。
通過前述舉例對本發(fā)明的描述可知,本發(fā)明可利用字符間距以及字符所在頁面的位置,融合字符本身內(nèi)容和語義分析,對部分字符行的拆分進行矯正,從而使得字符行分割更合理,在呈現(xiàn)結(jié)果上更符合語言邏輯。經(jīng)過大量的實驗測試證明,本發(fā)明實施例提供的方法會比其它原有的方法在對OCR字符分行分段上更合理,且在內(nèi)容上以及字符結(jié)構(gòu)排布上更符合語言的習(xí)慣。
需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
為便于更好的實施本發(fā)明實施例的上述方案,下面還提供用于實施上述方案的相關(guān)裝置。
請參閱圖3-a所示,本發(fā)明實施例提供的一種字符識別的處理裝置300,可以包括:行拆分模塊301、行校正模塊302、語義校正模塊303,其中,
行拆分模塊301,用于根據(jù)字符在頁面上的高度信息將所述頁面上的多個字符歸屬到所述頁面上的多個行上,得到所述頁面上的每一行包括的多個字符,所述字符在頁面上的高度信息包括:該字符在所述頁面上的縱坐標和該字符的高度范圍;
行校正模塊302,用于按照所述頁面上字符之間在高度范圍上的重疊信息對所述頁面上的每個行包括的多個字符進行行校正,得到所述頁面上的每一行包括的行校正后的多個字符;
語義校正模塊303,用于使用語義分析模型對所述頁面上的每一行包括的行校正后的多個字符進行語義校正。
在本發(fā)明的一些實施例中,如圖3-b所示,所述行拆分模塊301,包括:
字符中心點確定單元3011,用于從所述頁面上的多個字符中任意選擇一個字符作為當前字符,根據(jù)所述當前字符在頁面上的高度信息計算所述當前字符的中心點在所述頁面上的縱坐標;
行判斷單元3012,用于判斷所述當前字符的中心點是否在所述當前字符 的前一個字符的高度范圍內(nèi),若當前字符的中心點在所述當前字符的前一個字符的高度范圍內(nèi),則所述當前字符和所述前一個字符屬于同一個行,若當前字符的中心點不在所述當前字符的前一個字符的高度范圍內(nèi),則所述當前字符和所述前一個字符分別屬于兩個不同的行。
在本發(fā)明的一些實施例中,如圖3-c所示,所述行校正模塊302,包括:
高度重疊字符確定單元3021,用于從所述頁面上的多個字符中任意選擇一個字符作為當前字符,獲取高度范圍與所述當前字符的高度范圍有重疊的多個字符;
行確定單元3022,用于若獲取到的高度范圍與所述當前字符的高度范圍有重疊的多個字符都屬于同一個行,則保持所述當前字符所在的行不變;若獲取到的高度范圍與所述當前字符的高度范圍有重疊的多個字符分別屬于兩個行,分別計算出兩個行中高度范圍與所述當前字符的高度范圍有重疊的字符的個數(shù),將所述當前字符所在的行確定為高度范圍與所述當前字符的高度范圍有重疊的字符的個數(shù)最多的行。
在本發(fā)明的一些實施例中,如圖3-d所示,所述字符識別的處理裝置300,還包括:字符去噪模塊304,用于所述行拆分模塊301根據(jù)字符在頁面上的高度信息將所述頁面上的多個字符歸屬到所述頁面上的多個行上之前,根據(jù)從所述頁面上分割出的多個符號塊識別出所述頁面上的多個原始字符;根據(jù)所述頁面上每個原始字符的高度范圍和寬度范圍從所述頁面上的所有原始字符中剔除掉過大字符或過小字符,得到所述頁面上的多個字符。
在本發(fā)明的一些實施例中,如圖3-e所示,所述字符識別的處理裝置300,還包括:字符段確定模塊305,用于所述行拆分模塊301根據(jù)字符在頁面上的高度信息將所述頁面上的多個字符歸屬到所述頁面上的多個行上,得到所述頁面上的每一行包括的多個字符之后,根據(jù)所述頁面上的每一行中相鄰兩個字符之間的字符間距計算所述頁面上的每一行的字符段分割距離;根據(jù)所述字符段分割距離對所述頁面上的每一行包括的多個字符進行分段,得到所述頁面上的每一行包括的多個字符段。
在本發(fā)明的一些實施例中,所述多個字符段中每個字符段包括:行校正后的字符;
所述語義校正模塊303,具體用于使用語義分析模型對所述頁面上的每一行中字符段內(nèi)信息和字符段間信息分別進行語義校正。
通過以上對本發(fā)明實施例的描述可知,首先根據(jù)字符在頁面上的高度信息將頁面上的多個字符歸屬到頁面上的多個行上,得到頁面上的每一行包括的多個字符,字符在頁面上的高度信息包括:該字符在頁面上的縱坐標和該字符的高度范圍,接下來按照頁面上字符之間在高度范圍上的重疊信息對頁面上的每個行包括的多個字符進行行校正,得到頁面上的每一行包括的行校正后的多個字符,最后使用語義分析模型對頁面上的每一行包括的行校正后的多個字符進行語義校正。本發(fā)明中采用字符在頁面上的高度信息將頁面上的所有字符歸屬到多個行,由于同一行的字符在頁面上的縱坐標以及字符的高度范圍都相對固定,因此按照字符的高度信息對頁面上的所有字符進行分行到的分行結(jié)果是準確的,并且本發(fā)明中還可以按照頁面上字符之間在高度范圍上的重疊信息對每個行包括的多個字符進行行校正,因此可以通過重疊信息檢測到對不同格式的字符排版中字符應(yīng)該歸屬的行,通過重疊信息也可以檢測到拍攝的原始頁面中可能存在傾斜的字符,另外本發(fā)明中還可以利用語義分析模型對字符進行語義校正,因此對字符進行行校正和語義校正可以改變因字符排版的格式不同以及拍攝原始頁面中存在傾斜的字符導(dǎo)致的識別錯誤,提高字符識別的識別效果。
圖4是本發(fā)明實施例提供的字符識別的處理方法應(yīng)用于一種服務(wù)器的結(jié)構(gòu)示意圖,該服務(wù)器400可因配置或性能不同而產(chǎn)生比較大的差異,可以包括一個或一個以上中央處理器(central processing units,CPU)422(例如,一個或一個以上處理器)和存儲器432,一個或一個以上存儲應(yīng)用程序442或數(shù)據(jù)444的存儲介質(zhì)430(例如一個或一個以上海量存儲設(shè)備)。其中,存儲器432和存儲介質(zhì)430可以是短暫存儲或持久存儲。存儲在存儲介質(zhì)430的程序可以包括一個或一個以上模塊(圖示沒標出),每個模塊可以包括對服務(wù)器中的一系列指令操作。更進一步地,中央處理器422可以設(shè)置為與存儲介質(zhì)430通信,在服務(wù)器400上執(zhí)行存儲介質(zhì)430中的一系列指令操作。
服務(wù)器400還可以包括一個或一個以上電源426,一個或一個以上有線或無線網(wǎng)絡(luò)接口450,一個或一個以上輸入輸出接口458,和/或,一個或一個以 上操作系統(tǒng)441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,F(xiàn)reeBSDTM等等。
上述實施例中由服務(wù)器所執(zhí)行的步驟可以基于該圖1所示的字符識別的處理方法。
另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機程序完成的功能都可以很容易地用相應(yīng)的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,對本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質(zhì)中,如計算機的軟盤,U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述的方法。
綜上所述,以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照上述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當理解:其依然可以對上述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。