龔丹 石蘊(yùn)金
摘 要:當(dāng)前在大學(xué)校園中已經(jīng)建設(shè)的各種信息系統(tǒng)互相獨(dú)立、分散性很大,已不能滿足移動互聯(lián)網(wǎng)發(fā)展過程中,人們對信息獲取便捷性、快速性的需求。本文首先簡述了網(wǎng)絡(luò)爬蟲和OCR驗證碼識別技術(shù);然后結(jié)合統(tǒng)一文件存儲、外部數(shù)據(jù)庫代理、Docker虛擬化容器等云平臺、跨平臺技術(shù),給出接入已有校內(nèi)系統(tǒng)獲取信息,進(jìn)而建設(shè)一站式校園信息綜合服務(wù)平臺的解決方案;最后給出方案實施后在功能、性能和實用性等角度的測試結(jié)果。結(jié)果表明本方案可以打破傳統(tǒng)校內(nèi)系統(tǒng)的壁壘,向用戶提供更便捷、移動端友好的信息服務(wù)。
關(guān)鍵詞:校園信息系統(tǒng);網(wǎng)絡(luò)爬蟲;OCR;云平臺
文章編號:2095-2163(2019)04-0112-05 中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A
0 引 言
當(dāng)前大學(xué)校園通常都配備有教務(wù)系統(tǒng)、圖書館系統(tǒng)、校園卡系統(tǒng)、門禁系統(tǒng)、就業(yè)系統(tǒng)等等。這些系統(tǒng)覆蓋了高校內(nèi)的各種核心業(yè)務(wù),但是通常是各自為政[1-3]。信息化管理的普及給工作帶來高效的同時,也積累了越來越多的應(yīng)用系統(tǒng);尤其是移動互聯(lián)網(wǎng)發(fā)展,移動端APP瘋狂上市,近期央視新聞報道在一些高校信息化手段出現(xiàn)的過度傾向[4],打水、連網(wǎng)、記學(xué)分都要APP??梢姡?dāng)前信息化手段的應(yīng)用不再局限于管理工作,更多地是提供服務(wù),以方便師生在校學(xué)習(xí)、工作時,方便快捷地獲得所需要的信息。這種信息獲取的需求,內(nèi)容是基礎(chǔ),但更重要的是體驗——隨時隨地、快速便捷、清晰美觀地呈現(xiàn)給用戶。因此,作者以工作和學(xué)習(xí)的校園實際情況為背景,提出打破已有獨(dú)立系統(tǒng)壁壘、提供一站式綜合信息服務(wù)系統(tǒng)的方案,并利用云平臺技術(shù),去除用戶安裝和使用本系統(tǒng)的計算資源負(fù)擔(dān),享受高品質(zhì)的信息服務(wù)。
1 相關(guān)技術(shù)
1.1 網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲是一個自動地從互聯(lián)網(wǎng)上抽取網(wǎng)絡(luò)信息的程序,通常作為網(wǎng)絡(luò)數(shù)據(jù)收集的工具。通過編寫爬蟲程序,完成特定的過程和算法,從目標(biāo)地址中獲取所需要的信息,并使用特定算法完整數(shù)據(jù)結(jié)構(gòu)分析和整理[5]。一般爬蟲分為增量型爬蟲、批量型爬蟲和垂直型爬蟲。增量型爬蟲無固定范圍目標(biāo),持續(xù)不斷的抓取互聯(lián)網(wǎng)中的各種類型的信息,根據(jù)目前互聯(lián)網(wǎng)的變化而不斷變化抓取的內(nèi)容。批量型爬蟲有固定范圍目標(biāo),設(shè)定一定的目標(biāo)達(dá)到設(shè)定的目標(biāo)就自動停止抓取信息。而垂直型爬蟲不像通用爬蟲那樣需要全面地從互聯(lián)網(wǎng)抓取網(wǎng)絡(luò)數(shù)據(jù),而只編寫成為完成特定目的,為指定系統(tǒng)和目標(biāo)使用特定算法抓取目標(biāo)信息的爬蟲[6]。本文僅研究垂直型爬蟲以實現(xiàn)獲取系統(tǒng)所需的信息和功能。
1.2 OCR驗證碼識別
1.2.1 OCR技術(shù)介紹
OCR技術(shù)是光學(xué)字符識別的縮寫(Optical Character Recognition),通過掃描等光學(xué)輸入方式將各種票據(jù)、報刊、書籍、文稿及其印刷品的文字轉(zhuǎn)化為圖像信息,再利用文字識別技術(shù)將圖像信息轉(zhuǎn)化為可使用的計算機(jī)輸入技術(shù)。可應(yīng)用于銀行票據(jù)、大量文字資料、檔案卷宗、文案的錄入和處理領(lǐng)域。適合于銀行、稅務(wù)等行業(yè)大量票據(jù)表格的自動掃描識別及長期存儲。相對一般文本,通常以最終識別率、識別速度、版面理解正確率及版面還原滿意度4個方面作為OCR技術(shù)的評測依據(jù);而相對于表格及票據(jù), 通常以識別率或整張通過率及識別速度為測定OCR技術(shù)的實用標(biāo)準(zhǔn)[7]。
1.2.2 驗證碼識別的概念
驗證碼的英文CAPTCHA,即全自動區(qū)分計算機(jī)和人類的圖靈測試,是為區(qū)別對方到底是人類還是計算機(jī)程序而設(shè)置的一種驗證措施,主要用來防止網(wǎng)絡(luò)機(jī)器人的一些惡意行為[8]。
驗證碼是一種區(qū)分用戶是計算機(jī)和人類的全自動程序。該程序生產(chǎn)一個問題,可以由計算機(jī)生成并評判,必須只有人類才能解答該問題。由于計算機(jī)無法解答驗證碼的問題,所以回答出這個問題的用戶就能被認(rèn)定為是人類。由于這個測試是由計算機(jī)來考人類,而不是標(biāo)準(zhǔn)的圖靈測試中那樣由人類來考計算機(jī),被稱為反向圖靈測試。
2 網(wǎng)絡(luò)爬蟲的詳細(xì)設(shè)計
2.1 正方教務(wù)系統(tǒng)爬蟲
正方現(xiàn)代教學(xué)管理系統(tǒng)是目前廣泛用于高校學(xué)院各部門以及各層次用戶的多模塊綜合信息管理系統(tǒng),包括教務(wù)公共信息維護(hù)、學(xué)生管理、師資管理、教學(xué)計劃管理、智能排課、考試管理、選課管理、成績管理、教材管理、實踐管理、收費(fèi)管理、教學(xué)質(zhì)量評價、畢業(yè)生管理、體育管理、實驗室管理以及學(xué)生綜合信息查詢、教師網(wǎng)上成績錄入等模塊。正方教務(wù)系統(tǒng)爬蟲是針對正方教務(wù)系統(tǒng)自動獲取系統(tǒng)中的學(xué)生數(shù)據(jù)、成績數(shù)據(jù)、課表數(shù)據(jù)等數(shù)據(jù)并通過特定算法完成整理數(shù)據(jù)結(jié)構(gòu)返回其數(shù)據(jù)信息的垂直型爬蟲。具體結(jié)構(gòu)如圖1所示。正方教務(wù)爬蟲的基礎(chǔ)流程如下:
(1)建立抓取指定信息的任務(wù);
(2)判斷緩存數(shù)據(jù)庫是否含有任務(wù)緩存信息;
(3)嘗試進(jìn)行模擬登入;
(4)將網(wǎng)頁信息和驗證碼交給統(tǒng)一文件存儲服務(wù);
(5)通過OCR驗證碼識別服務(wù)識別驗證碼;
(6)指定信息網(wǎng)頁下載;
(7)根據(jù)數(shù)據(jù)格式要求調(diào)用指定算法進(jìn)行數(shù)據(jù)結(jié)構(gòu)整理;
(8)格式化數(shù)據(jù)并進(jìn)行編碼;
(9)更新存儲數(shù)據(jù)到緩存數(shù)據(jù)庫。
2.2 銳捷網(wǎng)絡(luò)管理系統(tǒng)爬蟲
銳捷RG-SAM認(rèn)證計費(fèi)網(wǎng)絡(luò)管理系統(tǒng)是目前廣泛用于高校學(xué)院中的一種認(rèn)證計費(fèi)網(wǎng)絡(luò)管理軟件。銳捷網(wǎng)絡(luò)管理系統(tǒng)爬蟲是針對銳捷RG-SAM認(rèn)證計費(fèi)網(wǎng)絡(luò)管理系統(tǒng)會根據(jù)用戶的信息數(shù)據(jù)自動獲取用戶網(wǎng)絡(luò)數(shù)據(jù)的用戶余額、上網(wǎng)周期、綁定IP、網(wǎng)絡(luò)參數(shù)等信息的垂直型網(wǎng)絡(luò)爬蟲。具體結(jié)構(gòu)如圖2所示。銳捷網(wǎng)絡(luò)管理系統(tǒng)爬蟲的基礎(chǔ)流程如下:
(1)建立指定信息抓取任務(wù);
(2)系統(tǒng)登錄;
(3)將信息存入統(tǒng)一文件存儲服務(wù);
(4)使用OCR驗證碼識別服務(wù)識別驗證碼;
(5)指定信息網(wǎng)頁下載;
(6)使用數(shù)據(jù)整理算法;
(7)返回數(shù)據(jù)信息。
3 OCR驗證碼識別服務(wù)的詳細(xì)設(shè)計
驗證碼識別服務(wù)主要有以下幾個主要功能,實現(xiàn)圖像的采集功能、去噪、二值化、字符切割、樣本的訓(xùn)練和識別。在本文中,作者對系統(tǒng)的總體功能結(jié)構(gòu)、技術(shù)框架和總體類進(jìn)行了分析和實現(xiàn),在此基礎(chǔ)上,本章將對驗證碼識別服務(wù)的主要功能進(jìn)行詳細(xì)設(shè)計。
3.1 圖像采集功能
通過特定方式請求,從Internet上獲取需要識別的驗證碼并存儲在統(tǒng)一文件存儲服務(wù)中,并將存儲信息告知識別程序。程序流程:
(1)由服務(wù)端傳輸所需要的請求信息,如:請求id值、請求類型、請求地址、COOKIE、HEADER等信息。由圖像采集功能模塊建立socket鏈接從Internet上讀取圖片文件;
(2)將讀取到的圖片文件流通過請求id命名、PUT提交給統(tǒng)一文件存儲服務(wù)進(jìn)行存儲;
(3)告知服務(wù)端圖片獲取是否成功,由服務(wù)端繼續(xù)執(zhí)行圖片識別服務(wù)。
3.2 圖像的去噪
驗證碼在生成中為了防止識別添加了許多噪點(diǎn)或傳輸壓縮的過程中產(chǎn)生了很多噪聲,去噪聲是圖像處理中常用的技術(shù)手段。通常需要對識別目標(biāo)的噪聲進(jìn)行分析,根據(jù)不同噪聲的特性進(jìn)行去噪,也稱噪聲去除。
根據(jù)采集到的大量樣本表明字體顏色采用了純藍(lán)色RGB(0,0,153),使用該特征可以很方便地去噪。將圖片轉(zhuǎn)換為矩陣,進(jìn)行循環(huán)掃描濾波,去除其顏色信息后,獲得只包含字符信息的圖片矩陣。
3.3 圖像的二值化
為了讓程序更好更快地識別其中的信息,需要對彩色圖像信息進(jìn)行處理,圖像的二值化就是把圖像中的像素根據(jù)一定的標(biāo)準(zhǔn)分化成2種顏色。區(qū)分圖像中的前景信息與背景信息,簡單定義前景信息為黑色,背景信息為白色。
3.4 圖像的字符切割
一般圖像信息中含有多個字符,識別時需要根據(jù)每個字符的特征進(jìn)行比對識別,所以對圖像進(jìn)行字符切割是不可或缺的。這一步的主要工作就是把圖像中的字符獨(dú)立出來以方便識別和進(jìn)行處理。
對圖像信息分析發(fā)現(xiàn),字符使用的字號相對固定,每個字符不會出現(xiàn)重疊現(xiàn)象僅可能出現(xiàn)粘連,文字旋轉(zhuǎn)方向相對不固定但小于等于45°。規(guī)則字符的粘連很容易分割開,如果字符本身有縮放、變形就很難處理。經(jīng)分析,可以發(fā)現(xiàn),上面的字符粘連屬于很簡單的方式,只是規(guī)則字符的粘連,處理這種情況,可使用很簡單的處理方式。當(dāng)完成分割操作后,不能馬上確定分割的部分是否為一個字符,要進(jìn)行驗證。驗證的關(guān)鍵因素就是,切割下來的字符的寬是否大于閾值,這個閾值的取舍標(biāo)準(zhǔn)是,一個字符無論怎么旋轉(zhuǎn)變形都不會大于這個閾值。如果切割的塊大于這個閾值,就認(rèn)為這是一個粘連字符;如果大于2個閾值之和,就認(rèn)為是三個字符粘連,以此類推。了解這個規(guī)則后,切割粘連字符也就很簡單了。如發(fā)現(xiàn)是粘連字符塊,直接平分這個塊為2個或者多個新的塊就可以。當(dāng)然為了更好地還原字符,本文采用平分+1、-1對字符塊的部分進(jìn)行適當(dāng)?shù)难a(bǔ)充。具體算法如下:
(1)掃描整個圖像信息,取得真實字符串圖像所在位置和大小,進(jìn)行記錄;
(2)按照字符串?dāng)?shù)量進(jìn)行等分,并判斷字符是否存在粘連并進(jìn)行處理,取得每個字符串所在的大概位置;
(3)將圖像進(jìn)行分割,取得每個字符圖像。
3.5 圖像的訓(xùn)練和識別
首先,采取大量訓(xùn)練樣本來進(jìn)行處理分析,取得每個字符大量樣本后進(jìn)行標(biāo)注,將得到的信息以文件形式保存為權(quán)值矩陣。本程序中采用的訓(xùn)練樣本以圖片形式展現(xiàn)。經(jīng)過處理后的訓(xùn)練樣本僅保留了字符的特征信息,將大量樣本用來擴(kuò)充樣本庫。識別服務(wù)啟動后首先載入全部樣本庫,識別樣本時創(chuàng)建一個權(quán)重數(shù)組,按照相似度比對進(jìn)行權(quán)重累加。最后輸出權(quán)重值最高的字符作為識別結(jié)果進(jìn)行返回。經(jīng)過挑選采用了800個含有字符數(shù)據(jù)信息的圖像作為訓(xùn)練樣本。圖像中包含了0到8的9個數(shù)字、不包括O的從A到Y(jié)的24個英文小寫字母,總共33個字符處理后的圖像。
經(jīng)過測試,這些訓(xùn)練樣本訓(xùn)練后的識別服務(wù)對于其驗證碼可以達(dá)到約90%以上的識別率。當(dāng)然如果進(jìn)行圖像傾斜度矯正,那無疑可以進(jìn)一步提高識別率,但是圖片處理的時間和復(fù)雜度會達(dá)到非常大的級別,同樣如果再增加訓(xùn)練樣本也可以提高識別率,所以實際意義不大。
4 方案實施與應(yīng)用
除上述關(guān)鍵技術(shù),本文系統(tǒng)的總體設(shè)計方案中將系統(tǒng)按模塊劃分為控制節(jié)點(diǎn)模塊、交付模塊、自動發(fā)布模塊和 Web 管理頁面模塊。采用Docker虛擬化容器架構(gòu),提高了跨平臺的部署性、擴(kuò)展性和安全性。系統(tǒng)分為以下子容器系統(tǒng):Web平臺服務(wù)、服務(wù)注冊系統(tǒng)、自動發(fā)布服務(wù)、容器管理服務(wù)、OCR驗證碼識別服務(wù)、統(tǒng)一文件儲存服務(wù)、外部數(shù)據(jù)庫代理服務(wù)、數(shù)據(jù)庫服務(wù)。最后,將系統(tǒng)部署到學(xué)校的服務(wù)器集群上,提供云平臺計算,應(yīng)用前端通過微信小程序發(fā)布(微信搜索小程序“華德校園”,試用賬號請與作者聯(lián)系),供用戶使用。本部分給出對關(guān)鍵技術(shù)的測試和系統(tǒng)應(yīng)用情況的展示。
4.1 信息抓取與格式化——以課程表信息為例
在校內(nèi)各項信息中,課程表是學(xué)生最為關(guān)注的信息之一。因此,本部分以展示前面所設(shè)計的正方教務(wù)系統(tǒng)爬蟲的實施效果為例,以說明本系統(tǒng)的信息服務(wù)功能。如圖3所示,(a)為算法直接抓取到的數(shù)據(jù),顯然,需要經(jīng)過格式化,才能成為課表服務(wù)中的輸入,并以直觀易懂的形式顯示給用戶。(b)為從抓取數(shù)據(jù)中提取出關(guān)鍵信息的中間表示形式。鑒于大學(xué)課程在不同教學(xué)周的安排變化較大,本平臺最終輸出給用戶的課程表,以周為單位進(jìn)行展示,如圖4所示。
4.2 驗證碼識別服務(wù)
如圖5(a)所示,帶陰影的圖文區(qū)域是舊系統(tǒng)登錄時隨機(jī)生成的驗證碼,其左側(cè)黑色字符為本文方法識別得到的結(jié)果。圖5(b)是對本方法進(jìn)行330次測試得到的統(tǒng)計結(jié)果,該驗證碼系統(tǒng)中33種字符,識別準(zhǔn)確率在90%以上的字符24種,占73%;準(zhǔn)確率在80%以上的字符則為28種,占85%;識別效果最差的為字符l,準(zhǔn)確率為62%。本服務(wù)設(shè)置了自動嘗試3次,因此驗證通過率完全符合實際需要。
4.3 應(yīng)用與推廣
為進(jìn)一步說明本文所述的解決方案及相應(yīng)系統(tǒng)的實用性,通過微信小程序數(shù)據(jù)服務(wù)獲得了2018年9月至12月,APP用戶和訪問數(shù)統(tǒng)計詳情,如圖6所示??梢?,本系統(tǒng)用戶數(shù)穩(wěn)定上升,訪問次數(shù)以7天為單位呈周期地波動,完全符合高校教學(xué)周的活動特征。
5 結(jié)束語
舊的校園網(wǎng)內(nèi)管理系統(tǒng)互相獨(dú)立、使用便捷性不高。因此,從提升校園內(nèi)信息服務(wù)品質(zhì)的角度,本文基于云平臺的架構(gòu),設(shè)計了一個綜合信息服務(wù)平臺。其中涉及網(wǎng)絡(luò)爬蟲和驗證碼識別技術(shù),為打破舊有系統(tǒng)各自的壁壘、完成信息的綜合集成奠定了基礎(chǔ);同時,本系統(tǒng)將信息獲取與格式處理、統(tǒng)一文件存儲、數(shù)據(jù)庫等計算服務(wù)建構(gòu)在云平臺之上,通過發(fā)布的微信小程序作為用戶入口,極大地提升了用戶體驗、降低了應(yīng)用負(fù)擔(dān)。對近半年的應(yīng)用數(shù)據(jù)進(jìn)行觀察可見,用戶規(guī)模不斷增加,應(yīng)用粘度非常高,技術(shù)方案合理、系統(tǒng)具有較好的實用價值。
參考文獻(xiàn)
[1] 邢長明,楊林,劉一良. “互聯(lián)網(wǎng)+”時代地方高校繼續(xù)教育信息化建設(shè)的問題與對策[J]. 中國成人教育,2018(21):123-126.
[2]牛文. 基于云技術(shù)的高校信息服務(wù)平臺設(shè)計[J]. 電子設(shè)計工程,2018,26(16):116-119,124.
[3]李竹村. 高校信息化發(fā)展規(guī)劃現(xiàn)狀與規(guī)劃建議[J]. 電腦知識與技術(shù),2018,14(21):175-177.
[4]央視新聞. 打水也要APP!. [EB/OL]. [2018-11-13]. https://mp.weixin.qq.com/s/HE15owRLW4s-KGTWisKboQ.
[5]孫立偉,何國輝,吳禮發(fā). 網(wǎng)絡(luò)爬蟲技術(shù)的研究[J]. 電腦知識與技術(shù),2010,6(15):4112-4115.
[6]姜美英. 垂直搜索引擎在校園網(wǎng)中的研究與應(yīng)用[D]. 西安:西安科技大學(xué),2012.
[7]百度百科. OCR技術(shù). [EB/OL]. [2018-11-29]. https://baike.baidu.com/item/OCR%E6%8A%80%E6%9C%AF/15695472?fr=aladdin.
[8]汪中.驗證碼識別技術(shù)及應(yīng)用[J]. 計算機(jī)光盤軟件與應(yīng)用,2014,17(5):167-168.