本發(fā)明涉及計算機(jī)領(lǐng)域,特別是涉及一種信息提取方法和裝置。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)的發(fā)展和移動應(yīng)用程序的廣泛使用,移動應(yīng)用程序成為人們獲取信息的重要途徑。但是對于移動應(yīng)用程序而言,只有在運行狀態(tài)下,才能獲取其真實的內(nèi)部信息。對于海量的移動應(yīng)用程序,如何有效的采集和監(jiān)控移動應(yīng)用運行狀態(tài)的信息內(nèi)容,對于移動應(yīng)用程序的內(nèi)容檢查、通信數(shù)據(jù)安全保障尤為重要。
另外,目前移動應(yīng)用程序運行環(huán)境有多種系統(tǒng),不同系統(tǒng)下的應(yīng)用程序的運行機(jī)制不同,而且越來越多的應(yīng)用程序采用了加密技術(shù)傳輸通信內(nèi)容,因此通過截獲網(wǎng)絡(luò)通信獲取的信息內(nèi)容都是加密的,無法轉(zhuǎn)化為可讀信息。一些動態(tài)調(diào)試的手段雖然能夠提取應(yīng)用程序運行過程中的信息,但是實現(xiàn)難度較大。不同系統(tǒng)的應(yīng)用機(jī)制完全不同,現(xiàn)有信息提取方法難以適用于多種不同操作系統(tǒng)、不同應(yīng)用程序,而且提取出的信息在可讀性方面也具有較大的不確定性。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種信息提取方法和裝置,用以解決現(xiàn)有技術(shù)的如下問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,提取的信息在可讀性方面也具有較大的不確定性。
為解決上述技術(shù)問題,一方面,本發(fā)明提供一種信息提取方法,包括:按照預(yù)定遍歷算法獲取預(yù)定app(application,應(yīng)用軟件)自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱;對獲取到的所有屏幕快照進(jìn)行文字識別,以得到每個屏幕快照對應(yīng)的文字內(nèi)容;按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,并將拼接后的文檔進(jìn)行保存,以還原所述預(yù)定app的完整文字內(nèi)容。
可選的,所述預(yù)設(shè)命名規(guī)則為根據(jù)生成樹方式為屏幕快照進(jìn)行命名。
可選的,按照預(yù)定遍歷算法獲取預(yù)定app自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱,包括:
s1,檢測當(dāng)前屏幕快照內(nèi)是否存在網(wǎng)絡(luò)鏈接;
s2,在存在網(wǎng)絡(luò)鏈接的情況下,將所述網(wǎng)絡(luò)鏈接下對應(yīng)的屏幕快照設(shè)置為所述當(dāng)前屏幕快照對應(yīng)節(jié)點的子節(jié)點,并按照所述預(yù)設(shè)命名規(guī)則為各個子節(jié)點對應(yīng)的屏幕快照進(jìn)行命名;
s3,返回s1繼續(xù)進(jìn)行檢測,直到根據(jù)所述預(yù)定遍歷算法將所述預(yù)定app的所有界面被遍歷完成。
可選的,對獲取到的所有屏幕快照進(jìn)行文字識別,以得到每個屏幕快照對應(yīng)的文字內(nèi)容,包括:對屏幕快照進(jìn)行灰度處理,得到灰度化圖像;對所述灰度化圖像進(jìn)行二值化處理,得到二值化圖像;對所述二值化圖像進(jìn)行光學(xué)字符識別ocr處理,得到所述屏幕快照對應(yīng)的文字內(nèi)容。
可選的,按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,包括:根據(jù)當(dāng)前的屏幕快照名稱確定所述屏幕快照對應(yīng)節(jié)點的母節(jié)點;將所述屏幕快照的文字內(nèi)容與母節(jié)點屏幕快照的內(nèi)容進(jìn)行關(guān)聯(lián),得到初級文字內(nèi)容;對所述初級文字內(nèi)容進(jìn)行冗余處理,得到準(zhǔn)確的文字內(nèi)容。
另一方面,為實現(xiàn)上述目的,本發(fā)明還提供一種信息提取裝置,包括:獲取模塊,用于按照預(yù)定遍歷算法獲取預(yù)定app自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱;識別模塊,用于對獲取到的所有屏幕快照進(jìn)行文字識別,以得到每個屏幕快照對應(yīng)的文字內(nèi)容;拼接模塊,用于按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,以還原所述預(yù)定app的完整文字內(nèi)容;保存模塊,用于將拼接后的文檔進(jìn)行保存。
可選的,所述預(yù)設(shè)命名規(guī)則為根據(jù)生成樹方式為屏幕快照進(jìn)行命名。
可選的,所述獲取模塊,具體用于:
s1,檢測當(dāng)前屏幕快照內(nèi)是否存在網(wǎng)絡(luò)鏈接;
s2,在存在網(wǎng)絡(luò)鏈接的情況下,將所述網(wǎng)絡(luò)鏈接下對應(yīng)的屏幕快照設(shè)置為所述當(dāng)前屏幕快照對應(yīng)節(jié)點的子節(jié)點,并按照所述預(yù)設(shè)命名規(guī)則為各個子節(jié)點對應(yīng)的屏幕快照進(jìn)行命名;
s3,返回s1繼續(xù)進(jìn)行檢測,直到根據(jù)所述預(yù)定遍歷算法將所述預(yù)定app的所有界面被遍歷完成。
可選的,所述識別模塊,具體用于:
對屏幕快照進(jìn)行灰度處理,得到灰度化圖像;對所述灰度化圖像進(jìn)行二值化處理,得到二值化圖像;對所述二值化圖像進(jìn)行光學(xué)字符識別ocr處理,得到所述屏幕快照對應(yīng)的文字內(nèi)容。
可選的,所述拼接模塊,具體用于:
根據(jù)當(dāng)前的屏幕快照名稱確定所述屏幕快照對應(yīng)節(jié)點的母節(jié)點;將所述屏幕快照的文字內(nèi)容與母節(jié)點屏幕快照的內(nèi)容進(jìn)行關(guān)聯(lián),得到初級文字內(nèi)容;對所述初級文字內(nèi)容進(jìn)行冗余處理,得到準(zhǔn)確的文字內(nèi)容。
本發(fā)明在獲取app自動運行過程中所有界面的屏幕快照并按規(guī)則命名,隨后獲取每個屏幕快照對應(yīng)的文字內(nèi)容并按照名稱進(jìn)行拼接,將拼接后的文檔進(jìn)行保存,以還原預(yù)定app的完整文字內(nèi)容。這種方法可以自動獲得準(zhǔn)確的文字內(nèi)容,并且適用于多種操作系統(tǒng)的多種app,解決了現(xiàn)有技術(shù)的如下問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,而且提取的信息在可讀性方面也具有較大的不確定性。
附圖說明
圖1是本發(fā)明第一實施例中信息提取方法的流程圖;
圖2是本發(fā)明第二實施例中信息提取裝置的結(jié)構(gòu)示意圖;
圖3是本發(fā)明第三實施例中app自動運行模塊的運行流程示意圖;
圖4是本發(fā)明第三實施例中信息提取方法的流程圖。
具體實施方式
為了解決現(xiàn)有技術(shù)的問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,而且提取出的信息在可讀性方面也具有較大的不確定性;本發(fā)明第一實施例提供了一種信息提取方法,該方法流程圖如圖1所示,包括步驟s102至s106:
s102,按照預(yù)定遍歷算法獲取預(yù)定app自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱;
s104,對獲取到的所有屏幕快照進(jìn)行文字識別,以得到每個屏幕快照對應(yīng)的文字內(nèi)容;
s106,按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,并將拼接后的文檔進(jìn)行保存,以還原預(yù)定app的完整文字內(nèi)容。
在按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱時,可以按照生成樹方式為屏幕快照進(jìn)行命名。具體實現(xiàn)時,生成樹的節(jié)點設(shè)置可以參考如下原則:app屏幕快照與屏幕快照中的鏈接,可以抽象為多叉樹的根節(jié)點與子節(jié)點的關(guān)系;多個屏幕快照之間的關(guān)系則可抽象為包含多棵多叉樹的森林的關(guān)系;包含鏈接點擊區(qū)域的屏幕快照結(jié)點可以抽象為多叉樹的非葉子結(jié)點;只包含文字信息,不包含鏈接點擊區(qū)域的屏幕快照結(jié)點可以抽象為多叉樹的葉子結(jié)點。
在確定按照生成樹方式為屏幕快照進(jìn)行命名的情況下,獲取預(yù)定app自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱,在具體實現(xiàn)時,還應(yīng)包括步驟s1至s3:
s1,檢測當(dāng)前屏幕快照內(nèi)是否存在網(wǎng)絡(luò)鏈接;
s2,在存在網(wǎng)絡(luò)鏈接的情況下,將網(wǎng)絡(luò)鏈接下對應(yīng)的屏幕快照設(shè)置為當(dāng)前屏幕快照對應(yīng)節(jié)點的子節(jié)點,并按照預(yù)設(shè)命名規(guī)則為各個子節(jié)點對應(yīng)的屏幕快照進(jìn)行命名;
s3,返回s1繼續(xù)進(jìn)行檢測,直到根據(jù)預(yù)定遍歷算法將預(yù)定app的所有界面被遍歷完成。
例如,當(dāng)模擬在手機(jī)上打開新浪新聞app時,采用本發(fā)明提供的信息提取方法,首先獲取新浪新聞app首頁的屏幕快照,首頁圖形界面的長度大于手機(jī)屏幕的高度,即一屏范圍內(nèi)不能顯示首頁圖形界面的全部內(nèi)容。為獲取首頁的全部內(nèi)容,首頁圖形界面截圖產(chǎn)生的快照有兩張,按照生成樹命名方式,將這兩張快照命名為1a和1b,并檢測1a和1b的屏幕快照中是否存在網(wǎng)絡(luò)鏈接;進(jìn)一步,檢測到在首頁的屏幕快照1a中存在若干網(wǎng)絡(luò)鏈接,如生活版塊、時政新聞版塊、體育版塊、汽車版塊等鏈接,首頁的屏幕快照1b中存在若干鏈接,如財經(jīng)版塊、娛樂版塊、游戲版塊、房產(chǎn)版塊等鏈接;進(jìn)一步,獲取這些鏈接對應(yīng)的屏幕快照,并將這些屏幕快照設(shè)置為首頁的屏幕快照對應(yīng)節(jié)點的子節(jié)點,并將這些快照分別依次命名為:1a-1、1a-2、1a-3、1a-4……以及1b-1、1b-2、1b-3、1b-4……;進(jìn)一步,采用本發(fā)明提供的信息提取方法,再檢測某一版塊鏈接對應(yīng)的快照是否存在網(wǎng)絡(luò)鏈接,例如,檢測1a-3體育版塊和1b-1財經(jīng)版塊的快照存在的所有鏈接,在新浪新聞app中,體育版塊中包括足球、籃球、排球和乒乓球等網(wǎng)絡(luò)鏈接,財經(jīng)版塊在包括股票、基金、外匯等網(wǎng)絡(luò)鏈接,獲取這些網(wǎng)絡(luò)鏈接對應(yīng)的所有屏幕快照,將這些屏幕快照設(shè)置為體育版塊和財經(jīng)版塊的屏幕快照對應(yīng)節(jié)點的子節(jié)點,并將這些快照分別依次命名為1a-3-1、1a-3-2、1a-3-3、1a-3-4……以及1b-1-1、1b-1-2、1b-1-3、1b-1-4……。
以此類推,即可獲取應(yīng)用軟件app自動運行過程中所有界面的屏幕快照,并可以按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱。
在具體實現(xiàn)時,為了保證文字識別的準(zhǔn)確率并提取信息,因此,對獲取到的所有屏幕快照進(jìn)行文字識別、以得到每個屏幕快照對應(yīng)的文字內(nèi)容時,還應(yīng)包括:對屏幕快照進(jìn)行灰度處理,得到灰度化圖像;對灰度化圖像進(jìn)行二值化處理,得到二值化圖像;對二值化圖像進(jìn)行光學(xué)字符識別ocr處理,得到屏幕快照對應(yīng)的文字內(nèi)容。
在本實施例的信息提取方法中,對于屏幕快照最主要的處理操作是圖片二值化,而二值化的操作是針對灰度圖像的,因此在圖像二值化之前需要對圖片進(jìn)行灰度化處理,把像素點的紅綠藍(lán)rgb多分量表示轉(zhuǎn)換成只有一個值的灰度值,實現(xiàn)圖片的灰度化處理。對遍歷過程中得到的所有屏幕快照進(jìn)行處理,在得到屏幕快照的二值化圖像后,對二值化圖像進(jìn)行ocr處理,得到所有屏幕快照對應(yīng)的文字內(nèi)容。
在具體實現(xiàn)時,為了準(zhǔn)確的還原預(yù)定app的內(nèi)容,按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,還可以包括如下過程:根據(jù)當(dāng)前的屏幕快照名稱確定屏幕快照對應(yīng)節(jié)點的母節(jié)點;將屏幕快照的文字內(nèi)容與母節(jié)點屏幕快照的內(nèi)容進(jìn)行關(guān)聯(lián),得到初級文字內(nèi)容;對初級文字內(nèi)容進(jìn)行冗余處理,得到準(zhǔn)確的文字內(nèi)容。
信息拼接是獲取屏幕快照并命名過程的逆過程,例如,根據(jù)上述獲取屏幕快照并命名的過程,當(dāng)獲得的屏幕快照為足球版塊的屏幕快照1a-3-1時,可以確定該屏幕快照對應(yīng)節(jié)點的母節(jié)點,母節(jié)點對應(yīng)的快照為體育版塊的屏幕快照1a-3,將1a-3-1的文字內(nèi)容與1a-3的文字內(nèi)容進(jìn)行關(guān)聯(lián),體育版塊的屏幕快照1a-3對應(yīng)節(jié)點的母節(jié)點為首頁的屏幕快照1a,將1a-3的文字內(nèi)容與1a的文字內(nèi)容進(jìn)行關(guān)聯(lián),以此類推,對籃球版塊的屏幕快照、排球版塊的屏幕快照等所有屏幕快照重復(fù)上述過程,可以得到初級文字內(nèi)容。為保證信息的準(zhǔn)確提取,當(dāng)獲取快照的過程中出現(xiàn)重復(fù)截圖的情況或者部分鏈接重復(fù)截取的情況時,還需要對重復(fù)的文字內(nèi)容進(jìn)行重復(fù)處理,得到準(zhǔn)確的文字內(nèi)容。
本發(fā)明第一實施例的信息提取方法,在獲取app自動運行過程中所有界面的屏幕快照并按規(guī)則命名,隨后獲取每個屏幕快照對應(yīng)的文字內(nèi)容并按照名稱進(jìn)行拼接,將拼接后的文檔進(jìn)行保存,以還原預(yù)定app的完整文字內(nèi)容。這種方法可以自動獲得準(zhǔn)確的文字內(nèi)容,并且適用于多種操作系統(tǒng)的多種app,解決了現(xiàn)有技術(shù)的如下問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,而且提取的信息在可讀性方面也具有較大的不確定性。
本發(fā)明的第二實施例提供了一種信息提取裝置,該裝置的結(jié)構(gòu)示意如圖2所示,包括:獲取模塊10,用于按照預(yù)定遍歷算法獲取預(yù)定應(yīng)用軟件app自動運行過程中所有界面的屏幕快照,并按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱;識別模塊20,與獲取模塊10耦合,用于對獲取到的所有屏幕快照進(jìn)行文字識別,以得到每個屏幕快照對應(yīng)的文字內(nèi)容;拼接模塊30,與識別模塊20耦合,用于按照每個屏幕快照的名稱將各個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行拼接,以還原預(yù)定app的完整文字內(nèi)容;保存模塊40,與拼接模塊30耦合,用于將拼接后的文檔進(jìn)行保存。
在按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱時,可以按照生成樹方式為屏幕快照進(jìn)行命名。具體實現(xiàn)時,生成樹的節(jié)點設(shè)置可以參考如下原則:app屏幕快照與屏幕快照中的鏈接,可以抽象為多叉樹的根節(jié)點與子節(jié)點的關(guān)系;多個屏幕快照之間的關(guān)系則可抽象為包含多棵多叉樹的森林的關(guān)系;包含鏈接點擊區(qū)域的屏幕快照結(jié)點可以抽象為多叉樹的非葉子結(jié)點;只包含文字信息,不包含鏈接點擊區(qū)域的屏幕快照結(jié)點可以抽象為多叉樹的葉子結(jié)點。
在具體實現(xiàn)時,獲取模塊基于上述生成樹的命名規(guī)則,還可以進(jìn)一步用于:
s1,檢測當(dāng)前屏幕快照內(nèi)是否存在網(wǎng)絡(luò)鏈接;
s2,在存在網(wǎng)絡(luò)鏈接的情況下,將網(wǎng)絡(luò)鏈接下對應(yīng)的屏幕快照設(shè)置為當(dāng)前屏幕快照對應(yīng)節(jié)點的子節(jié)點,并按照預(yù)設(shè)命名規(guī)則為各個子節(jié)點對應(yīng)的屏幕快照進(jìn)行命名;
s3,返回s1繼續(xù)進(jìn)行檢測,直到根據(jù)預(yù)定遍歷算法將預(yù)定app的所有界面被遍歷完成。
例如,當(dāng)模擬在手機(jī)上打開新浪新聞app時,采用本發(fā)明提供的信息提取裝置,由獲取模塊獲取新浪新聞app首頁的屏幕快照,首頁圖形界面的長度大于手機(jī)屏幕的高度,即一屏范圍內(nèi)不能顯示首頁圖形界面的全部內(nèi)容。為獲取首頁的全部內(nèi)容,首頁圖形界面截圖產(chǎn)生的快照有兩張,將這兩張快照命名為1a和1b,以便檢測首頁的屏幕快照中是否存在網(wǎng)絡(luò)鏈接;進(jìn)一步,檢測到在首頁的屏幕快照1a中存在若干網(wǎng)絡(luò)鏈接,如生活版塊、時政新聞版塊、體育版塊、汽車版塊等鏈接,首頁的屏幕快照1b中存在若干鏈接,如財經(jīng)版塊、娛樂版塊、游戲版塊、房產(chǎn)版塊等鏈接;進(jìn)一步,獲取這些鏈接對應(yīng)的屏幕快照,并將這些屏幕快照設(shè)置為首頁的屏幕快照對應(yīng)節(jié)點的子節(jié)點,并將這些快照分別依次命名為:1a-1、1a-2、1a-3、1a-4……以及1b-1、1b-2、1b-3、1b-4……;進(jìn)一步,獲取模塊再檢測某一版塊鏈接對應(yīng)的快照是否存在網(wǎng)絡(luò)鏈接,例如,檢測1a-3體育版塊和1b-1財經(jīng)版塊的快照存在的所有鏈接,在新浪新聞app中,體育版塊中包括足球、籃球、排球和乒乓球等網(wǎng)絡(luò)鏈接,財經(jīng)版塊中包括股票、基金、外匯等網(wǎng)絡(luò)鏈接,獲取這些網(wǎng)絡(luò)鏈接對應(yīng)的所有屏幕快照,將這些屏幕快照設(shè)置為體育版塊和財經(jīng)版塊的屏幕快照對應(yīng)節(jié)點的子節(jié)點,并將這些快照分別依次命名為1a-3-1、1a-3-2、1a-3-3、1a-3-4……以及1b-1-1、1b-1-2、1b-1-3、1b-1-4……。
以此類推,獲取模塊即可獲取app自動運行過程中所有界面的屏幕快照,并可以按照預(yù)設(shè)命名規(guī)則為得到的每個屏幕快照確定名稱。
在具體實現(xiàn)時,為了保證文字識別的準(zhǔn)確率并提取信息,識別模塊用于:對屏幕快照進(jìn)行灰度處理,得到灰度化圖像;對灰度化圖像進(jìn)行二值化處理,得到二值化圖像;對二值化圖像進(jìn)行光學(xué)字符識別ocr處理,得到屏幕快照對應(yīng)的文字內(nèi)容。
在本實施例的信息提取裝置中,識別模塊對于屏幕快照最主要的處理操作是圖片二值化,而二值化的操作是針對灰度圖像的,因此在圖像二值化之前需要對圖片進(jìn)行灰度化處理,把像素點的紅綠藍(lán)rgb多分量表示轉(zhuǎn)換成只有一個值的灰度值,實現(xiàn)圖片的灰度化處理。對獲取模塊得到的所有屏幕快照進(jìn)行處理,在得到屏幕快照的二值化圖像后,對二值化圖像進(jìn)行ocr處理,得到所有屏幕快照對應(yīng)的文字內(nèi)容。
在具體實現(xiàn)時,為了準(zhǔn)確的還原預(yù)定app的內(nèi)容,拼接模塊具體用于:根據(jù)當(dāng)前的屏幕快照名稱確定屏幕快照對應(yīng)節(jié)點的母節(jié)點;將屏幕快照的文字內(nèi)容與母節(jié)點屏幕快照的內(nèi)容進(jìn)行關(guān)聯(lián),得到初級文字內(nèi)容;對初級文字內(nèi)容進(jìn)行冗余處理,得到準(zhǔn)確的文字內(nèi)容。
拼接模塊實現(xiàn)其功能的過程是獲取模塊實現(xiàn)其功能的過程的逆過程,例如,根據(jù)上述獲取屏幕快照并命名的過程,當(dāng)獲得的屏幕快照為足球版塊的屏幕快照1a-3-1時,可以確定該屏幕快照對應(yīng)節(jié)點的母節(jié)點,母節(jié)點對應(yīng)的快照為體育版塊的屏幕快照1a-3,將1a-3-1的文字內(nèi)容與1a-3的文字內(nèi)容進(jìn)行關(guān)聯(lián),體育版塊的屏幕快照1a-3對應(yīng)節(jié)點的母節(jié)點為首頁的屏幕快照1a,將1a-3的文字內(nèi)容與1a的文字內(nèi)容進(jìn)行關(guān)聯(lián),以此類推,對籃球版塊的屏幕快照、排球版塊的屏幕快照等所有屏幕快照重復(fù)上述過程,可以得到初級文字內(nèi)容。為保證信息的準(zhǔn)確提取,當(dāng)獲取快照的過程中出現(xiàn)重復(fù)截圖的情況或者部分鏈接重復(fù)截取的情況時,還需要對重復(fù)的文字內(nèi)容進(jìn)行重復(fù)處理,得到準(zhǔn)確的文字內(nèi)容。
本發(fā)明第二實施例的信息提取裝置,該裝置的獲取模塊在獲取app自動運行過程中所有界面的屏幕快照并按規(guī)則命名后,識別模塊對每個屏幕快照對應(yīng)的文字內(nèi)容進(jìn)行識別,拼接模塊按照屏幕快照名稱進(jìn)行拼接,保存模塊將拼接后的文檔進(jìn)行保存,以還原預(yù)定app的完整文字內(nèi)容。這種裝置可以自動獲得準(zhǔn)確的文字內(nèi)容,并且適用于多種操作系統(tǒng)的多種app,解決了現(xiàn)有技術(shù)的如下問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,而且提取的信息在可讀性方面也具有較大的不確定性。
本發(fā)明的第三實施例提供了一種信息提取方法,本方法可以實現(xiàn)如下功能:實現(xiàn)程序智能的對所分析的app進(jìn)行g(shù)ui(圖形用戶界面)的遍歷;實現(xiàn)app自動模擬人行為的操作;實現(xiàn)app的自動點擊app中的鏈接、自動的進(jìn)行手機(jī)滑屏操作、智能的返回上一級或進(jìn)入下一級界面的操作;通過對屏幕快照進(jìn)行截取以及ocr(光學(xué)字符識別)提取可讀信息。本方法的技術(shù)方案如下:
(1)本實施例提供了一個自動獲取屏幕快照的過程,即構(gòu)建一個app自動運行模塊(相當(dāng)于上述第二實施例中獲取模塊),用于遍歷app的gui并進(jìn)行截圖。該模塊運行流程如圖3所示,包括:app控制中心(相當(dāng)于上述第二實施例中獲取模塊的部分功能)、app自動化測試工具(相當(dāng)于上述第二實施例中獲取模塊的部分功能)、手機(jī)模擬器(相當(dāng)于上述第二實施例中獲取模塊的部分功能,用于模擬app運行,以輔助獲得屏幕快照)以及對外交互接口。
在具體實現(xiàn)時,app控制中心向app自動化測試工具發(fā)送指令,app自動化測試工具根據(jù)app控制中心的指令,向手機(jī)模擬器發(fā)送模擬操作控制流,并接收返回的狀態(tài)流或屏幕快照截圖,app自動化測試工具將截圖發(fā)送回app控制中心,由app控制中心將截圖發(fā)送給對外交互接口。上述過程是在后臺運行的,對外交互接口則負(fù)責(zé)app自動運行模塊與前臺進(jìn)行通信。
(2)本實施例提供了app的gui遍歷策略方法和app操作響應(yīng)判定過程。
app的gui的快照與快照中的鏈接,可以抽象為多叉樹的根節(jié)點與子節(jié)點的關(guān)系;多個gui的快照之間的關(guān)系則可抽象為包含多棵多叉樹的森林的關(guān)系;包含鏈接點擊區(qū)域的快照結(jié)點可以抽象為多叉樹的非葉子結(jié)點,而只包含文字信息,不包含鏈接點擊區(qū)域的快照結(jié)點可以抽象為多叉樹的葉子結(jié)點。
在具體應(yīng)用時,多叉樹的遍歷主要有兩種方法:深度遍歷和廣度遍歷。在app的gui深度遍歷具體是指:在遍歷過程中,每截取一次快照,便立即對當(dāng)前快照中的所有鏈接區(qū)域進(jìn)行點擊操作,待所有鏈接對應(yīng)的子界面的快照被截取之后,才返回到上一級獲取新的快照和鏈接區(qū)域。廣度遍歷,是先確定頂級頁面所有的鏈接區(qū)域,也就是先對本層界面全部遍歷完以后,才進(jìn)行下一級的鏈接點擊操作。本發(fā)明中采用深度遍歷算法對gui進(jìn)行遍歷,深度遍歷算法較廣度遍歷算法,遍歷過程中更方便,效率較高。
為了準(zhǔn)確的獲得gui快照,本發(fā)明提供的方法需要對app操作產(chǎn)生的響應(yīng)進(jìn)行判斷,具體方法包括:分析網(wǎng)絡(luò)通信行為的方法、圖片hash值對比的方法以及綜合延時處理的方法。
為了判斷遍歷過程中是否發(fā)生網(wǎng)絡(luò)響應(yīng),采用分析網(wǎng)絡(luò)通信行為的方法,該方法是通過后臺網(wǎng)絡(luò)分析模塊監(jiān)控手機(jī)的網(wǎng)絡(luò)通信行為,監(jiān)控遠(yuǎn)程是否有數(shù)據(jù)包響應(yīng)。
為了避免遍歷過程中重復(fù)截取gui的快照,采用圖片hash值對比方法,該方法對比的是兩張圖片進(jìn)行特殊處理后的圖像指紋的漢明碼的距離,若漢明碼距離為0則可以斷定圖片相同,若距離大于10(兩個指紋二進(jìn)制序列異或操作后結(jié)果中1的位數(shù)大于10位),可以斷定圖片肯定不相同。
為了判斷遍歷過程中是否發(fā)生界面響應(yīng),采用綜合延時處理的方法,該方法具體過程是:在程序剛啟動時,根據(jù)特定app的響應(yīng)時延設(shè)置一個的延時,防止在程序啟動前廣告界面或者其他無用信息界面的出現(xiàn);在這個時延當(dāng)中,后臺實時監(jiān)控是否有由遠(yuǎn)程服務(wù)器傳回的特定通信數(shù)據(jù)包,若有網(wǎng)絡(luò)返回則得到了遠(yuǎn)程服務(wù)器的響應(yīng);然后對比啟動時gui快照和時延后的gui快照,確定是否發(fā)生了界面響應(yīng)。若發(fā)生了界面響應(yīng),則表明在遍歷過程中點擊進(jìn)入了某快照中的某個鏈接對應(yīng)的界面,此時,由于發(fā)生界面跳轉(zhuǎn),自然意味著網(wǎng)絡(luò)已經(jīng)響應(yīng)。
(3)本實施例提供了一種app屏幕智能截取和內(nèi)容拼接過程。
對app的gui進(jìn)行圖片截取需要滿足以下3個要求:
第一,必須對app所有的gui進(jìn)行全面的遍歷;
第二,在截取快照的過程中避免對圖片的重復(fù)截??;
第三,對快照截取的前提是在點擊或其他操作后發(fā)生了網(wǎng)絡(luò)響應(yīng),保證界面中有最新的內(nèi)容。
在本發(fā)明中,通過app自動化測試工具發(fā)出截屏命令對當(dāng)前gui的快照進(jìn)行截取。發(fā)生點擊、滑屏等可以界面響應(yīng)的操作行為后,對屏幕截取前需要判斷界面是否響應(yīng)和變化,若界面確實已響應(yīng)并跳轉(zhuǎn)則對屏幕快照進(jìn)行截取。
在對gui截取的快照進(jìn)行拼接方面,對于非指定的app,設(shè)定滑屏高度的值應(yīng)小于屏幕的高度,因為手機(jī)屏幕頂部有一個固定的gui部分,如果下滑屏幕高度設(shè)置為屏幕高度,可能會造成app的gui的數(shù)據(jù)的丟失。此外,如果由于下滑高度小于屏幕高度可能造成gui的快照銜接部分被重復(fù)的截取,造成的鏈接區(qū)域重復(fù)被選取,可以通過點擊當(dāng)前快照圖片的頂端的鏈接的下一級界面的截圖和上一個快照最底端鏈接的下一級界面截圖作對比,如果gui快照有相同部分,則說明出現(xiàn)了冗余,需要進(jìn)行消除重復(fù)處理,把重復(fù)采入的鏈接區(qū)域坐標(biāo)排除。
(4)本實施例提供了一種信息內(nèi)容的提取、拼接和還原過程。
在對屏幕快照進(jìn)行提取后,對提取后的信息進(jìn)行拼接與還原操作,該拼接和還原操作是gui遍歷過程的逆過程,把ocr識別出的分散的結(jié)果塊進(jìn)行重組,對塊與塊之間的結(jié)構(gòu)還原,實現(xiàn)原app信息內(nèi)容的還原。信息拼接操作針對的是包含了鏈接點擊區(qū)域的gui快照,因為根據(jù)深度遍歷策略,包含了鏈接點擊區(qū)域的快照,在識別過程中對圖片的識別過程不是連續(xù)的把當(dāng)前頁面所有的快照進(jìn)行識別,而是先訪問當(dāng)前頁面對應(yīng)的所有下一級頁面,再對當(dāng)前頁面進(jìn)行滑屏操作,進(jìn)而對gui快照進(jìn)行文字識別。
在對gui快照進(jìn)行ocr識別時,對應(yīng)不同節(jié)點的快照采取不同的命名,同級界面中g(shù)ui快照截取存在先后順序,因此,在ocr識別時,圖片文件名也按遍歷時gui快照的生成順序進(jìn)行了標(biāo)號處理;文件的存放目錄和文件命名方式都有一個固定的規(guī)則,在本發(fā)明中是生成樹規(guī)則。因此,對提取出的信息內(nèi)容的拼接主要是根據(jù)結(jié)果文件的名稱和存儲的目錄的特點進(jìn)行分析,實現(xiàn)對app結(jié)構(gòu)的還原。
以下根據(jù)圖3和圖4對本發(fā)明的第三實施例進(jìn)行詳細(xì)說明。
本發(fā)明第三實施例提供的信息提取方法可以在獲取root權(quán)限后的android系統(tǒng)以及越獄root權(quán)限的ios系統(tǒng)中執(zhí)行。本實施例所使用的app自動測試工具為安卓平臺的monkey、monkeyrunner以及ios平臺的autotouch,本實施例所使用的ocr字符識別模塊是基于工具tesseract進(jìn)行設(shè)計的。該方法流程如圖4所示,包括步驟s401至s407:
s401,由web前端交互界面上傳app至app自動運行裝置(即上述app自動運行模塊)。該app自動運行裝置用于自動運行app并遍歷app中各個界面,以進(jìn)行截圖。
s402,安裝并啟動app。在本實施例中,app安裝是由app自動運行裝置主動的對app進(jìn)行安裝,并啟動運行,以獲取屏幕快照。
s403,獲取app運行過程中所有界面的屏幕快照。在本實施例中,app自動運行模塊按照深度優(yōu)先的方式對app界面進(jìn)行自動遍歷。另外,在截取用于識別的屏幕快照前,需判斷是否發(fā)生了界面響應(yīng)和網(wǎng)絡(luò)響應(yīng),只有這兩個響應(yīng)都發(fā)生了,app自動運行模塊才對屏幕快照進(jìn)行截取。
s404,對屏幕快照進(jìn)行預(yù)處理。在本實施例中,為了高效準(zhǔn)確的對快照中的文字內(nèi)容進(jìn)行識別,需要對圖片進(jìn)行預(yù)處理操作和字典庫的訓(xùn)練來保證識別的準(zhǔn)確率。圖像預(yù)處理最主要的處理操作是圖片二值化,二值化的操作是針對灰度圖像的,因此在圖片二值化之前需要對圖片進(jìn)行灰度化處理,把像素點的rgb多分量表示轉(zhuǎn)換成只有一個值的灰度值,實現(xiàn)圖片的灰度化處理。
s405,識別處理后的屏幕快照。在本實施例中,處理后的圖像傳遞給文字識別模塊進(jìn)行ocr識別。
s406,信息拼接和還原。在本實施例中,把ocr識別的分散的結(jié)果塊進(jìn)行結(jié)構(gòu)還原,實現(xiàn)信息的拼接和還原,并把拼接還原的結(jié)果輸出進(jìn)行存儲。
s407,用戶檢索內(nèi)容。在本實施例中,當(dāng)實現(xiàn)了對app的內(nèi)容進(jìn)行信息提取之后,用戶對關(guān)鍵字的檢索是通過前端進(jìn)行交互,從數(shù)據(jù)庫或者文件系統(tǒng)中把用戶查詢的數(shù)據(jù)讀取出來,并轉(zhuǎn)發(fā)給前端界面進(jìn)行顯示。
本發(fā)明第三實施例的信息提取方法,采用深度遍歷的方法獲取app自動運行過程中所有界面的gui快照并按生成樹的規(guī)則命名,隨后采用ocr方法獲取每個gui快照對應(yīng)的文字內(nèi)容并按照快照命名進(jìn)行拼接,將拼接后的文檔對應(yīng)著快照命名規(guī)則進(jìn)行保存,以還原預(yù)定app的完整文字內(nèi)容。這種方法可以自動獲得準(zhǔn)確的文字內(nèi)容,并且適用于多種操作系統(tǒng)的多種app,解決了現(xiàn)有技術(shù)的如下問題:現(xiàn)有信息提取方法無法實現(xiàn)針對多種不同操作系統(tǒng)、不同應(yīng)用程序的信息提取,而且提取的信息在可讀性方面也具有較大的不確定性。
盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實施例,本領(lǐng)域的技術(shù)人員將意識到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實施例。