王紅芳 吳馮娣 湯 萍 張凱兵
(湖北工程學院圖書館,湖北 孝感 432000)
隨著信息技術的飛速發展以及圖書館信息化進程的日益加快,實現無證化管理是未來圖書館的發展趨勢。借閱服務作為圖書館的一項常規化服務,目前其服務質量和管理水平在圖書管理工作中占有極其重要的地位。在圖書流通服務中,目前國內大部分圖書館仍然采用借閱證或一卡通對讀者進行身份認證。然而,隨著“一切為了讀者,為了讀者的一切”服務理念的不斷深化,傳統的基于卡證的讀者身份認證方式已難以適應現代圖書館管理的應用需求。傳統的卡證管理方式存在易丟失、易損壞、易盜用等諸多弊端,這些都會給讀者和工作人員帶來很多不便。因此,建立一套方便有效的讀者身份認證模式,對改進圖書館管理工作,提高讀者滿意度具有非常重要的意義。
指紋是人體重要的生物鑒別特征之一,具有唯一性和穩定性。因此,使用指紋識別技術對讀者身份進行認證,具有傳統卡證方式不可比擬的優點[1~2]。一方面,通過在圖書管理系統中嵌入指紋識別功能,能克服計算機系統“認卡不認人”的弊端,安全可靠,可避免因圖書證借用、盜用或丟失給讀者帶來一定程度的經濟損失。另一方面,基于指紋識別的讀者身份認證模式有利于實現人性化的讀者管理,避免由于卡證損壞或丟失而影響讀者對圖書館的正常使用,從而有效提高圖書館的資源利用率和讀者服務的滿意度。
利用數字指紋識別技術對讀者進行管理,能極大地提高圖書館管理的效率和水平,已受到人們的廣泛關注。如馮毅等[3]提出了利用自動指紋識別技術進行讀者管理的構想。劉凡馨等[4]提出了使用指紋認證實現對讀者證件進行管理的方法。文獻[5]設計了一種基于Mini100指紋采集儀和Visual C++語言編程的面向對象紋識別算法,取得了很好的識別效果。針對駕校考試中考生的身份認證問題,文獻[6]設計了基于Dephi的指紋識別系統。文獻[7]采用C/S和B/S模式相結合的方式,設計一個高校課堂指紋考勤系統,以實現學生的考勤功能和遠程的考勤查詢功能,具有較好的應用效果。
鑒于指紋識別在身份認證方面的有效性和在圖書館讀者管理方面的潛在優勢,作者采用Visual Basic 6.0可視化編程工具和中控科技U.R.U4000B指紋采集儀,設計了一個基于指紋識別的讀者身份認證方法,圖書館后臺數據庫使用SQL Server 2005進行存儲。經測試運行表明,該系統運行穩定,識別率高,使用方便,能方便地嵌入到高校圖書館的門禁系統和借閱管理系統中使用。
本系統采用C/S模式設計,由讀者指紋登記模塊和讀者指紋身份認證模塊兩個關鍵部分組成。其中指紋登記部分主要用于讀者基本信息的登記、指紋圖像的采集和特征提取功能,并將讀者信息和指紋特征碼存儲到后臺數據庫中,便于身份認證時檢索比對。讀者身份認證用于完成指紋圖像的采集和特征提取,并與后臺數據庫中已注冊的讀者的指紋特征進行匹配識別,以便對合法的讀者進行借閱服務。基于指紋識別的借閱系統設計框圖如圖1所示。

圖1 指紋識別借閱系統
[8],筆者設計的指紋識別借閱系統數據庫中包括8個關系表,如表1所示。

表1 指紋識別借閱數據庫
為實現基于指紋識別的讀者身份認證,筆者對讀者信息表Reader進行重新設計,增加了讀者指紋標識碼字段Finger-Print_ID和指紋特征字段FingerPrint,Reader表的邏輯結構如表2所示。

