王紅芳 吳馮娣 湯 萍 張凱兵
(湖北工程學(xué)院圖書(shū)館,湖北 孝感 432000)
隨著信息技術(shù)的飛速發(fā)展以及圖書(shū)館信息化進(jìn)程的日益加快,實(shí)現(xiàn)無(wú)證化管理是未來(lái)圖書(shū)館的發(fā)展趨勢(shì)。借閱服務(wù)作為圖書(shū)館的一項(xiàng)常規(guī)化服務(wù),目前其服務(wù)質(zhì)量和管理水平在圖書(shū)管理工作中占有極其重要的地位。在圖書(shū)流通服務(wù)中,目前國(guó)內(nèi)大部分圖書(shū)館仍然采用借閱證或一卡通對(duì)讀者進(jìn)行身份認(rèn)證。然而,隨著“一切為了讀者,為了讀者的一切”服務(wù)理念的不斷深化,傳統(tǒng)的基于卡證的讀者身份認(rèn)證方式已難以適應(yīng)現(xiàn)代圖書(shū)館管理的應(yīng)用需求。傳統(tǒng)的卡證管理方式存在易丟失、易損壞、易盜用等諸多弊端,這些都會(huì)給讀者和工作人員帶來(lái)很多不便。因此,建立一套方便有效的讀者身份認(rèn)證模式,對(duì)改進(jìn)圖書(shū)館管理工作,提高讀者滿意度具有非常重要的意義。
指紋是人體重要的生物鑒別特征之一,具有唯一性和穩(wěn)定性。因此,使用指紋識(shí)別技術(shù)對(duì)讀者身份進(jìn)行認(rèn)證,具有傳統(tǒng)卡證方式不可比擬的優(yōu)點(diǎn)[1~2]。一方面,通過(guò)在圖書(shū)管理系統(tǒng)中嵌入指紋識(shí)別功能,能克服計(jì)算機(jī)系統(tǒng)“認(rèn)卡不認(rèn)人”的弊端,安全可靠,可避免因圖書(shū)證借用、盜用或丟失給讀者帶來(lái)一定程度的經(jīng)濟(jì)損失。另一方面,基于指紋識(shí)別的讀者身份認(rèn)證模式有利于實(shí)現(xiàn)人性化的讀者管理,避免由于卡證損壞或丟失而影響讀者對(duì)圖書(shū)館的正常使用,從而有效提高圖書(shū)館的資源利用率和讀者服務(wù)的滿意度。
利用數(shù)字指紋識(shí)別技術(shù)對(duì)讀者進(jìn)行管理,能極大地提高圖書(shū)館管理的效率和水平,已受到人們的廣泛關(guān)注。如馮毅等[3]提出了利用自動(dòng)指紋識(shí)別技術(shù)進(jìn)行讀者管理的構(gòu)想。劉凡馨等[4]提出了使用指紋認(rèn)證實(shí)現(xiàn)對(duì)讀者證件進(jìn)行管理的方法。文獻(xiàn)[5]設(shè)計(jì)了一種基于Mini100指紋采集儀和Visual C++語(yǔ)言編程的面向?qū)ο蠹y識(shí)別算法,取得了很好的識(shí)別效果。針對(duì)駕??荚囍锌忌纳矸菡J(rèn)證問(wèn)題,文獻(xiàn)[6]設(shè)計(jì)了基于Dephi的指紋識(shí)別系統(tǒng)。文獻(xiàn)[7]采用C/S和B/S模式相結(jié)合的方式,設(shè)計(jì)一個(gè)高校課堂指紋考勤系統(tǒng),以實(shí)現(xiàn)學(xué)生的考勤功能和遠(yuǎn)程的考勤查詢功能,具有較好的應(yīng)用效果。
鑒于指紋識(shí)別在身份認(rèn)證方面的有效性和在圖書(shū)館讀者管理方面的潛在優(yōu)勢(shì),作者采用Visual Basic 6.0可視化編程工具和中控科技U.R.U4000B指紋采集儀,設(shè)計(jì)了一個(gè)基于指紋識(shí)別的讀者身份認(rèn)證方法,圖書(shū)館后臺(tái)數(shù)據(jù)庫(kù)使用SQL Server 2005進(jìn)行存儲(chǔ)。經(jīng)測(cè)試運(yùn)行表明,該系統(tǒng)運(yùn)行穩(wěn)定,識(shí)別率高,使用方便,能方便地嵌入到高校圖書(shū)館的門(mén)禁系統(tǒng)和借閱管理系統(tǒng)中使用。
本系統(tǒng)采用C/S模式設(shè)計(jì),由讀者指紋登記模塊和讀者指紋身份認(rèn)證模塊兩個(gè)關(guān)鍵部分組成。其中指紋登記部分主要用于讀者基本信息的登記、指紋圖像的采集和特征提取功能,并將讀者信息和指紋特征碼存儲(chǔ)到后臺(tái)數(shù)據(jù)庫(kù)中,便于身份認(rèn)證時(shí)檢索比對(duì)。讀者身份認(rèn)證用于完成指紋圖像的采集和特征提取,并與后臺(tái)數(shù)據(jù)庫(kù)中已注冊(cè)的讀者的指紋特征進(jìn)行匹配識(shí)別,以便對(duì)合法的讀者進(jìn)行借閱服務(wù)。基于指紋識(shí)別的借閱系統(tǒng)設(shè)計(jì)框圖如圖1所示。
圖1 指紋識(shí)別借閱系統(tǒng)
[8],筆者設(shè)計(jì)的指紋識(shí)別借閱系統(tǒng)數(shù)據(jù)庫(kù)中包括8個(gè)關(guān)系表,如表1所示。
表1 指紋識(shí)別借閱數(shù)據(jù)庫(kù)
為實(shí)現(xiàn)基于指紋識(shí)別的讀者身份認(rèn)證,筆者對(duì)讀者信息表Reader進(jìn)行重新設(shè)計(jì),增加了讀者指紋標(biāo)識(shí)碼字段Finger-Print_ID和指紋特征字段FingerPrint,Reader表的邏輯結(jié)構(gòu)如表2所示。
表2 讀者信息表結(jié)構(gòu)
使用U.R.U4000B指紋采集支持的SDK(Software Development Kit)軟件開(kāi)發(fā)包進(jìn)行二次開(kāi)發(fā)[9]。首先,安裝由產(chǎn)品供應(yīng)商提供的指紋儀驅(qū)動(dòng)驅(qū)動(dòng)程序。然后,將安裝目錄下的控件庫(kù)文件Biokey.ocx復(fù)制到Windows系統(tǒng)目錄system下。最后,使用c:windowssystem egsvr32.exe命令注冊(cè)Biokey.ocx控件。使用可視化開(kāi)發(fā)工具Visual Basic 6.0開(kāi)發(fā)圖書(shū)借閱管理系統(tǒng)中客戶端指紋采集和認(rèn)證應(yīng)用程序。
1.2.1 指紋登記模塊設(shè)計(jì)
首先使用SDK中提供的InitEngine函數(shù)初始化指紋儀。根據(jù)InitEngine函數(shù)返回值判讀指紋儀初始化是否成功。當(dāng)指紋初始化成功后,指紋儀進(jìn)入工作就緒狀態(tài),然后在應(yīng)用程序中調(diào)用BeginEnroll函數(shù),使指紋儀處于等待登記指紋的工作狀態(tài)。當(dāng)指紋儀感知到指紋圖像時(shí),就會(huì)自動(dòng)觸發(fā)On-ImageReceived事件。在該事件中,通過(guò)調(diào)用SaveBitmap函數(shù)將指紋圖像保存到磁盤(pán)上指定位置。在指紋登記模塊時(shí),每位讀者需要多次按壓同一手指,以融合同一手指的多個(gè)指紋圖像,獲得魯棒性的指紋特征,具體次數(shù)由EnrollCount屬性值確定。作者設(shè)置EnrollCount屬性值為3次,如果3次獲得的指紋圖像均有效,由識(shí)別系統(tǒng)綜合處理得到該讀者的指紋登記模板,達(dá)到設(shè)定次數(shù)后自動(dòng)觸發(fā)OnEnroll事件。在該事件中,調(diào)用GetTemplateString函數(shù)提取指紋圖像的特征碼序列。如果按壓手指的指紋模板質(zhì)量不合格,系統(tǒng)提示讀者重新按壓手指以獲取新的指紋信息。指紋儀控件采用基于事件驅(qū)動(dòng)的工作方式,指紋登記過(guò)程中事件觸發(fā)順序如圖2所示。
圖2 指紋登記流程
1.2.2 指紋驗(yàn)證模塊設(shè)計(jì)
圖3 指紋驗(yàn)證流程
當(dāng)讀者借閱或歸還圖書(shū)時(shí),需要對(duì)讀者進(jìn)行身份認(rèn)證。為提高指紋識(shí)別與驗(yàn)證的效率,首先使用CreateFPCacheDB函數(shù)創(chuàng)建指紋識(shí)別高速緩沖空間,并返回指向該高速緩沖區(qū)的句柄FpcHandle,然后通過(guò)AddRegTemplateStrToFPCacheDB函數(shù)將讀者指紋標(biāo)識(shí)編號(hào)和指紋特征序列信息添加到高速緩沖空間中以便后續(xù)的指紋匹配識(shí)別。接下來(lái),調(diào)用Begin-Capture方法,使指紋儀處于驗(yàn)證指紋工作狀態(tài)。當(dāng)指紋儀感知到有讀者按壓手指時(shí),與指紋登記模式類似,依次觸發(fā)OnImageReceived事件和OnFeatureInfo事件,分別獲取指紋圖像和提取輸入的指紋特征碼序列,并自動(dòng)觸發(fā)On_Capture事件。在On_Capture事件中,調(diào)用IdentificationInFPCacheDB函數(shù)進(jìn)行讀者指紋特征碼序列與紋識(shí)別高速緩沖區(qū)中的指紋記錄的比較。如果匹配成功,則根據(jù)返回的指紋標(biāo)識(shí)編號(hào)查找對(duì)應(yīng)的讀者信息,否則就輸出身份驗(yàn)證失敗信息,并拒絕對(duì)讀者信息進(jìn)行存取。指紋驗(yàn)證流程如圖3所示。
使用Visual Basci 6.0企業(yè)版中ADO(ActiveX Data Objects,ActiveX數(shù)據(jù)對(duì)象)數(shù)據(jù)庫(kù)應(yīng)用程序接口實(shí)現(xiàn)對(duì)SQL Server 2005數(shù)據(jù)庫(kù)的訪問(wèn)。在實(shí)現(xiàn)指紋登記和驗(yàn)證功能時(shí),將Biokey.ocx編程組件加載到控件面板,分別建立讀者信息管理窗體和圖書(shū)借閱管理窗體,在兩個(gè)窗體上放置指紋控件后,即可實(shí)現(xiàn)指紋識(shí)別控件的編程。
指紋登記模塊用于實(shí)現(xiàn)讀者基本信息(如讀者編號(hào)、類型編號(hào)、姓名、性別、密碼、所在院系等)的錄入、指紋圖像采集和指紋特征碼的提取,并將讀者基本信息和指紋信息保存到數(shù)據(jù)庫(kù)中的Reader表中。圖4是設(shè)計(jì)的基于指紋識(shí)別的讀者信息管理界面。
圖4 讀者指紋登記界面
根據(jù)圖4,在注冊(cè)讀者信息時(shí),由圖書(shū)管理人員首先錄入學(xué)生的基本信息,然后讀者通過(guò)指紋儀連續(xù)輸入3次有效的指紋圖像,由指紋特征提取算法自動(dòng)從3幅指紋圖像中綜合提取序列長(zhǎng)度為256字符的指紋特征碼。如果提示指紋登記成功,則顯示指紋特征碼,點(diǎn)擊保存即可。如果采集指紋圖像有一次不合格,則提示讀者重新輸入有效的指紋。實(shí)現(xiàn)指紋登記過(guò)程中所涉及的關(guān)鍵事件的代碼如下:
①在讀者管理窗口form_load事件中初始化指紋儀:
②在添加按鈕中,調(diào)用BeginEnroll方法,使指紋儀進(jìn)入等待登記登記指紋模式,并提示讀者輸入指紋:
④自動(dòng)觸發(fā)OnFeatureInfo事件,判斷指紋錄入次數(shù)是否完成且合格,如果滿足條件,進(jìn)入第⑤步驟,否則返回②重新采集指紋圖像,關(guān)鍵代碼如下:
⑤在OnRoll事件中判斷指紋錄入是否有效,如果有效,調(diào)用GetTemplateAsString方法提取指紋圖像特征碼并顯示在指紋特征碼文本框,否則提示重新輸入新的指紋圖像,關(guān)鍵代碼如下:
指紋認(rèn)證模塊用于在讀者借閱或歸還圖書(shū)時(shí),進(jìn)行讀者身份的驗(yàn)證。在驗(yàn)證指紋時(shí),由圖書(shū)管理員操作圖書(shū)借閱功能,指紋儀進(jìn)入指紋驗(yàn)證模式。當(dāng)讀者通過(guò)指紋儀輸入1次指紋時(shí),如果采集指紋圖像合格,由指紋特征提取算法從獲取的指紋圖像中提取序列長(zhǎng)度為256字符的特征碼,并與指紋高速緩沖區(qū)中的指紋特征庫(kù)進(jìn)行匹配,如果特征點(diǎn)匹配的相似度達(dá)到預(yù)設(shè)的閾值(筆者設(shè)置為12),則提示讀者身份認(rèn)證成功,否則,拒絕借閱操作。如圖5是設(shè)計(jì)的基于讀者指紋認(rèn)證的圖書(shū)借閱管理界面。
圖5 基于指紋認(rèn)證的圖書(shū)借閱界面
根據(jù)圖5,基于指紋認(rèn)證的圖書(shū)借閱模塊具體實(shí)現(xiàn)過(guò)程如下:
①在圖書(shū)借閱窗體的form_load事件中初始化指紋儀,使用CreateFPCacheDB創(chuàng)建指紋識(shí)別高速緩沖空間fpcHandle,并從Reader表中讀取指紋標(biāo)識(shí)碼和指紋特征碼,使用AddRegTemplateStrToFPCacheDB函數(shù)將指紋標(biāo)識(shí)碼和指紋特征碼添加到指紋緩沖空間fpcHandle中,以便借閱及對(duì)讀者身份進(jìn)行認(rèn)證,關(guān)鍵代碼如下:
②調(diào)用BeginCapture方法,進(jìn)入等待讀者輸入指紋狀態(tài)。
③如果有指紋輸入,自動(dòng)觸發(fā)OnImageReceived事件,顯示指紋圖像。
④在OnFeatureInfo事件中判斷錄入的指紋是否完成且合格。如果滿足條件,進(jìn)入第⑤步驟,否則返回②重新采集指紋圖像。
⑤在OnCapture事件中調(diào)用GetTemplateAsString方法提取指紋圖像特征碼,并調(diào)用指紋驗(yàn)證函數(shù)IdentificationFrom-StrInFPCacheDB,將提取的指紋驗(yàn)證模板字符串和指紋識(shí)別高速緩沖空間fpcHandle中所有登記模板進(jìn)行比對(duì),如果匹配成功,則返回值指紋標(biāo)識(shí)碼,否則返回-1,并提示讀者身份驗(yàn)證失敗,拒絕借還圖書(shū)操作。OnCapture事件中對(duì)讀者指紋認(rèn)證的核心代碼如下:
通過(guò)返回的指紋標(biāo)志碼,可以檢索對(duì)應(yīng)的讀者編號(hào),從而檢索和存取相應(yīng)讀者的圖書(shū)借閱信息。使用數(shù)字指紋識(shí)別認(rèn)證的方法,能有效防止讀者借用、盜用其他讀者身份進(jìn)行違規(guī)借閱行為,比傳統(tǒng)卡證的方式更加安全可靠。
與卡證方式的讀者身份認(rèn)證方式相比,基于數(shù)字指紋識(shí)別技術(shù)的圖書(shū)借閱管理方式具有方便、快捷、安全和可靠等諸多優(yōu)點(diǎn)。作者使用Visual Basic 6.0編程語(yǔ)言和SQL Server數(shù)據(jù)庫(kù),對(duì)中控U400B指紋采集儀進(jìn)行二次開(kāi)發(fā),設(shè)計(jì)了一個(gè)基于讀者指紋識(shí)別的圖書(shū)館圖書(shū)流通管理系統(tǒng),對(duì)提高圖書(shū)館管理水平和服務(wù)質(zhì)量,實(shí)現(xiàn)無(wú)證化管理具有重要的實(shí)際應(yīng)用價(jià)值。
參考文獻(xiàn):
[1] 范會(huì)全.淺談指紋識(shí)別系統(tǒng)在圖書(shū)館中的應(yīng)用[J].情報(bào)探索,2007(3):61-62.
[2] 彭敏.基于指紋識(shí)別的圖書(shū)館管理系統(tǒng)研究[J].雞西大學(xué)學(xué)報(bào),2014(5):157-158.
[3] 馮毅.指紋識(shí)別技術(shù)在高校圖書(shū)館中的應(yīng)用[J].長(zhǎng)春工業(yè)大學(xué)學(xué)報(bào):高教研究版,2013(1):21-22.
[4] 劉馨.指紋技術(shù)及其在讀者證件系統(tǒng)中的應(yīng)用[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2007(3):83-86.
[5] 陳立定,任志剛.基于VC++的指紋識(shí)別系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2011(7):60-63.
[6] 劉超群.基于Delphi的駕校考試指紋識(shí)別系統(tǒng)設(shè)計(jì)[J].電子世界,2013(10):141.
[7] 章通.高校課堂指紋考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].重慶:重慶大學(xué),2011.
[8] 南志紅,等.數(shù)據(jù)庫(kù)實(shí)驗(yàn)指導(dǎo)[M].北京:人民郵電出版社,2007.
[9] Biokey SDK4.0程序開(kāi)發(fā)手冊(cè)[EB/OL].[2014-10-20].http://wenku.baidu.com/view/38a3258071fe910ef12df8cb.html.