本發(fā)明涉及手寫表識別技術(shù),更具體地,涉及一種手寫表識別方法和設(shè)備,能夠高效且高精確地識別手寫表并提取其中的內(nèi)容。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,電子設(shè)備(例如,個人數(shù)字助理、手持電腦、手機(jī))等的使用在人們的生活中越來越普及。這些電子設(shè)備的輸入方式大致可以劃分為鍵盤輸入和手寫輸入兩大類。鍵盤輸入方式采用電子設(shè)備上的鍵盤,使用者點(diǎn)擊鍵盤中的各個按鍵進(jìn)行輸入。手寫輸入方式通過電子設(shè)備的觸摸屏接收使用者的輸入,對輸入進(jìn)行處理以識別用戶輸入的內(nèi)容。這需要電子設(shè)備具有較高的識別能力,即對其識別的準(zhǔn)確率提出了較高的要求。
中國專利申請200710178961.1提出了一種手寫表識別設(shè)備。該設(shè)備可以從輸入內(nèi)容中提取手寫表。但是,該設(shè)備假定表的大小大于某個閾值,并且假定不存在不規(guī)則的表單元格。
因此,現(xiàn)有技術(shù)的方法存在過多的參數(shù)限制,而這將嚴(yán)重影響所能夠應(yīng)用的場景。例如,多數(shù)現(xiàn)有方法根據(jù)特定的表格線的線寬度和線長度來提取表格線。此外,現(xiàn)有技術(shù)的方法無法識別不規(guī)則的單元格。這些方法僅能夠處理形狀規(guī)則的單元格。
因此,需要一種能夠高效且高精確地對手寫表進(jìn)行識別的機(jī)制。
技術(shù)實現(xiàn)要素:
本公開提出了一種手寫表識別方法和設(shè)備,能夠高效且高精確地識別手寫表并提取表中的內(nèi)容。
根據(jù)本發(fā)明的一個方面,提出了一種手寫表識別方法,包括:檢測表格線;計算恰好覆蓋所有表格線的邊界矩形;針對每個表格線, 在邊界矩形上延伸,得到對應(yīng)的虛擬表格線;計算由虛擬表格線和表格線劃分的框的中心點(diǎn)的位置;將各個中心點(diǎn)分為內(nèi)部點(diǎn)和外部點(diǎn),其中內(nèi)部點(diǎn)是由表格線包圍的中心點(diǎn);將內(nèi)部點(diǎn)分組,如果相鄰內(nèi)部點(diǎn)之間的路徑未被表格線所阻擋,則所述內(nèi)部點(diǎn)屬于相同的組;將屬于相同組的內(nèi)部點(diǎn)所對應(yīng)的框組合,形成為單元格;以及識別各個單元格內(nèi)的手寫內(nèi)容。
優(yōu)選地,檢測表格線包括:計算平均筆畫的大??;將長度遠(yuǎn)大于平均筆畫大小的筆畫識別為表格線。
優(yōu)選地,檢測表格線還包括:檢測表格線在路徑上是否存在拐點(diǎn);以及將存在拐點(diǎn)的表格線在拐點(diǎn)處分割為單根表格線。
優(yōu)選地,計算恰好覆蓋所有表格線的邊界矩形包括:確定相交的最長的垂直表格線和最長的水平表格線;計算恰好覆蓋相交的最長的垂直表格線和最長的水平表格線的邊界矩形。
優(yōu)選地,如果兩根表格線的頂端相距小于預(yù)定數(shù)目的像素,則認(rèn)為兩根表格線相交。
優(yōu)選地,將各個中心點(diǎn)分為內(nèi)部點(diǎn)和外部點(diǎn)還包括:將與相鄰?fù)獠奎c(diǎn)由虛擬表格線分隔的內(nèi)部點(diǎn)改變?yōu)橥獠奎c(diǎn);以及執(zhí)行上述步驟,直到?jīng)]有內(nèi)部點(diǎn)被改變?yōu)橥獠奎c(diǎn)為止。
根據(jù)本發(fā)明的第二方面,提供了一種手寫表識別設(shè)備,包括:表格線檢測模塊,被配置為檢測表格線;表格區(qū)域檢測模塊,被配置為計算恰好覆蓋所有表格線的邊界矩形;表結(jié)構(gòu)識別模塊,針對每個表格線,在表格區(qū)域檢測模塊所計算的邊界矩形上延伸,得到對應(yīng)的虛擬表格線;計算由虛擬表格線和表格線所劃分的框的中心點(diǎn)的位置;將各個中心點(diǎn)分為內(nèi)部點(diǎn)和外部點(diǎn),其中內(nèi)部點(diǎn)是由表格線包圍的中心點(diǎn);將內(nèi)部點(diǎn)分組,如果相鄰內(nèi)部點(diǎn)之間的路徑未被表格線所阻擋,則所述內(nèi)部點(diǎn)屬于相同的組;將屬于相同組的內(nèi)部點(diǎn)所對應(yīng)的框組合,形成為單元格;以及表單元格內(nèi)容提取模塊,被配置為識別各個單元格內(nèi)的手寫內(nèi)容。
與現(xiàn)有技術(shù)不同,根據(jù)本發(fā)明實施例的手寫表識別方法和設(shè)備在 多個方面改善了手寫表識別的性能,至少包括:
1.即使在樣本空間中存在不同大小的表,也可以檢測這些不同大小的表;
2.即使存在不規(guī)則的單元格,也能夠正確地識別表的結(jié)構(gòu);
3.對于表的方向和預(yù)先設(shè)置的閾值沒有要求。例如,對于字符大小沒有限制,而且也不需要關(guān)于閾值的先驗知識。
附圖說明
通過下面結(jié)合附圖說明本發(fā)明的優(yōu)選實施例,將使本發(fā)明的上述及其它目的、特征和優(yōu)點(diǎn)更加清楚,其中:
圖1是示出了根據(jù)本發(fā)明實施例的手寫表識別設(shè)備的示意框圖。
圖2示出了一個示例的表,其中僅示出了表格線。
圖3示出了圖2所示的表,其中示出了虛擬表格線。
圖4示出了圖2所示的表的結(jié)構(gòu)。
圖5示出了圖2所示的表的中心點(diǎn)劃分結(jié)果。
圖6示出了對圖2所示的表的最終分析結(jié)果。
圖7示出了另一個示例的表的中心點(diǎn)的劃分結(jié)果。
圖8示出了根據(jù)本發(fā)明實施例的手寫表識別方法的流程圖。
具體實施方式
以下參照附圖,對本發(fā)明的示例實施例進(jìn)行詳細(xì)描述。在以下描述中,一些具體實施例僅用于描述目的,而不應(yīng)該理解為對本發(fā)明有任何限制,而只是本發(fā)明的示例。在可能導(dǎo)致對本發(fā)明的理解造成混淆時,將省略常規(guī)結(jié)構(gòu)或構(gòu)造。
圖1是示出了根據(jù)本發(fā)明實施例的手寫表識別設(shè)備100的示意框圖。該手寫表識別設(shè)備100包括:手寫輸入捕獲模塊110、表格線檢測模塊120、表格區(qū)域檢測模塊130、表結(jié)構(gòu)識別模塊140和表單元格內(nèi)容提取模塊150。
手寫輸入捕獲模塊110用于捕獲用戶的手寫輸入內(nèi)容。例如,在線數(shù)據(jù)捕獲模塊可以是手寫表識別設(shè)備的觸摸屏和處理器,用戶利用 手寫筆或者手指直接在觸摸屏上進(jìn)行輸入,處理器實時地記錄用戶輸入的筆畫。
表格線檢測模塊120被配置為檢測表格線。根據(jù)一個實施例,可以根據(jù)筆畫的大小來識別表格線。例如,計算平均筆畫大小。如果一些筆畫的大小遠(yuǎn)大于平均筆畫大小,則認(rèn)為這些筆畫是表格線。這是因為水平的表格線在水平方向上的長度至少大于一個筆畫的長度,垂直的表格線在垂直方向上的長度至少大于一個筆畫的長度。因此,通過比較筆畫的大小/長度可以識別表格線。
表格區(qū)域檢測模塊130被配置為檢測表格區(qū)域,即,計算恰好覆蓋表格線的邊界矩形。在一個實施例中,根據(jù)檢測的表格線的長度分別對水平的表格線和垂直的表格線進(jìn)行排序。選擇最長的垂直表格線和最長的水平表格線。檢驗最長的垂直表格線和最長的水平表格線之間是否相交。如果兩者相交,則意味著存在一個表。計算恰好能夠覆蓋相交的最長的垂直表格線和最長的水平表格線的邊界矩形,所得到的邊界矩形即為表所存在的表格區(qū)域。表是由垂直相交的表格線限定的區(qū)域,因此,通過檢測是否存在相交的表格線,可以確定是否存在表,以及通過檢測最長的相交的表格線,可以確定表的區(qū)域。由于手寫的隨意性,兩個表格線可能不會恰好相交。因此,根據(jù)一個實施例,如果兩根表格線的頂端相距小于預(yù)定數(shù)目的像素,則認(rèn)為兩根表格線相交。例如,預(yù)定數(shù)目的像素可以是10個像素。此外,在本實施例中,所提到的“水平”和“垂直”也不必是完全的水平和垂直,而且檢測到的表格線也不必是直線。實際中,用戶手畫的線不可能是完全的直線,也不可能是完全的水平和垂直。例如,可以認(rèn)為在垂直的“10%”左右范圍內(nèi)的線均為垂直線,在水平的“15%”左右范圍內(nèi)的線均為水平線。在另一個實施例中,可以通過檢測表格線的坐標(biāo),來檢測表格區(qū)域。例如,檢測位于最左和最右的表格線,作為表的水平范圍,檢測位于最上和最下的表格線,作為表的垂直范圍,然后計算覆蓋表的最上、最下、最左和最右的表格線的邊界矩形,作為表的區(qū)域。
表結(jié)構(gòu)識別模塊140被配置為識別表的結(jié)構(gòu)。首先,針對所有的表格線L,在邊界矩形上延伸,得到對應(yīng)的虛擬表格線Lv。虛擬表格 線Lv與其對應(yīng)的表格線L具有相同的方向。例如,如果虛擬表格線是水平線,則其是在輸入空間中從左到右的線。如果虛擬表格線是垂直線,則其是在輸入空間中從上到下的線。圖2示出了一個示例的表,其中粗線條表示檢測到的表格線。圖3示出了圖2所示的表,其中示出了對應(yīng)的虛擬表格線,其中細(xì)線條表示虛擬表格線。例如,針對水平表格線,其對應(yīng)的虛擬表格線是邊界矩形上相同垂直位置處、分別向左和向右延伸得到的線。針對垂直表格線,其對應(yīng)的虛擬表格線是邊界矩形上相同水平位置處、分別向上和向下延伸得到的線。換言之,將表格線在邊界矩形上延伸,可得到對應(yīng)的虛擬表格線。因此,邊界矩形被虛擬表格線或表格線劃分為多個框。然后,根據(jù)各個框的位置,計算各個框的中心點(diǎn)的位置。圖4示出了一個示例的表的結(jié)構(gòu),其中示出了各個框的中心點(diǎn)。接著,將中心點(diǎn)分為內(nèi)部點(diǎn)和外部點(diǎn)。如果一個中心點(diǎn)被表格線在四個方向上包圍,即在其上下左右均存在表格線,則認(rèn)為該中心點(diǎn)是內(nèi)部點(diǎn)。在此,中心點(diǎn)在一個方向上是否存在表格線并不局限于其所在框的表格線/虛擬表格線,而是指其在該方向上、在邊界矩形內(nèi)是否存在表格線。如果一個中心點(diǎn)的至少一個方向上不存在表格線,即,其在至少一個方向上僅存在虛擬表格線,則認(rèn)為該中心點(diǎn)是外部點(diǎn)。圖5示出了一個示例的表的中心點(diǎn)的劃分結(jié)果。然后,將中心點(diǎn)分組。如果兩個相鄰的中心點(diǎn)之間的路徑未被表格線所阻擋,即,兩個中心點(diǎn)之間是虛擬表格線,則認(rèn)為這兩個中心點(diǎn)屬于相同的組。將屬于相同組的內(nèi)部點(diǎn)所對應(yīng)的框組合為一個單元格,即使得到的單元格是不規(guī)則形狀。圖6示出了對圖2所示的表的最終分析結(jié)果。
表單元格內(nèi)容提取模塊150對所識別的各個單元格內(nèi)的手寫內(nèi)容進(jìn)行識別。
圖1還示出了顯示器160。手寫表識別設(shè)備100可以將識別結(jié)果顯示在顯示器160上。例如,可以以不同的背景色表示不同的單元格,使得用戶容易地辨別各個單元格。在一些示例中,顯示器也是該設(shè)備的觸摸屏。
根據(jù)一個實施例,表格線檢測模塊120還包括筆畫分割模塊1210, 被配置為將連筆的表格線分割為單個表格線。用戶有時會連筆寫出相鄰的表格線。在進(jìn)行手寫表識別之前需要將這些相連的表格線分隔開。檢測表格線在它們的路徑上是否存在拐點(diǎn),如果存在拐點(diǎn),則認(rèn)為這些表格線是連筆的表格線,將這些表格線在拐點(diǎn)處分割,得到多個單根表格線。
根據(jù)一個實施例,表結(jié)構(gòu)識別模塊140還被配置為針對識別的內(nèi)部點(diǎn)和外部點(diǎn)執(zhí)行調(diào)整,將與外部點(diǎn)由虛擬表格線分隔的內(nèi)部點(diǎn)改變?yōu)橥獠奎c(diǎn)。例如,圖7示出了一個示例的表的中心點(diǎn)的劃分結(jié)果。該示例中的表與圖5所示的表的區(qū)別僅在于最右邊的表格線并未封閉,因此,根據(jù)中心點(diǎn)是否被表格線所包圍得到的內(nèi)部點(diǎn)和外部點(diǎn)劃分結(jié)果如圖7(a)所示。在該實施例中,表結(jié)構(gòu)識別模塊140針對劃分結(jié)果進(jìn)行調(diào)整,將與相鄰?fù)獠奎c(diǎn)由虛擬表格線分隔的內(nèi)部點(diǎn)改變?yōu)橥獠奎c(diǎn)。即,針對圖7(a)中的第二行第一列的框的中心點(diǎn),將其改變?yōu)橥獠奎c(diǎn),得到圖7(b)所示的劃分結(jié)果。這是因為在該示例中,表的左下角的L形區(qū)域并未形成一個封閉的單元格,因此,并不是表的一部分。表結(jié)構(gòu)識別模塊140針對劃分結(jié)果執(zhí)行多次調(diào)整,直到?jīng)]有內(nèi)部點(diǎn)被改變?yōu)橥獠奎c(diǎn)為止,即,所有的中心點(diǎn)都被調(diào)整好了。
圖8示出了根據(jù)本發(fā)明實施例的手寫表識別方法800的流程圖。根據(jù)本發(fā)明實施例的手寫表識別方法應(yīng)用于手寫輸入設(shè)備,用戶在手寫輸入設(shè)備上進(jìn)行手寫輸入。當(dāng)需要識別用戶輸入時,根據(jù)本發(fā)明實施例的手寫表識別方法啟動。首先,在步驟S810處,檢測表格線。然后,在步驟S820處,計算恰好覆蓋所有表格線的邊界矩形??梢酝ㄟ^確定相交的最長的垂直表格線和最長的水平表格線,計算恰好覆蓋相交的最長的垂直表格線和最長的水平表格線的邊界矩形,得到覆蓋所有表格線的邊界矩形。在步驟S830處,針對每個表格線,在邊界矩形上延伸,得到對應(yīng)的虛擬表格線,計算由虛擬表格線和表格線劃分的框的中心點(diǎn)的位置。將各個中心點(diǎn)分為內(nèi)部點(diǎn)和外部點(diǎn),其中內(nèi)部點(diǎn)是由表格線包圍的中心點(diǎn)。將內(nèi)部點(diǎn)分組,如果相鄰內(nèi)部點(diǎn)之間的路徑未被表格線所阻擋,則所述內(nèi)部點(diǎn)屬于相同的組。將屬于相同組的內(nèi)部點(diǎn)所對應(yīng)的框組合,形成為單元格。最后,在步驟S840 處,識別各個單元格內(nèi)的手寫內(nèi)容。
在步驟S810中,可以根據(jù)筆畫的大小來識別表格線。例如,計算平均筆畫大小。如果一些筆畫的大小遠(yuǎn)大于平均筆畫大小,則認(rèn)為這些筆畫是表格線。這是因為水平的表格線在水平方向上的長度至少大于一個筆畫的長度,垂直的表格線在垂直方向上的長度至少大于一個筆畫的長度。因此,通過比較筆畫的大小/長度可以識別表格線。根據(jù)該實施例,可以識別具有不同大小的表。因為不同大小的表內(nèi)的內(nèi)容具有不同的筆畫大小。根據(jù)與平均筆畫大小的比較來檢測表格線不需要預(yù)先設(shè)置任何閾值,也不需要知曉所設(shè)置的閾值。
在步驟S820中,可以根據(jù)檢測的表格線的長度分別對水平的表格線和垂直的表格線進(jìn)行排序,然后識別相交的最長的垂直表格線和最長的水平表格線。由于手寫的隨意性,兩個表格線可能不會恰好相交。因此,根據(jù)一個實施例,如果兩根表格線的頂端相距小于預(yù)定數(shù)目的像素,則認(rèn)為兩根表格線相交。例如,預(yù)定數(shù)目的像素可以是10個像素。
在步驟S810中檢測到的表格線可能是連接的多根表格線。因此,在步驟S810中還包括將連筆的表格線分割為單個表格線的步驟。用戶有時會連筆寫出相鄰的表格線。在進(jìn)行手寫表識別之前需要將這些相連的表格線分隔開。檢測表格線在它們的路徑上是否存在拐點(diǎn),如果存在拐點(diǎn),則認(rèn)為這些表格線是連筆的表格線,將這些表格線在拐點(diǎn)處分割,得到多個單根表格線。
在步驟S830得到的內(nèi)部點(diǎn)和外部點(diǎn)可能需要進(jìn)一步調(diào)整。在這種情況下,將與外部點(diǎn)由虛擬表格線分隔的內(nèi)部點(diǎn)改變?yōu)橥獠奎c(diǎn)。針對劃分結(jié)果執(zhí)行多次調(diào)整,直到?jīng)]有內(nèi)部點(diǎn)被改變?yōu)橥獠奎c(diǎn)為止。
根據(jù)本發(fā)明實施例的手寫表識別方法和設(shè)備可以應(yīng)用于在線手寫輸入設(shè)備,包括平板PC、具有觸摸屏的桌面PC、移動電話、PDA等具有在線手寫輸入功能的電子設(shè)備。用戶可以在這種電子設(shè)備上進(jìn)行手寫輸入和編輯。電子設(shè)備可以高效且高精確地對手寫表進(jìn)行識別。例如,根據(jù)本發(fā)明實施例的手寫表識別方法在識別了一個表之后,可以針對手寫空間進(jìn)行進(jìn)一步識別,以識別可能存在的其他的表。由于 利用筆畫大小來識別表格線,所以對于表的大小沒有限制。與現(xiàn)有技術(shù)中采用閾值、將大于閾值的筆畫視為表格線的技術(shù)相比,根據(jù)本發(fā)明實施例的方法可以識別不同大小的表而不需要設(shè)置任何閾值。此外,通過對表的結(jié)構(gòu)進(jìn)行分析,即使表中存在不規(guī)則的單元格,也可能正確地識別單元格。
這里所公開的本發(fā)明實施例的其他設(shè)置包括執(zhí)行在先概述的方法實施例的步驟和操作的軟件程序。更具體地,計算機(jī)程序產(chǎn)品是如下的一種實施例:具有計算機(jī)可讀介質(zhì),計算機(jī)可讀介質(zhì)上編碼有計算機(jī)程序邏輯,當(dāng)在計算設(shè)備上執(zhí)行時,計算機(jī)程序邏輯提供相關(guān)的操作,從而提供上述技術(shù)方案。當(dāng)在計算系統(tǒng)的至少一個處理器上執(zhí)行時,計算機(jī)程序邏輯使得處理器執(zhí)行本發(fā)明實施例所述的操作(方法)。本發(fā)明的這種設(shè)置典型地提供為設(shè)置或編碼在例如光介質(zhì)(例如CD-ROM)、軟盤或硬盤等的計算機(jī)可讀介質(zhì)上的軟件、代碼和/或其他數(shù)據(jù)結(jié)構(gòu)、或者諸如一個或多個ROM或RAM或PROM芯片上的固件或微代碼的其他介質(zhì)、或?qū)S眉呻娐?ASIC)、或一個或多個模塊中的可下載的軟件圖像、共享數(shù)據(jù)庫等。軟件或固件或這種配置可安裝在計算設(shè)備上,以使得計算設(shè)備中的一個或多個處理器執(zhí)行本發(fā)明實施例所述的技術(shù)。結(jié)合諸如一組數(shù)據(jù)通信設(shè)備或其他實體中的計算設(shè)備進(jìn)行操作的軟件過程也可以提供根據(jù)本發(fā)明的設(shè)備。根據(jù)本發(fā)明的設(shè)備也可以分布在多個數(shù)據(jù)通信設(shè)備上的多個軟件過程、或者在一組小型專用計算機(jī)上運(yùn)行的所有軟件過程、或者單個計算機(jī)上運(yùn)行的所有軟件過程之間。
應(yīng)該理解,嚴(yán)格地講,本發(fā)明的實施例可以實現(xiàn)為計算機(jī)設(shè)備上的軟件程序、軟件和硬件、或者單獨(dú)的軟件和/或單獨(dú)的電路。
應(yīng)當(dāng)注意的是,在以上的描述中,僅以示例的方式,示出了本發(fā)明的技術(shù)方案,但并不意味著本發(fā)明局限于上述步驟和單元結(jié)構(gòu)。在可能的情形下,可以根據(jù)需要對步驟和單元結(jié)構(gòu)進(jìn)行調(diào)整和取舍。因此,某些步驟和單元并非實施本發(fā)明的總體發(fā)明思想所必需的元素。因此,本發(fā)明所必需的技術(shù)特征僅受限于能夠?qū)崿F(xiàn)本發(fā)明的總體發(fā)明思想的最低要求,而不受以上具體實例的限制。
至此已經(jīng)結(jié)合優(yōu)選實施例對本發(fā)明進(jìn)行了描述。應(yīng)該理解,本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行各種其它的改變、替換和添加。因此,本發(fā)明的范圍不局限于上述特定實施例,而應(yīng)由所附權(quán)利要求所限定。