表2 讀者信息表結構
使用U.R.U4000B指紋采集支持的SDK(Software Development Kit)軟件開發包進行二次開發[9]。首先,安裝由產品供應商提供的指紋儀驅動驅動程序。然后,將安裝目錄下的控件庫文件Biokey.ocx復制到Windows系統目錄system下。最后,使用c:windowssystem egsvr32.exe命令注冊Biokey.ocx控件。使用可視化開發工具Visual Basic 6.0開發圖書借閱管理系統中客戶端指紋采集和認證應用程序。
1.2.1 指紋登記模塊設計
首先使用SDK中提供的InitEngine函數初始化指紋儀。根據InitEngine函數返回值判讀指紋儀初始化是否成功。當指紋初始化成功后,指紋儀進入工作就緒狀態,然后在應用程序中調用BeginEnroll函數,使指紋儀處于等待登記指紋的工作狀態。當指紋儀感知到指紋圖像時,就會自動觸發On-ImageReceived事件。在該事件中,通過調用SaveBitmap函數將指紋圖像保存到磁盤上指定位置。在指紋登記模塊時,每位讀者需要多次按壓同一手指,以融合同一手指的多個指紋圖像,獲得魯棒性的指紋特征,具體次數由EnrollCount屬性值確定。作者設置EnrollCount屬性值為3次,如果3次獲得的指紋圖像均有效,由識別系統綜合處理得到該讀者的指紋登記模板,達到設定次數后自動觸發OnEnroll事件。在該事件中,調用GetTemplateString函數提取指紋圖像的特征碼序列。如果按壓手指的指紋模板質量不合格,系統提示讀者重新按壓手指以獲取新的指紋信息。指紋儀控件采用基于事件驅動的工作方式,指紋登記過程中事件觸發順序如圖2所示。

圖2 指紋登記流程
1.2.2 指紋驗證模塊設計

圖3 指紋驗證流程
當讀者借閱或歸還圖書時,需要對讀者進行身份認證。為提高指紋識別與驗證的效率,首先使用CreateFPCacheDB函數創建指紋識別高速緩沖空間,并返回指向該高速緩沖區的句柄FpcHandle,然后通過AddRegTemplateStrToFPCacheDB函數將讀者指紋標識編號和指紋特征序列信息添加到高速緩沖空間中以便后續的指紋匹配識別。接下來,調用Begin-Capture方法,使指紋儀處于驗證指紋工作狀態。當指紋儀感知到有讀者按壓手指時,與指紋登記模式類似,依次觸發OnImageReceived事件和OnFeatureInfo事件,分別獲取指紋圖像和提取輸入的指紋特征碼序列,并自動觸發On_Capture事件。在On_Capture事件中,調用IdentificationInFPCacheDB函數進行讀者指紋特征碼序列與紋識別高速緩沖區中的指紋記錄的比較。如果匹配成功,則根據返回的指紋標識編號查找對應的讀者信息,否則就輸出身份驗證失敗信息,并拒絕對讀者信息進行存取。指紋驗證流程如圖3所示。
使用Visual Basci 6.0企業版中ADO(ActiveX Data Objects,ActiveX數據對象)數據庫應用程序接口實現對SQL Server 2005數據庫的訪問。在實現指紋登記和驗證功能時,將Biokey.ocx編程組件加載到控件面板,分別建立讀者信息管理窗體和圖書借閱管理窗體,在兩個窗體上放置指紋控件后,即可實現指紋識別控件的編程。
指紋登記模塊用于實現讀者基本信息(如讀者編號、類型編號、姓名、性別、密碼、所在院系等)的錄入、指紋圖像采集和指紋特征碼的提取,并將讀者基本信息和指紋信息保存到數據庫中的Reader表中。圖4是設計的基于指紋識別的讀者信息管理界面。

圖4 讀者指紋登記界面
根據圖4,在注冊讀者信息時,由圖書管理人員首先錄入學生的基本信息,然后讀者通過指紋儀連續輸入3次有效的指紋圖像,由指紋特征提取算法自動從3幅指紋圖像中綜合提取序列長度為256字符的指紋特征碼。如果提示指紋登記成功,則顯示指紋特征碼,點擊保存即可。如果采集指紋圖像有一次不合格,則提示讀者重新輸入有效的指紋。實現指紋登記過程中所涉及的關鍵事件的代碼如下:
①在讀者管理窗口form_load事件中初始化指紋儀:


②在添加按鈕中,調用BeginEnroll方法,使指紋儀進入等待登記登記指紋模式,并提示讀者輸入指紋:


④自動觸發OnFeatureInfo事件,判斷指紋錄入次數是否完成且合格,如果滿足條件,進入第⑤步驟,否則返回②重新采集指紋圖像,關鍵代碼如下:

