一種基于自學習的手寫表格數字字符串快速識別的方法
【技術領域】
[0001] 本發(fā)明涉及基于自學習的手寫表格數字字符串快速識別的方法。
【背景技術】
[0002] 在日常生活中,人們每天都要接觸到數字表格,如財務、成績統(tǒng)計、實驗數據等,這 些表格數字的數據處理不僅工作量大,而且枯燥。所以,如果找到一種自動識別掃描后的 表格文檔的方法,把數據的處理交給電腦來做,就極大地節(jié)省了時間,提高了效率。想要識 別出表格文檔的數據首先要對表格的結構進行處理。首先,表格的格式千變萬化,目前還沒 有找到一種方法能使用于所有的表格的情況,表格結構的識別處理仍需要進一步深入的研 究;其次,盡管表格的格式復雜,但是,需要待識別的往往是那些簡單的矩陣形式的單元格, 只要找到它們的位置并識別就可以了,利用這種方法就可以節(jié)約了處理多余的復雜表格框 的情況,提高了運行速度。
[0003] 通常的表格文檔的結構是由一系列的直線所構成的單元格所組成的,表格的內容 部分(即手寫數字部分)的單元格通常是矩形的單元格,這些單元格比起三角形或者其他 形狀的單元格相對容易處理。通常情況下,表格手寫數字字符識別的處理過程如下:(1)根 據表格線的結構,對表格進行處理,得到表格內容部分;(2)對單元格進行定位并提取出里 面的數字字符圖像;(3)對這些數字進行分割并分類結果。
[0004] 目前的一些表格數字識別軟件不能很好的將字符與背景區(qū)分開,不能進行字符的 分割識別,不能對單元格字符串的整體特征進行識別,導致表格識別率低。
【發(fā)明內容】
[0005] 本發(fā)明的目的是為了解決現有方法表格識別率低的問題,而提出了一種基于自學 習的手寫表格數字字符串快速識別的方法。
[0006] 上述的發(fā)明目的是通過以下技術方案實現的:
[0007] 步驟一、對表格圖像進行預處理;
[0008] 步驟二、對預處理后的表格圖像中的數字字符進行提取與分割;
[0009] 步驟三、對提取分割后的數字字符進行識別。
[0010] 發(fā)明效果
[0011] 采用本發(fā)明的一種基于自學習的手寫表格數字字符串快速識別的方法,
[0012] -、預處理時,采用大津法進行二值化,有效地將字符與背景區(qū)分開;
[0013] 二、利用連接成分的思想來提取單元格字符串的筆畫,同時記錄單元格的頂點的 位置信息,以方便再次掃描同類型表格直接定位單元格,采用連接成分進行筆畫提取能很 好地提取出一個完整的字符筆畫,能夠獲取字符的筆畫位置信息,方便字符的分割識別;
[0014] 三、本發(fā)明設計了一個整體識別的神經網絡,提取單元格字符串的整體特征進行 識別;
[0015] 四、平均識別率達到98. 2%,運行時間為35s。
【附圖說明】
[0016] 圖1為【具體實施方式】四中BP神經網絡模型;
[0017] 圖2為【具體實施方式】三中數字字符串分割流程圖;
[0018] 圖3為【具體實施方式】四中初期神經網絡的訓練流程;
[0019] 圖4為【具體實施方式】四中后期識別框圖;
[0020] 圖5為【具體實施方式】三中斷裂點修補模板圖;
[0021] 圖6為【具體實施方式】三中數字"78"輪廓分析圖;
[0022] 圖7為【具體實施方式】三中數字"78"候選切分點圖;
[0023] 圖8為【具體實施方式】三中提取出的表頭內容圖;
[0024] 圖9為實施例中表格文檔的局部圖像;
[0025] 圖10為實施例中局部識別結果;
[0026] 圖11為實施例中識別軟件界面。
【具體實施方式】
【具體實施方式】 [0027] 一:一種基于自學習的手寫表格數字字符串快速識別的方法,其特 征在于,一種基于自學習的手寫表格數字字符串快速識別的方法具體是按照以下步驟進行 的:
[0028] 步驟一、對表格圖像進行預處理;
[0029] 步驟二、對預處理后的表格圖像中的數字字符進行提取與分割;
[0030] 步驟三、對提取分割后的數字字符進行識別。
[0031 ]
【具體實施方式】二、本實施方式與【具體實施方式】一不同的是,所述步驟一中對表格 圖像進行預處理;具體過程為:
[0032] 步驟--、對表格圖像二值化;
[0033] 設0為前景(即目標)值即為黑色,255為背景值即白色,閾值Tth選擇為使類間 方差δ最大;
[0034] 步驟一二、對表格圖像去噪;
[0035] 采用中值濾波法去噪。
[0036] 其它步驟及參數與【具體實施方式】一相同。
【具體實施方式】 [0037] 三、本實施方式與一或二不同的是,所述步驟二中對 預處理后的表格圖像中的數字字符進行提取與分割;具體過程為:
[0038] 步驟二一、檢測預處理后的表格圖像中各個單元格的行坐標和列坐標,對檢測出 的預處理后的表格圖像中各個單元格的行坐標和列坐標定位,具體過程為:單元格的行坐 標即單元格的水平線,單元格的列坐標即單元格的垂直線;采用Viterbi算法進行單元格 的水平線和垂直線檢測,Viterbi算法是一種動態(tài)規(guī)劃算法,用于尋找最有可能產生觀測事 件序列的維特比路徑,檢測直線(水平線和豎直線),即把水平線和豎直線中的每個前景點 作為當前水平線和豎直線的點,保存檢測出的每個單元格的水平線和豎直線的點,用數組A 存儲行的坐標,用數組B存儲列的坐標,建立一個表格圖像中各個單元格的行坐標和列坐 標位置的信息庫;當再次掃描到同一類型的表格圖像時,則在已經保存的表格圖像中各個 單元格的行坐標和列坐標位置的信息庫里面的信息中確定再次掃描到同一類型的表格圖 像中各個單元格的行坐標和列坐標位置的信息;節(jié)省了時間;
[0039] 若不同表格圖像的表頭的harris角點特征相同,則表格為同一類型的表格;
[0040] 步驟二二、去除檢測出的預處理后的表格圖像中各個單元格的水平線和垂直線, 并對數據斷裂點進行修補;具體過程為:
[0041] 去除檢測出的表格圖像中各個單元格的水平線和垂直線的過程為:把檢測到的每 個單元格的水平線和豎直線像素值設為225,即白色背景色;
[0042] 修補數據斷裂點的方法為掃描直線的像素,具體過程為:如圖5所示模板進行判 斷:
[0043] 設P22為當前表格圖像中像素點的位置,設置一個三行三列的表格,Pll位于第一 行第一列,P12位于第一行第二列,P13位于第一行第三列,P21位于第二行第一列,P22位 于第二行第二列,P23位于第二行第三列,P31位于第三行第一列,P32位于第三行第二列, P33位于第三行第三列,判斷Pll,P12, P13, P21,P22, P23, P31,P32, P33中是否至少有兩個 點的像素為〇,若是,則將當前表格圖像中像素點設置為〇,即為前景點;若否,則將當前表 格圖像中像素點設置為255,即為背景點,去除背景點的表格圖像中像素;
[0044] 步驟二三、對預處理后的表格圖像中各個單元格中的數字字符進行連接成分提 ??;
[0045] 對預處理后的表格圖像中各個單元格中的數字字符進行連接成分提取可將不粘 連的數字字符分開;連接成分為在預處理后的表格圖像中把相互連接的相同像素匯集為一 組的像素組;
[0046] 將匯集為一組的像素組視為一個手寫數字,如單元格中的手寫數字若為8. 97,個 位數"8"其像素值相同且相互連接,匯集起來就組成了 "8",同理可用相同的且相互連接的 像素值點匯集出小數點后的"9"和"7",這樣就完成了連接成分提??;
[0047] 步驟二四、字符分割;具體過程為:
[0048] 步驟二三中已將不粘連的數字字符分開,對于粘連的數字字符用sobel算子進行 輪廓提取、輪廓線分析選擇候選分割點及切分線;
[0049] sobel算子進行輪廓提?。?br>[0050] Sobel算子利用一階導數進行提取邊界的算子,其原理是,利用一個窗口逐行掃描 圖像,該窗口是3X3的模板,然后與圖像中每個像素點做卷積和運算,確定閾值,提取出邊 界部分;
[0051] 輪廓線分析選擇候選分割點及切分線:
[0052] 經輪廓提取后得到數字字符的上下輪廓,候選分割點往往為上輪廓的最低點即波 谷點及下輪廓的最高點即波峰點,兩點連接得到切分線;如圖6和圖7所示:
[0053] 候選分割點大于等于一對,切分線大于等于一條,需要對η條切分線進行篩選,η 為正整數,根據切分線對數字字符進行分割,每分割一次就用已經訓練好的初期BP神經網 絡對切分出來的字符進行識別,計算識別結果的置信度,若置信度大于或等于0. 9,則分割