專利名稱:文檔的文字提取方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于數(shù)據(jù)加工領(lǐng)域,涉及一種文檔的文字提取方法和裝置。
背景技術(shù):
在版式文檔創(chuàng)建時打包字體的過程中,有些廠商為了防止文檔中的文字被復(fù)制而采用隨機(jī)編碼對文檔進(jìn)行加工,這類文檔在導(dǎo)出時所得的文本則為亂碼。目前,這類版式文檔的加工過程為將整個文檔按頁生成版面圖片,并采用OCR識別引擎對圖片進(jìn)行識別,經(jīng)版面校對后對文字進(jìn)行校對,并導(dǎo)出得到的文本。在此過程當(dāng)中,一些OCR識別引擎的抗噪性差,特別是在文檔版式混亂或者含背景文字當(dāng)中,OCR識別的準(zhǔn)確率不高,而且在版面校對特別是文字校對中,同一個字出現(xiàn)多次的情況下,如果一處的文字識別發(fā)生錯誤,則文檔中的多處對應(yīng)位置都發(fā)生錯誤,如要校正就需要修改多次文本。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種文檔的文字提取方法和裝置。根據(jù)字符的原始編碼確定的字模圖像,對字模圖像OCR識別后,根據(jù)著墨位置和基線(base line)的相對位置校正標(biāo)點字符的編碼,并手動修改識別結(jié)果,根據(jù)校正情況更新字符映射表,從而形成正確的文本。本發(fā)明公開了一種文檔的文字提取方法和裝置,包括以下步驟步驟1 解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表;步驟2 根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像;步驟3 將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域;步驟4 對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;步驟5 根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。所述步驟1中字體的對應(yīng)信息包括基線、原始編碼、字體名、Ascent、Descent.所述步驟1中的字符映射表包括原始編碼和修正編碼兩屬性列,其中分別記錄解析文檔后得到的字符對應(yīng)的原始編碼。所述步驟2中字模圖像為字體對應(yīng)信息經(jīng)路徑填充算法提取點陣得到的二值圖像。所述步驟3中將字模圖像逐像素掃描,在字模圖像的各邊緣方向上的第一個黑色像素點為頂點,分別作出四條邊線形成矩形區(qū)域,按矩形區(qū)域進(jìn)行裁剪得到著墨區(qū)域。所述步驟4中各字符的識別結(jié)果包括識別編碼和匹配度,并按匹配度大小順次存儲在線性結(jié)構(gòu)的各單元中。所述步驟5的根據(jù)識別結(jié)果對字符映射表進(jìn)行更新具體為對識別結(jié)果中的標(biāo)點字符進(jìn)行自適應(yīng)基線校正,更新字符映射表中對應(yīng)的修正編碼。所述自適應(yīng)基線校正為根據(jù)標(biāo)點字符的著墨區(qū)域形狀與基線的相對位置關(guān)系進(jìn)行校正。所述自適應(yīng)基線校正后,手動對識別結(jié)果進(jìn)行編碼校正。本發(fā)明還公開了一種文檔的文字提取裝置,包括以下模塊解析模塊解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表;圖像模塊根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像;裁剪模塊將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域;識別模塊對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;更新模塊根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。本發(fā)明一種文檔的文字提取方法和裝置,對原始編碼進(jìn)行路徑填充得到字模圖像,裁剪為著墨區(qū)域后經(jīng)過識別得到識別結(jié)果,經(jīng)過著墨區(qū)域與基線相對位置進(jìn)行自適應(yīng)基線校正后進(jìn)行手動校正,然后建立字符映射表,從而對文檔提取文本信息,改進(jìn)了數(shù)據(jù)加工的流程,也減少了數(shù)據(jù)的加工工作量,使隨機(jī)編碼的打包字體不會成為數(shù)據(jù)加工的障礙。 對于特定的版式文檔(包含隨機(jī)編碼的打包字體)無需識別整個頁面圖像,即可獲得正確的文本信息,最大限度減少了人工干預(yù),保留了文檔的格式和邏輯信息。
圖1為本發(fā)明文檔的文字提取方法的流程圖;圖2為本發(fā)明文檔的文字提取方法中字體的對應(yīng)信息示意圖;圖3為本發(fā)明文檔的文字提取方法的基線示意圖;圖4為本發(fā)明文檔的文字提取方法的文檔字體示意圖;圖5為本發(fā)明文檔的文字提取方法的字模圖像示意圖;圖6為本發(fā)明文檔的文字提取方法的帶方向填充算法的示意圖;圖7為本發(fā)明文檔的文字提取方法的著墨區(qū)域示意圖;圖8為本發(fā)明文檔的文字提取方法的字符識別形成的識別編碼示意圖;圖9為本發(fā)明文檔的文字提取方法的基線校正示意圖;圖10為本發(fā)明文檔的文字提取方法的手動進(jìn)行編碼校正示意圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進(jìn)一步詳細(xì)的說明。本發(fā)明公開了一種文檔的文字提取方法,如圖1所示,包括以下步驟步驟1 解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表;字體的對應(yīng)信息包括基線、原始編碼、字體名、Ascent (上升部)、Descent (下降部)、EM Square。如圖2所示,Ascent表示基線之上垂直距離,本實施例中,Ascent為4/5 字符的高。Descent表示基線之下的垂直距離,Descent為1/5字符的高。EM Square指用于顯示字符圖像的給定面積,表示字體當(dāng)中輪廓縮放目標(biāo)的大小(由應(yīng)用程序決定),EM Square 的大小等于 EM HeightXEMHeight0
4
基線是所有文字對齊的一個特定坐標(biāo)。如圖3所示,橫線為字體的基線,基線主要是為了字符輸出對齊而設(shè)置的一個坐標(biāo)定義。默認(rèn)一般是0. 88,意思是上面部分占88%, 下面部分占12%。其基線定義根據(jù)字體不同設(shè)置也不同。但是不同字體都根據(jù)基線對齊, 黑線上面部分叫做Ascent (上升部),下面部分叫Decent (下降部)。字符映射表包括原始編碼和修正編碼兩屬性列,在此步驟中,原始編碼和修正編碼兩屬性列分別記錄解析文檔后得到的字符對應(yīng)的原始編碼,在后續(xù)步驟中將對修正編碼屬性列中的對應(yīng)記錄進(jìn)行更新。本實施例中,基于PDF當(dāng)中iTruetype字體來進(jìn)行Unicode編碼查找。Truetype中 cmap表本身為映射表的集合。其中,集合中的每個表由一個平臺ID和一個編碼ID組成。 Unicode對應(yīng)編碼表的平臺ID為3,編碼ID為1,每個表的每一項是一個子表,每個子表有一個標(biāo)識字段指定該子表屬于什么格式。本實施例中,需要查找字體的字段值為0和4對應(yīng)的兩種格式。在字體的字段值為0的情況下映射表定義一個數(shù)組,此數(shù)組是一系列的數(shù)字,數(shù)字指向了字符輪廓的索引值,以0-255的編碼作為索引在數(shù)組中進(jìn)行查找,如果對應(yīng)索引值為非0表示此編碼存在,否則不存在,則遍歷這個數(shù)組可得到各字符在0-255之間的原始編碼(即字體本身的編碼定義)。在字體的字段值為4的情況下映射表定義一組原始編碼段,然后根據(jù)每個原始編碼段中字符的原始編碼從字體當(dāng)中新建字符映射表中的項,對字符映射表進(jìn)行填充。由于本步驟還未進(jìn)行識別,本步驟中的字符映射表,表項的原始編碼和修正編碼相同。步驟2 根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像;字模圖像為字體對應(yīng)信息經(jīng)路徑填充算法提取點陣得到的二值圖像。新建大小同 EM Square的位圖,在字符映射表中查到對應(yīng)字符的原始編碼,獲取對應(yīng)原始編碼的輪廓, 然后采用路徑填充算法將輪廓填充到此位圖。位圖一般采用二值圖或者灰度圖,大小范圍為從 40 X 40pixel 到 200 X 200pixel。本實施例中,輸入字符的原始編碼,并獲取字體中的字符輪廓,一輪廓可包括多個封閉區(qū)間(contour),然后新建大小同EM Square字符的位圖,并把字符輪廓填充到位圖。然后把字符輪廓按基線位置進(jìn)行平移,再根據(jù)EM Square的大小進(jìn)行縮放。采用路徑填充算法中的帶方向填充(Winding)算法把調(diào)整之后的字符輪廓填充到位圖。如圖5、6所示,本實施例中,采用帶方向填充(Winding)算法,圖6中所示的邊框為是EM Square,字符的黑色邊線是連接字符輪廓各個頂點之后的描邊。本實施例的帶方向填充算法(Winding Fill)中,將字符的邊線設(shè)定方向標(biāo)記,向下為1,向上為-1,使兩個方向標(biāo)識的符號相反,但絕對值相等。填充時,按像素逐行水平掃描,掃描之前設(shè)置初始的狀態(tài)值為0,當(dāng)有邊線與一掃描線相交時,狀態(tài)值加上此線段的方向標(biāo)記。加完之后的狀態(tài)值如果為非0,則邊線之后的像素點須進(jìn)行填充,如果為0,邊線之后的像素點不進(jìn)行填充。豎直方向像素點所有像素掃描完畢之后,填充完畢,得到的字模圖像大小為96X96pixel。在其他實施例中,可采用奇偶填充的方法進(jìn)行標(biāo)記,按像素逐行水平進(jìn)行掃描,掃描之前設(shè)置初始的狀態(tài)值為0,每次和邊線相交狀態(tài)值都加1,如果狀態(tài)值是奇數(shù)則填充邊線后的像素點,狀態(tài)值為偶數(shù)則不填充邊線后的像素點,直至豎直方向所有像素掃描完畢, 填充完畢。步驟3 將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域;將步驟2中得到的字模圖像逐像素掃描,在字模圖像的各邊緣方向上的第一個黑色像素點為頂點,分別作出四條邊線形成矩形區(qū)域,按矩形區(qū)域進(jìn)行裁剪得到著墨區(qū)域,這樣在著墨區(qū)域的每一行和每一列的像素點中都存在黑色像素點,即相當(dāng)于將字模圖像邊緣處的“白邊”切除,形成的著墨區(qū)域表示字符顯示的最大區(qū)域,為OCR識別提供了良好的條件,如圖7所示,本實施例中,對字符“中”對應(yīng)的字模圖像進(jìn)行裁剪后所得的著墨區(qū)域。步驟4 對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;每個字符識別結(jié)果包括一組識別編碼和該識別結(jié)果對應(yīng)的匹配度。各字符的識別結(jié)果包括識別編碼和匹配度, 并按匹配度大小順次存儲在線性結(jié)構(gòu)的各單元中。本實施例中,如圖8所示,為字符“的” 識別之后的結(jié)果,采用線性列表進(jìn)行存儲,每個節(jié)點分別存儲識別編碼(圖7中顯示的為編碼對應(yīng)的字符)和對應(yīng)的匹配度,匹配度最高的字符“的”為0. 945,位于鏈表中的第一個節(jié)點ο步驟5 根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。對識別結(jié)果中的標(biāo)點字符進(jìn)行自適應(yīng)基線校正,根據(jù)標(biāo)點字符的著墨區(qū)域與基線的相對位置關(guān)系進(jìn)行校正,更新字符映射表中標(biāo)點字符對應(yīng)的修正編碼。自適應(yīng)基線校正的過程中,首先對識別結(jié)果中匹配度相同的字符的高寬比進(jìn)行判定。本實施例中,字符“日”和“曰”在對應(yīng)的線性鏈表中對應(yīng)的匹配度相同,則可根據(jù)字符的字模圖像所對應(yīng)著墨區(qū)域?qū)捀弑刃畔⑴袛?。對于“日”和“曰”,如果著墨區(qū)域的寬高比在區(qū)間[1.5,2. 2]之間,則該字符為“日”;如果著墨區(qū)域的寬高比在區(qū)間
之間,則該字符為“曰”。根據(jù)高寬比對字符進(jìn)行判斷后,進(jìn)行自適應(yīng)基線校正,繼續(xù)判斷字符的著墨區(qū)域與基線的相對位置關(guān)系。在字符‘,’和‘’’單純靠OCR識別引擎很難正確識別,通過該標(biāo)點字符的字模圖像對應(yīng)的著墨區(qū)域在基線之上還是基線之下來判斷。如圖9所示,本實施例中,‘_,的字模圖像對應(yīng)著墨區(qū)域的坐標(biāo)是(16,60,32,64),而‘-,的字模圖像對應(yīng)著墨區(qū)域的坐標(biāo)是(14,87,47,91)。字體的對應(yīng)信息中,基線對應(yīng)的坐標(biāo)為67,‘_’和基線的相對坐標(biāo)是-3,‘_’和基線的相對坐標(biāo)是20。對于識別結(jié)果為‘_’或者‘_’的字符,通過其字模圖像對應(yīng)的著墨區(qū)域和基線的坐標(biāo)作計算,如果相對坐標(biāo)差值在區(qū)間
之間, 即在基線下的為字符‘_’ ;如果相對坐標(biāo)差值在區(qū)間[11,30]之間,即在即在基線下的為字符‘_’。同理,在自適應(yīng)基線校正過程中,可根據(jù)字符‘,’和‘’ ’對應(yīng)的著墨區(qū)域與基線的位置關(guān)系對兩字符分別進(jìn)行校正。將校正后的字符編碼存入字符映射表,對字符映射表進(jìn)行更新。手動對自適應(yīng)基線校正所得的識別結(jié)果進(jìn)行編碼校正,用戶從步驟4中線性鏈表的節(jié)點中選取對應(yīng)的識別編碼,如果目標(biāo)字符不在待選的識別編碼之中,則直接輸入正確的目標(biāo)字符,并將目標(biāo)字符對應(yīng)的字符編碼更新到字符映射表的修正編碼,從而更新字符映射表。字符映射表包括原始編碼和識別后的校正之后的修正編碼這兩個屬性。本實施例中,如圖10所示,手動對字符“的”對應(yīng)的識別編碼進(jìn)行編碼校正,選擇對應(yīng)的識別編碼,得到目標(biāo)字符,并將目標(biāo)字符“的”對應(yīng)的識別編碼作為修正編碼在字符映射表中進(jìn)行更新,根據(jù)字符映射表對文檔提取文本信息。本方法根據(jù)字符映射表對文檔中的文字進(jìn)行處理,提取文字的字體信息和原始編碼,并根據(jù)這個原始編碼在字體映射表當(dāng)中查找,如有匹配項則返回對應(yīng)的修正編碼,并替換原有文字。當(dāng)文本的所有原始編碼替換完成之后,即可得到正確的文本信息。本發(fā)明還公開了一種文檔的文字提取裝置,包括以下模塊解析模塊解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表;圖像模塊根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像;裁剪模塊將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域;識別模塊對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;更新模塊根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。
權(quán)利要求
1.一種文檔的文字提取方法,其特征在于,包括以下步驟步驟1 解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表; 步驟2 根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像; 步驟3 將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域; 步驟4 對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;步驟5 根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟1中字體的對應(yīng)信息包括基線、 原始編碼、字體名、Ascent、Descent。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟1中的字符映射表包括原始編碼和修正編碼兩屬性列,其中分別記錄解析文檔后得到的字符對應(yīng)的原始編碼。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟2中字模圖像為字體對應(yīng)信息經(jīng)路徑填充算法提取點陣得到的二值圖像。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟3中將字模圖像逐像素掃描,在字模圖像的各邊緣方向上的第一個黑色像素點為頂點,分別作出四條邊線形成矩形區(qū)域, 按矩形區(qū)域進(jìn)行裁剪得到著墨區(qū)域。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟4中各字符的識別結(jié)果包括識別編碼和匹配度,并按匹配度大小順次存儲在線性結(jié)構(gòu)的各單元中。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于所述步驟5的根據(jù)識別結(jié)果對字符映射表進(jìn)行更新具體為對識別結(jié)果中的標(biāo)點字符進(jìn)行自適應(yīng)基線校正,更新字符映射表中對應(yīng)的修正編碼。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于所述自適應(yīng)基線校正為根據(jù)標(biāo)點字符的著墨區(qū)域形狀與基線的相對位置關(guān)系進(jìn)行校正。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于所述自適應(yīng)基線校正后,手動對識別結(jié)果進(jìn)行編碼校正。
10.一種文檔的文字提取裝置,其特征在于,包括以下模塊解析模塊解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表; 圖像模塊根據(jù)字體對應(yīng)信息中得到各字符對應(yīng)的字模圖像; 裁剪模塊將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域; 識別模塊對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果; 更新模塊根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。
全文摘要
本發(fā)明公開了一種文檔的文字提取方法和裝置,屬于數(shù)據(jù)加工領(lǐng)域。方法包括步驟1解析文檔,獲取文檔中字體的對應(yīng)信息,根據(jù)對應(yīng)信息得到字符映射表;步驟2根據(jù)字體對應(yīng)信息得到各字符對應(yīng)的字模圖像;步驟3將字模圖像進(jìn)行裁剪,得到字模圖像對應(yīng)的著墨區(qū)域;步驟4對著墨區(qū)域進(jìn)行字符識別,得到各字符的識別結(jié)果;步驟5根據(jù)識別結(jié)果對字符映射表進(jìn)行更新,并根據(jù)更新后的字符映射表對文檔提取文本信息。本發(fā)明改進(jìn)了數(shù)據(jù)加工的流程,也減少了數(shù)據(jù)的加工工作量,使隨機(jī)編碼的打包字體不會成為數(shù)據(jù)加工的障礙。對于特定的版式文檔無需識別頁面圖像,即可獲得正確的文本信息,最大限度減少了人工干預(yù),保留了文檔的格式和邏輯信息。
文檔編號G06F17/22GK102262619SQ20101019529
公開日2011年11月30日 申請日期2010年5月31日 優(yōu)先權(quán)日2010年5月31日
發(fā)明者樓永植, 陳峻峰 申請人:漢王科技股份有限公司