專利名稱:適合盲人使用的網(wǎng)頁瀏覽方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)頁瀏覽方法,主要是一種適合盲人使用的網(wǎng)頁瀏覽方法。背景介紹如何讓盲人能克服視力的障礙上網(wǎng)瀏覽,是個(gè)很有現(xiàn)實(shí)意義的課題,因?yàn)檫@能顯著改善盲人的生活質(zhì)量?,F(xiàn)在,大多數(shù)盲人很少上網(wǎng),如欲上網(wǎng)則都是通過一種“讀屏軟件”將顯示屏上的文字信息轉(zhuǎn)化成語音。這種軟件通過Windows操作系統(tǒng)的“鉤子”機(jī)制提取屏面上顯示的文字,再通過朗讀軟件將這些文字轉(zhuǎn)換成語音(就象公交車上報(bào)站名所使用的技術(shù)一樣)。對于原來完全無法上網(wǎng)瀏覽的盲人而言,讀屏軟件至少使盲人在一定程度上可以上網(wǎng)“瀏覽”實(shí)際上是“收聽”了,這當(dāng)然是好事。但是,另一方面,讓盲人用這樣的方式上網(wǎng)還是十分不便,這主要表現(xiàn)在 一般網(wǎng)頁上的文字信息是很多、很龐雜的,以新華網(wǎng)首頁為例,從上到下,在頭條新聞之前就有上百個(gè)鏈接,例如“新聞時(shí)政國際日本地方法治”、“圖片高層軍事評論臺灣社會(huì)”,等等、等等,有些網(wǎng)站的網(wǎng)頁前面還有不少廣告。常人一般都是憑視覺先跳過這些而直奔主題,但是盲人就不一樣了,如果要等讀屏軟件把這些都讀完以后才能讀到頭條新聞,就往往已經(jīng)很不耐煩了。 網(wǎng)頁中有很多鏈接,作為鏈接“錨點(diǎn)”的文字常常在顏色、粗細(xì)、字體等視覺形象上有所不同,或者在把光標(biāo)移到錨點(diǎn)上時(shí)會(huì)顯示某種符號,但是這些特征盲人都是看不見的。 網(wǎng)頁的瀏覽是以“點(diǎn)擊”機(jī)制為基礎(chǔ)的,不管是鼠標(biāo)點(diǎn)擊還是觸屏點(diǎn)擊,都離不開眼睛。既然盲人看不見,就得有一種導(dǎo)航的機(jī)制去幫助他們,但是讀屏軟件顯然達(dá)不到這個(gè)效果。 網(wǎng)頁上通常會(huì)有許多圖片,構(gòu)成這些圖片的信息在流量中往往占很高的比例,顯示網(wǎng)頁時(shí)的延遲往往是因?yàn)橐螺d這些圖片而造成,但是這些流量對于盲人卻毫無意義。此外,網(wǎng)頁的文本中常常帶有許多腳本,這些腳本對于盲人也沒有什么意義(而且也不安全),盲人所關(guān)心的只是那些可以轉(zhuǎn)化成語音的文字信息。所以,從流量的角度看,一個(gè)網(wǎng)頁中對盲人有用的流量實(shí)際上只占很小一部分。所以,對于盲人來說,讀屏軟件只是聊勝于無,而不是一種能夠令人滿意的網(wǎng)頁瀏覽手段。而本發(fā)明的目的,就是要為盲人提供較為理想的網(wǎng)頁瀏覽手段和方法。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的缺陷,本發(fā)明提供了一種適合盲人使用的網(wǎng)頁瀏覽方法,其顯著的特點(diǎn)是先對網(wǎng)頁進(jìn)行預(yù)處理,將其內(nèi)容加以組織,添上導(dǎo)航信息,再轉(zhuǎn)化成語音朗讀出來,為盲人提供帶有導(dǎo)航的語音瀏覽。本發(fā)明所述的這種適合盲人使用的網(wǎng)頁瀏覽方法,其主要特征和操作步驟如下I)對網(wǎng)頁進(jìn)行基于HTML文本解析的預(yù)處理,把內(nèi)容中不能轉(zhuǎn)換成聲音的信息過濾掉,具體方法見后;
2)對網(wǎng)頁內(nèi)容加以分析和改造,在此基礎(chǔ)上將平面結(jié)構(gòu)的網(wǎng)頁內(nèi)容改成層次結(jié)構(gòu),并插入必要的文字,以提供分層次導(dǎo)航,具體方法見后;3)將經(jīng)過預(yù)處理后的網(wǎng)頁中的文字信息轉(zhuǎn)換成語音,具體方法見后。進(jìn)一步,還可以將文本中出現(xiàn)的非標(biāo)題性鏈接組織在一起,并插入必要的提示文字,以提供鏈接導(dǎo)航,具體方法見后。本發(fā)明有益的效果是提供了一種適合盲人使用的網(wǎng)頁瀏覽方法,既提供對于網(wǎng)頁內(nèi)容的分層次導(dǎo)航,又提供對于鏈接的導(dǎo)航,并將網(wǎng)頁內(nèi)容轉(zhuǎn)化成語音朗讀出來。下面通過一個(gè)假想的情景說明采用本方法后的效果。例如,對于某個(gè)網(wǎng)站的首頁,在比較理想的情況下,盲人瀏覽者聽到的可以是這 樣某某網(wǎng)站,請選擇收聽內(nèi)容I、今日要聞2、體育3、歷史4、財(cái)經(jīng)5、法治6、娛樂7、文化8、論壇盲人瀏覽者可以通過鍵盤上的數(shù)字鍵選取,或者在聽到例如“體育”時(shí)立刻就按回車鍵加以選取。選取了例如“體育”類之后,盲人瀏覽者聽到的可以是這樣I、巔峰對決!林丹勝李宗偉奪金2、撐桿跳女皇奧運(yùn)絕唱3、男子百米飛人大戰(zhàn)博爾特破紀(jì)錄成功衛(wèi)冕4、看博爾特挑戰(zhàn)人類極限5、名嘴侃奧運(yùn)中國軍團(tuán)的八個(gè)田徑得牌點(diǎn)6、田徑首日中國鐵餅兩人進(jìn)決賽李艷鳳預(yù)賽第三7、劉翔目前一切都很正常爭取比賽時(shí)出最佳狀態(tài)8、何可欣戰(zhàn)高低杠跳馬中國成看客9、揭陽籍選手傅海峰奧運(yùn)奪金家鄉(xiāng)人民組團(tuán)觀賽同樣,盲人瀏覽者可以通過鍵盤上的數(shù)字鍵選取,或者在聽到例如“體育”時(shí)立刻就按回車鍵加以選取。體育新聞可能遠(yuǎn)遠(yuǎn)超過九條,而數(shù)字鍵盤上只有十個(gè)數(shù)字鍵,再說一次報(bào)得太多也沒有必要,但是瀏覽者可以按‘0’鍵選擇繼續(xù)。假定瀏覽者選擇了第三條,則可聽到北京時(shí)問8月6日凌晨,在倫敦奧運(yùn)會(huì)的男子百米飛人決戰(zhàn)中,博爾特以9秒63奪得金牌,刷新了奧運(yùn)會(huì)紀(jì)錄。另一位牙買加人布雷克以9秒75獲得銀牌,美國名將加特林則以9秒79獲得銅牌...最后,瀏覽者還可聽到
本頁有3個(gè)鏈接I、博爾特再現(xiàn)閃電慶祝動(dòng)作跪地親吻跑道2、奧運(yùn)田徑獎(jiǎng)牌盤點(diǎn)中國歷屆田賽佳績3、陳定創(chuàng)奧運(yùn)紀(jì)錄超越劉翔成中國最年輕田徑冠軍此時(shí)瀏覽者可以按數(shù)字鍵或回車鍵選聽,也可按‘#,鍵回到上一段;或不按任何鍵,等超時(shí)候自動(dòng)回到上一段。顯然,在這樣的方法中,盲人瀏覽者的感受遠(yuǎn)遠(yuǎn)好于使用讀屏軟件。實(shí)際的情況也許沒有這么理想和清晰,因?yàn)槔纭敖袢找劇薄ⅰ绑w育”等詞語最終來自所瀏覽的網(wǎng)頁,具體用的是什么詞語取決于網(wǎng)頁的原作者,也可能語義并沒有那么清晰。但是,盡管如此,比之 讀屏軟件,本方法所提供的分層導(dǎo)航和鏈接導(dǎo)航還是使盲人的瀏覽效果大為改善。
附圖I表示典型瀏覽器的構(gòu)造和功能劃分。附圖2是典型網(wǎng)頁中內(nèi)容的一個(gè)片段,說明了信息的線性結(jié)構(gòu)。附圖3表示經(jīng)過對網(wǎng)頁的編排處理、可以用來為盲人提供層次式導(dǎo)航的立體的信息結(jié)構(gòu)。附圖4說明把本發(fā)明所述方法實(shí)施成盲人專用瀏覽器時(shí)的系統(tǒng)結(jié)構(gòu)。附圖5說明把本發(fā)明所述方法實(shí)施成盲人專用門戶網(wǎng)站時(shí)的系統(tǒng)結(jié)構(gòu)。
具體實(shí)施例方式附圖I表示典型瀏覽器的構(gòu)造和功能劃分。瀏覽器的構(gòu)造可以從功能上分成前端和后端兩大部分,前端的核心是一個(gè)HTML語言解析器,后端則將解析所得的內(nèi)容以圖像的形式呈現(xiàn)在顯示屏上。由于盲人的眼睛看不見,就需要將瀏覽器的后端改成以語音形式呈現(xiàn)解析所得的文字信息。附圖2表示典型網(wǎng)頁中信息的結(jié)構(gòu),是網(wǎng)頁內(nèi)容的一個(gè)片段。網(wǎng)頁的內(nèi)容本質(zhì)上是層次結(jié)構(gòu)的,一般都分成若干不同的板塊,但是在典型的網(wǎng)頁中由HTML語言所描述的內(nèi)容在形式上卻是線性的字符流,如果只是按先后次序?qū)⑦@些字符呈現(xiàn)出來,就是像附圖2所示那樣的片段。例如圖中的“新華熱詞”與下面幾行就不在同一層次上,“新華熱詞”相當(dāng)于磁盤上的“文件夾”(即目錄),而下面幾行則相當(dāng)于文件夾中的文件,而每個(gè)具體文件的內(nèi)容則可能在另一個(gè)獨(dú)立的網(wǎng)頁中。但是,如果只是按先后次序?qū)⑦@些內(nèi)容朗讀出來,這樣的層次關(guān)系就不明顯了,這就好像在Windows的資源管理器中把所有作為中間結(jié)點(diǎn)的文件夾全都展開了以后一樣。明眼人還可迅速瀏覽而從中找到感興趣的內(nèi)容,但要盲人從頭一直往下聽,好久以后才能到達(dá)感興趣的內(nèi)容,就使人不耐煩了。其實(shí),HTML語言中并非沒有描述這種層次關(guān)系的成分,所以一般的瀏覽器都利用這些信息把屬于同一板塊的內(nèi)容組織顯示在網(wǎng)頁的同一個(gè)區(qū)域,看的人則一下就把自己的眼球轉(zhuǎn)向感興趣的板塊。所以,如果說HTML語言對內(nèi)容的描述是線性的,則一般瀏覽器的呈現(xiàn)顯示是平面的。但是,這對于盲人還是起不到作用,因?yàn)槊と瞬荒軕{視覺迅速轉(zhuǎn)到感興趣的板塊。而如果讓盲人從頭開始一個(gè)字一個(gè)字聽下來,就勢必會(huì)很不耐煩。所以,對于盲人,我們需要把網(wǎng)頁的內(nèi)容還原成立體的層次結(jié)構(gòu),成為類似于資源管理器顯示文件夾的形式,這樣才能為盲人提供層次式的導(dǎo)航。附圖3表示經(jīng)過對網(wǎng)頁的編排處理、可以用來為盲人提供層次式導(dǎo)航的立體的信息結(jié)構(gòu)。這里,就像在資源管理器中所見的文件系統(tǒng)那樣,信息是按層次組織和排列的,看的人只展開自己感興趣的文件夾,一層一層往下跑,很快就可找到感興趣的文件,每個(gè)文件都有個(gè)獨(dú)特的“路徑”。這里,我們在概念上已經(jīng)把一個(gè)網(wǎng)頁按層次分解成了好幾個(gè)網(wǎng)頁,圖中的①表示第一層導(dǎo)航頁面,這個(gè)網(wǎng)頁只是通過相當(dāng)于文件夾名稱的標(biāo)題為第二層提供索引和導(dǎo)航,如果需要還可有第三層、第四層。這樣,盲人只要聽上幾個(gè)標(biāo)題并按鍵選擇就可進(jìn)入自己感興趣的內(nèi)容。不過,所謂分解成幾個(gè)網(wǎng)頁只是概念上的,在物理上既可以分解成不同的網(wǎng)頁、也可以留在同一個(gè)頁面中,而只是在頁面中建立了頁內(nèi)鏈接。在HTML語言中,用來表明層次關(guān)系的成分主要是標(biāo)簽〈DIV〉,一個(gè)<DIV>標(biāo)簽表示一個(gè)分段的開始,</DIV>則表示分段的結(jié)束。不過一個(gè)DIV不一定就是內(nèi)容中的一個(gè)板塊,而很可能只是跟顯示的方式和風(fēng)格相關(guān)。在實(shí)際的網(wǎng)頁上,常常有很多DIV嵌套在一起,每一層往往只是為了加上一種風(fēng)格特征。每一個(gè)DIV標(biāo)簽,也就是每一個(gè)DIV分段,都屬于某 一個(gè)“類”、即class,都可以帶上一個(gè)任意的class名,所以實(shí)際的DIV標(biāo)簽都至少是這樣<DIV class=〃abcdefg” >。這樣,我們可以把DIV想象成文件夾,其class名則相當(dāng)于文件夾的名稱。雖然DIV標(biāo)簽不一定是根據(jù)內(nèi)容的性質(zhì)而加,但是實(shí)際上跟內(nèi)容是有關(guān)的,因?yàn)闉g覽器要根據(jù)DIV標(biāo)簽將同一板塊的內(nèi)容按相同的風(fēng)格顯示在同一區(qū)域。例如,下面幾行是從某個(gè)網(wǎng)頁中整理出來的信息片斷〈HTMLXBODYXDIV. 25XDIV. 26XDIV. 29XDIV. 1XDIV. 77>:國際新聞〈HTMLXBODYXDIV. 25XDIV. 26XDIV. 29XDIV. 1XDIV. 77XDIV. 78XDIV. 79X0L>:科羅拉多槍擊案〈HTMLXBODYXDIV. 25XDIV. 26XDIV. 29XDIV. 1XDIV. 77XDIV. 78XDIV. 79X0LXLI>:敘利亞局勢〈HTMLXBODYXDIV. 25XDIV. 26XDIV. 29XDIV. 1XDIV. 77XDIV. 78XDIV. 79X0LXLI>:朝鮮的新氣象為了簡化敘述,這里的DIV標(biāo)簽都以編號代替其class名,例如〈DIV. 25>實(shí)際上可能是〈DIV class=〃common” >,〈DIV. 26> 實(shí)際上可能是〈DIV class=" short" >,等等。這里每一行的冒號‘’之后是從網(wǎng)頁的HTML文本中整理出來的某一文字信息,之前則是該文字信息的以標(biāo)簽為中間節(jié)點(diǎn)的路徑,這是一個(gè)由層層嵌套的標(biāo)簽所形成的“標(biāo)簽?!?。其中的標(biāo)簽<0L>表示“有序列表(Ordered List)”,而〈LI〉則表示有序列表中的表項(xiàng)。從這里可以看出,“國際新聞”與后面三條有相同的路徑前綴,所以屬于同一板塊,但是“國際新聞”與后面三條不屬同一層次。顯然,并非每一個(gè)DIV標(biāo)簽所代表的分段都有文字內(nèi)容,這是因?yàn)镈IV所代表的可能只是某種顯示風(fēng)格(Style),所以實(shí)際上也許〈DIV. 29XDIV. 1XDIV. 77>合在一起才代表著內(nèi)容的一個(gè)板塊,才相當(dāng)于一個(gè)名為“國際新聞”的文件夾。具體哪幾個(gè)DIV標(biāo)簽合在一起代表著一個(gè)板塊,則要看上下文。例如,如果僅看這四行,這里的〈DIV. 78>和〈DIV. 79>合在一起只是代表著概念上的一個(gè)子板塊,這個(gè)子板塊自身沒有文字內(nèi)容,其內(nèi)容就是一個(gè)有序列表。不過,跟文件系統(tǒng)相比有個(gè)不同。在文件系統(tǒng)中,一個(gè)文件夾中不能有多個(gè)同名的子文件夾或文件,同一文件夾中的每個(gè)子文件夾或文件的名稱都必須是唯一的,但是在網(wǎng)頁上卻不受這個(gè)限制,例如假定前面有個(gè)分段是〈DIV class = "abcdefg”〉,然后有個(gè)分段<DIV class = 〃xyz”>,后面又有個(gè)〈DIV class = "abcdefg”〉,這樣也是允許的,由于中間有個(gè)〈DIV class = 〃xyz” >,前后的兩個(gè)〈DIV class = "abcdefg” >就屬于兩個(gè)不同的板塊,只是共存在同一個(gè)更高層次、更大的分區(qū)中。由此可見,有了覆蓋整個(gè)網(wǎng)頁的這種關(guān)于標(biāo)簽棧和文字內(nèi)容兩方面的信息,就可以重構(gòu)出關(guān)于網(wǎng)頁內(nèi)容的結(jié)構(gòu)上的骨架,類似于我們在資源管理器中所見文件系統(tǒng)結(jié)構(gòu)那樣的樹形結(jié)構(gòu)。有了這樣的骨架,就可以實(shí)現(xiàn)按層次導(dǎo)航,就像我們在資源管理器中瀏覽文件目錄那樣。對于從事系統(tǒng)軟件開發(fā)的工程師而言,為文件系統(tǒng)開發(fā)一個(gè)資源管理器并非難事;寫一程序根據(jù)關(guān)于標(biāo)簽棧和文字內(nèi)容兩方面的信息為網(wǎng)頁重構(gòu)其內(nèi)容骨架、從而實(shí)現(xiàn)按層次導(dǎo)航同樣并非難事。至于朗讀,即把文字內(nèi)容轉(zhuǎn)化成語音,則已是一種比較成熟的技術(shù),例如公交車上就采用這樣的技術(shù)報(bào)站名。
基于以上的敘述,我們可以通過下述方法實(shí)現(xiàn)層次式的語音導(dǎo)航I、解析目標(biāo)網(wǎng)頁的原始HTML文本,在解析的過程中過濾掉于內(nèi)容文字無關(guān)的信息,包括〈SCRIPT〉、〈STYLE〉、和〈MG〉。2、摘取網(wǎng)頁內(nèi)容中的文字信息,并生成每一段文字的路徑、即標(biāo)簽棧,將這些信息寫入一個(gè)中間文件中(或保存在內(nèi)存中)。3、分析中間文件中每一行的標(biāo)簽棧和文字信息,重構(gòu)出關(guān)于網(wǎng)頁內(nèi)容結(jié)構(gòu)的骨架。4、根據(jù)關(guān)于網(wǎng)頁內(nèi)容結(jié)構(gòu)的骨架,將第一層次中各個(gè)節(jié)點(diǎn)的標(biāo)題集中在一起生成出第一層導(dǎo)航頁面(或?qū)Ш椒侄?,對導(dǎo)航頁面中的各個(gè)標(biāo)題加上編號,并使其鏈接到具體的分段或網(wǎng)頁。5、第一層次中的每一個(gè)節(jié)點(diǎn)代表著一棵子樹,整體上屬于第二層次的內(nèi)容分屬各棵子樹,并相當(dāng)于該子樹的第一層次,按該子樹的第一層次處理,余類推。6、逐次將每一層次的內(nèi)容轉(zhuǎn)換成語音,并接受鍵盤輸入作為對下一層的選擇,就可實(shí)現(xiàn)層次式的語音導(dǎo)航。層次式的語音導(dǎo)航可以給盲人帶來很大的方便,但是這還不夠,還需要有鏈接導(dǎo)航。一般而言,錨掛在文字信息上的鏈接有兩種情況,下面通過實(shí)例加以說明〈HTMLXBODY〉· . .〈DIVXOLXLIXa href = 〃http://www. xyz. com. cn/. · ·"> 敘
利亞局勢</a>〈HTMLXBODY〉· . .〈DIVXPXa href = "http://www. xyz. com. cn/..."> 敘利亞 </a>局勢日漸惡化這里的第一條用于標(biāo)題,整個(gè)字符串“敘利亞局勢”鏈接到另一個(gè)網(wǎng)頁或者分段,這種情況我們在前面已經(jīng)看到過,只是前面把鏈接說明〈a href = 〃http://www. xyz. com.cn/. . . 〃X/a>省略掉了,因?yàn)橛蛇@一對標(biāo)簽所提供的鏈接信息與文字信息的呈現(xiàn)并無關(guān)系,所以我們在解析HTML文本的過程中并不把這個(gè)信息摘取出來,而是另外保存在一組數(shù)據(jù)結(jié)構(gòu)中(下面會(huì)講到,現(xiàn)成的HTML解析器就是這樣工作的)。由于我們在導(dǎo)航頁面(或分段)中對標(biāo)題編了號,所以盲人按相應(yīng)的數(shù)字鍵、或者在瀏覽器還在朗讀這幾個(gè)字的時(shí)候就按‘Ok’鍵,就可以轉(zhuǎn)入所鏈接的目標(biāo)頁面,這屬于分層次導(dǎo)航。但是第二條則不同,這里的鏈接只是錨掛在“敘利亞”這幾個(gè)字上、而不是整個(gè)字符串上。在常規(guī)的瀏覽器上,往往在顯示時(shí)把這幾個(gè)字變一下顏色或字體,或者在用戶把光標(biāo)箭頭移到這幾個(gè)字上時(shí)換成特殊的圖標(biāo)(例如手指),此時(shí)點(diǎn)擊一下就可轉(zhuǎn)入所鏈接的目標(biāo)頁面,然而這對于盲人顯然不合適。所以,分層索引需要導(dǎo)航,鏈接同樣也需要導(dǎo)航。本發(fā)明采用這樣的辦法實(shí)現(xiàn)鏈接導(dǎo)航I、在對網(wǎng)頁的HTML文本進(jìn)行解析的過程中將除標(biāo)題鏈接以外的所有鏈接信息都摘取出來,存儲在一組數(shù)據(jù)結(jié)構(gòu)中,記錄下每個(gè)鏈接所錨掛的文字和鏈接目標(biāo)的URL。2、將這些鏈接加上編號,并生成一個(gè)鏈接導(dǎo)航或分段。3、在朗讀完本網(wǎng)頁的內(nèi)容之后就接著朗讀該鏈接導(dǎo)航分段的內(nèi)容,并接受數(shù)字鍵 或‘Ok’鍵輸入,例如本頁有3個(gè)鏈接一、敘利亞二、···三、·· ·這樣,盲人就能按數(shù)字鍵或‘Ok’鍵選擇鏈接了。如前所述,除選擇鏈接之外,也可以按‘0’鍵繼續(xù)呈現(xiàn)下一分頁,也可按‘#,鍵退
回上一層。從頭開始開發(fā)一個(gè)瀏覽器是一項(xiàng)不小的工程,但是這并無必要,我們完全可以利用開源的瀏覽器軟件,在此基礎(chǔ)上加以裁剪、修改、擴(kuò)充。即使是不開源的瀏覽器,一般也會(huì)提供二次開發(fā)的接口,也可加以裁剪、修改、和擴(kuò)充。在開源瀏覽器軟件中,F(xiàn)irefox/mozilla和Lynx 二者最有典型性,前者是開源瀏覽器中最完善、功能最全的,但是我們只需要用其前端,主要是HTML解析器就可以了,因?yàn)楹蠖硕际怯嘘P(guān)圖形顯示的功能。我們所需要的后端,則只是把文字轉(zhuǎn)化成語音的朗讀功能,這可以利用另一個(gè)開源軟件eSpeak來實(shí)現(xiàn)。當(dāng)然,對于其前端需要加上一些修改和擴(kuò)充,以實(shí)現(xiàn)本發(fā)明所述的方法。后者,即Lynx,則是一個(gè)字符模式的瀏覽器,在互聯(lián)網(wǎng)發(fā)展的早期用的很多,雖然歷史已經(jīng)很長,卻也一直在跟蹤瀏覽器技術(shù)的發(fā)展。所謂字符模式,使指Lynx不提供圖形界面,而只是面向字符型終端上的文字顯示,所以其后端相當(dāng)簡單。由于圖形顯示與盲人無關(guān),只要將Lynx的文字輸出用eSpeak朗讀出來,原則上就可實(shí)現(xiàn)語音瀏覽,在此基礎(chǔ)上再加上本發(fā)明所述的按層次導(dǎo)航和鏈接導(dǎo)航,就可以做成一個(gè)盲人專用瀏覽器?;蛘?,也可以用Lynx加本發(fā)明所述的按層次導(dǎo)航和鏈接導(dǎo)航做成一個(gè)盲人專用的門戶網(wǎng)站,把對于網(wǎng)頁的預(yù)處理放在門戶網(wǎng)站上,而只把經(jīng)過整理后生成的帶有導(dǎo)航的小頁面?zhèn)鞯矫と说慕K端設(shè)備或?yàn)g覽器上。這樣盲人的終端設(shè)備(或?yàn)g覽器)就可以做得很簡單,并且大大減小了通往盲人終端設(shè)備的數(shù)據(jù)流量,因?yàn)橄瘛碨CRIPT〉腳本、圖片等信息都已在門戶網(wǎng)站上被過濾掉了。所以,我們采用Lynx作為本發(fā)明實(shí)施例的基礎(chǔ),但是以哪一個(gè)軟件作為基礎(chǔ)只是實(shí)現(xiàn)細(xì)節(jié)的不同,這種細(xì)節(jié)上的不同不影響本發(fā)明的實(shí)質(zhì),而本發(fā)明的實(shí)質(zhì)是對平面式的普通網(wǎng)頁進(jìn)行預(yù)處理、以提供按層次導(dǎo)航和鏈接導(dǎo)航,并將文字內(nèi)容轉(zhuǎn)化成語音。
不管是將本發(fā)明所述的方法實(shí)現(xiàn)成盲人專用瀏覽器,還是實(shí)現(xiàn)成盲人專用門戶網(wǎng)站,其基本的技術(shù)關(guān)鍵是共同的,下面對這些技術(shù)關(guān)鍵結(jié)合Lynx的源代碼作一說明。首先,Lynx的前端和后端的分界是函數(shù)display_page()。當(dāng)Lynx的前端完成了對網(wǎng)頁的HTML解析的時(shí)候,網(wǎng)頁中所有的文字性內(nèi)容都已被摘取到一個(gè)HTLine數(shù)據(jù)結(jié)構(gòu)隊(duì)列中,后端的作用就是把這些文字性內(nèi)容呈現(xiàn)在顯示屏上。盡管Lynx只是一個(gè)字符模式的瀏覽器,其后端比Firefox當(dāng)然簡單多了,但也還是比較復(fù)雜的,因?yàn)樾枰尮鈽?biāo)在顯示屏上能上下左右移動(dòng),所以采用了一種稱為Curses的技術(shù)。但是,對于我們的目的,則要簡單得多,我們只要通過一個(gè)循環(huán)把這些HTLine結(jié)構(gòu)中的文字性內(nèi)容打印出來供朗讀就行了。但是Lynx并不提供我們所需的關(guān)于標(biāo)簽棧的信息。為此,我們需要對前端加上一些改造,具體的方法是I、修改HTLine數(shù)據(jù)結(jié)構(gòu)的定義,使其提供兩個(gè)緩沖區(qū),一個(gè)像原先一樣用來盛放從HTML文本中摘取的文字性內(nèi)容,另一個(gè)則用來盛放相關(guān)的標(biāo)簽棧信息。 2、在前端的數(shù)據(jù)結(jié)構(gòu)中維持一個(gè)標(biāo)簽堆棧、實(shí)際上是一個(gè)隊(duì)列,在解析HTML文本的過程中每當(dāng)碰到一個(gè)由標(biāo)簽代表的分段時(shí),就將一個(gè)代表著標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)壓入這個(gè)堆棧;然后在碰到相應(yīng)的結(jié)束標(biāo)簽時(shí)則彈出并釋放這個(gè)數(shù)據(jù)結(jié)構(gòu)。Lynx的前端本來就有這樣的機(jī)制,但是壓入堆棧的所有同種標(biāo)簽都通過指針指向同一個(gè)標(biāo)簽描述塊(每種標(biāo)簽都有自己的描述塊),例如所有代表著<DIV>標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)都指向DIV標(biāo)簽的描述塊,而不管其class名是什么,這樣就失去了一些重構(gòu)信息結(jié)構(gòu)骨架所需的信息。所以,現(xiàn)在要做一點(diǎn)修改,就是在壓入堆棧的數(shù)據(jù)結(jié)構(gòu)中包含一個(gè)標(biāo)簽描述塊副本(原來只是一個(gè)指針),再加上class名、以及相應(yīng)的編號。3、在解析HTML文本的過程中,每當(dāng)將一個(gè)代表著標(biāo)簽的數(shù)據(jù)結(jié)構(gòu)壓入標(biāo)簽棧之后就調(diào)用一個(gè)過程update_tag_stack O ,根據(jù)堆棧的內(nèi)容生成一個(gè)形似〈HTMLXBODY〉. . . <DIVX0LXLI>的字符串,盛放在當(dāng)前HTLine數(shù)據(jù)結(jié)構(gòu)的標(biāo)簽棧信息緩沖區(qū)中。4、完成對整個(gè)網(wǎng)頁的HTML解析并打印一個(gè)HTLine數(shù)據(jù)結(jié)構(gòu)中的內(nèi)容時(shí),先打印其標(biāo)簽棧信息,再打印一個(gè)分隔符‘’,然后打印其文字性內(nèi)容。這樣,就可以得到類似前面所舉例子中那樣的輸出,例如〈HTMLXBODYXDIV. 25><DIV. 26XDIV. 29XDIV. 1XDIV. 77XDIV. 78XDIV. 79><0L>:科羅拉多槍擊案在Lynx前端的輸出中,〈SCRIPT〉和〈STYLE〉的內(nèi)容已經(jīng)被過濾掉,表明鏈接目標(biāo)的“href=”也已被過濾掉,但是與例如〈MG〉、〈FORM〉、〈BUTTON〉等標(biāo)簽相關(guān)的文字信息卻沒有被過濾,所以在輸出前可以調(diào)用一個(gè)過程trim_text()加以修剪過濾。這個(gè)函數(shù)的偽代碼描述如下
權(quán)利要求
1. 一種適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于該方法包括如下步驟 I. I、對網(wǎng)頁進(jìn)行基于HTML文本解析的預(yù)處理,把內(nèi)容中不能轉(zhuǎn)換成聲音的信息過濾掉; I.2、對網(wǎng)頁內(nèi)容加以分析和改造,在此基礎(chǔ)上將平面結(jié)構(gòu)的網(wǎng)頁內(nèi)容改成層次結(jié)構(gòu),并插入必要的提示文字,提供分層次導(dǎo)航; 1.3、將經(jīng)過預(yù)處理后的網(wǎng)頁中的文字信息轉(zhuǎn)換成語音。
2.根據(jù)權(quán)利要求I所述的適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于 2.I、將文本中出現(xiàn)的非標(biāo)題性鏈接組織在一起,并插入必要的提示文字以提供鏈接導(dǎo)航。
3.根據(jù)權(quán)利要求I所述的適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于通過下述方法實(shí)現(xiàn)層次式的語音導(dǎo)航 3. I、解析目標(biāo)網(wǎng)頁的原始HTML文本,在解析的過程中過濾掉于內(nèi)容文字無關(guān)的信息,包括〈SCRIPT〉、〈STYLE〉、和 <IMG> ; 3. 2、摘取網(wǎng)頁內(nèi)容中的文字信息,并生成每一段文字的路徑、即標(biāo)簽棧,將這些信息寫入一個(gè)中間文件中或保存在內(nèi)存中; 3. 3、分析中間文件中每一行的標(biāo)簽棧和文字信息,重構(gòu)出關(guān)于網(wǎng)頁內(nèi)容結(jié)構(gòu)的骨架; 3. 4、根據(jù)關(guān)于網(wǎng)頁內(nèi)容結(jié)構(gòu)的骨架,將第一層次中各個(gè)節(jié)點(diǎn)的標(biāo)題集中在一起生成出第一層導(dǎo)航頁面或?qū)Ш椒侄?,對?dǎo)航頁面中各個(gè)標(biāo)題加上編號,并使其鏈接到具體的分段或網(wǎng)頁; 3.5、第一層次中的每一個(gè)節(jié)點(diǎn)代表著一棵子樹,整體上屬于第二層次的內(nèi)容分屬各棵子樹,并相當(dāng)于該子樹的第一層次,余類推; 3.6、逐次將每一層次的內(nèi)容轉(zhuǎn)換成語音,并接受鍵盤輸入作為對下一層的選擇,實(shí)現(xiàn)層次式的語音導(dǎo)航。
4.根據(jù)權(quán)利要求2所述的適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于通過下述方法實(shí)現(xiàn)鏈接導(dǎo)航 4. I、在對網(wǎng)頁的HTML文本進(jìn)行解析的過程中將除標(biāo)題鏈接以外的所有鏈接信息都摘取出來,存儲在一組數(shù)據(jù)結(jié)構(gòu)中,記錄下每個(gè)鏈接所錨掛的文字和鏈接目標(biāo)的URL ; 4. 2、將這些鏈接加上編號,并生成一個(gè)鏈接導(dǎo)航頁面或分段; 4. 3、在朗讀完本網(wǎng)頁的內(nèi)容之后就朗讀該鏈接導(dǎo)航頁面的內(nèi)容,并接受數(shù)字鍵或‘Ok’鍵輸入; 4.4、除選擇鏈接之外,也能夠按‘0’鍵繼續(xù)呈現(xiàn)下一分頁,也能夠按‘#,鍵退回上一層。
5.根據(jù)權(quán)利要求I或2所述的適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于 5.I、實(shí)施成盲人專用瀏覽器,通過HTML語言解析器將解析所得的內(nèi)容以語音形式呈現(xiàn)。
6、根據(jù)權(quán)利要求I或2所述的適合盲人使用的網(wǎng)頁瀏覽方法,其特征在于 6. I、建立盲人專用門戶網(wǎng)站,門戶網(wǎng)站上配有實(shí)施本發(fā)明所述方法對網(wǎng)頁的HTML文本進(jìn)行預(yù)處理的軟件; 6.2、在用戶端設(shè)備上將經(jīng)過門戶網(wǎng)站預(yù)處理的文字信息轉(zhuǎn)化成語音。
全文摘要
本發(fā)明涉及一種適合盲人使用的網(wǎng)頁瀏覽方法,先對網(wǎng)頁進(jìn)行預(yù)處理,將其內(nèi)容加以組織,添上導(dǎo)航信息,再轉(zhuǎn)化成語音朗讀出來,為盲人提供帶有導(dǎo)航的語音瀏覽。主要特征和操作步驟如下1)對網(wǎng)頁進(jìn)行基于HTML文本解析的預(yù)處理,把內(nèi)容中不能轉(zhuǎn)換成聲音的信息過濾掉;2)對網(wǎng)頁內(nèi)容加以分析和改造,在此基礎(chǔ)上將平面結(jié)構(gòu)的網(wǎng)頁內(nèi)容改成層次結(jié)構(gòu),并插入必要的文字,以提供分層次導(dǎo)航;3)將經(jīng)過預(yù)處理后的網(wǎng)頁中的文字信息轉(zhuǎn)換成語音。本發(fā)明有益的效果是提供了一種適合盲人使用的網(wǎng)頁瀏覽方法,既提供對于網(wǎng)頁內(nèi)容的分層次導(dǎo)航,又提供對于鏈接的導(dǎo)航,并將網(wǎng)頁內(nèi)容轉(zhuǎn)化成語音朗讀出來。下面通過一個(gè)假想的情景說明采用本方法后的效果。
文檔編號G06F17/30GK102831229SQ20121031499
公開日2012年12月19日 申請日期2012年8月30日 優(yōu)先權(quán)日2012年8月30日
發(fā)明者毛德操, 王承志, 范志強(qiáng), 徐鼎鼎 申請人:浙大網(wǎng)新科技股份有限公司