⑤在OnRoll事件中判斷指紋錄入是否有效,如果有效,調用GetTemplateAsString方法提取指紋圖像特征碼并顯示在指紋特征碼文本框,否則提示重新輸入新的指紋圖像,關鍵代碼如下:


指紋認證模塊用于在讀者借閱或歸還圖書時,進行讀者身份的驗證。在驗證指紋時,由圖書管理員操作圖書借閱功能,指紋儀進入指紋驗證模式。當讀者通過指紋儀輸入1次指紋時,如果采集指紋圖像合格,由指紋特征提取算法從獲取的指紋圖像中提取序列長度為256字符的特征碼,并與指紋高速緩沖區中的指紋特征庫進行匹配,如果特征點匹配的相似度達到預設的閾值(筆者設置為12),則提示讀者身份認證成功,否則,拒絕借閱操作。如圖5是設計的基于讀者指紋認證的圖書借閱管理界面。

圖5 基于指紋認證的圖書借閱界面
根據圖5,基于指紋認證的圖書借閱模塊具體實現過程如下:
①在圖書借閱窗體的form_load事件中初始化指紋儀,使用CreateFPCacheDB創建指紋識別高速緩沖空間fpcHandle,并從Reader表中讀取指紋標識碼和指紋特征碼,使用AddRegTemplateStrToFPCacheDB函數將指紋標識碼和指紋特征碼添加到指紋緩沖空間fpcHandle中,以便借閱及對讀者身份進行認證,關鍵代碼如下:


②調用BeginCapture方法,進入等待讀者輸入指紋狀態。
③如果有指紋輸入,自動觸發OnImageReceived事件,顯示指紋圖像。
④在OnFeatureInfo事件中判斷錄入的指紋是否完成且合格。如果滿足條件,進入第⑤步驟,否則返回②重新采集指紋圖像。
⑤在OnCapture事件中調用GetTemplateAsString方法提取指紋圖像特征碼,并調用指紋驗證函數IdentificationFrom-StrInFPCacheDB,將提取的指紋驗證模板字符串和指紋識別高速緩沖空間fpcHandle中所有登記模板進行比對,如果匹配成功,則返回值指紋標識碼,否則返回-1,并提示讀者身份驗證失敗,拒絕借還圖書操作。OnCapture事件中對讀者指紋認證的核心代碼如下:

通過返回的指紋標志碼,可以檢索對應的讀者編號,從而檢索和存取相應讀者的圖書借閱信息。使用數字指紋識別認證的方法,能有效防止讀者借用、盜用其他讀者身份進行違規借閱行為,比傳統卡證的方式更加安全可靠。
與卡證方式的讀者身份認證方式相比,基于數字指紋識別技術的圖書借閱管理方式具有方便、快捷、安全和可靠等諸多優點。作者使用Visual Basic 6.0編程語言和SQL Server數據庫,對中控U400B指紋采集儀進行二次開發,設計了一個基于讀者指紋識別的圖書館圖書流通管理系統,對提高圖書館管理水平和服務質量,實現無證化管理具有重要的實際應用價值。
參考文獻:
[1] 范會全.淺談指紋識別系統在圖書館中的應用[J].情報探索,2007(3):61-62.
[2] 彭敏.基于指紋識別的圖書館管理系統研究[J].雞西大學學報,2014(5):157-158.
[3] 馮毅.指紋識別技術在高校圖書館中的應用[J].長春工業大學學報:高教研究版,2013(1):21-22.
[4] 劉馨.指紋技術及其在讀者證件系統中的應用[J].現代圖書情報技術,2007(3):83-86.
[5] 陳立定,任志剛.基于VC++的指紋識別系統的設計與實現[J].自動化與儀表,2011(7):60-63.
[6] 劉超群.基于Delphi的駕校考試指紋識別系統設計[J].電子世界,2013(10):141.
[7] 章通.高校課堂指紋考勤系統的設計與實現[D].重慶:重慶大學,2011.
[8] 南志紅,等.數據庫實驗指導[M].北京:人民郵電出版社,2007.
[9] Biokey SDK4.0程序開發手冊[EB/OL].[2014-10-20].http://wenku.baidu.com/view/38a3258071fe910ef12df8cb.html.