基于指纹识别技术的图书馆读者身份认证方法∗
2015-10-23王红芳吴冯娣张凯兵
王红芳 吴冯娣 汤 萍 张凯兵
(湖北工程学院图书馆,湖北 孝感 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进行存储。经测试运行表明,该系统运行稳定,识别率高,使用方便,能方便地嵌入到高校图书馆的门禁系统和借阅管理系统中使用。
1 系统设计
本系统采用C/S模式设计,由读者指纹登记模块和读者指纹身份认证模块两个关键部分组成。其中指纹登记部分主要用于读者基本信息的登记、指纹图像的采集和特征提取功能,并将读者信息和指纹特征码存储到后台数据库中,便于身份认证时检索比对。读者身份认证用于完成指纹图像的采集和特征提取,并与后台数据库中已注册的读者的指纹特征进行匹配识别,以便对合法的读者进行借阅服务。基于指纹识别的借阅系统设计框图如图1所示。
图1 指纹识别借阅系统
1.1 数据库设计
[8],笔者设计的指纹识别借阅系统数据库中包括8个关系表,如表1所示。
表1 指纹识别借阅数据库
为实现基于指纹识别的读者身份认证,笔者对读者信息表Reader进行重新设计,增加了读者指纹标识码字段Finger-Print_ID和指纹特征字段FingerPrint,Reader表的逻辑结构如表2所示。
表2 读者信息表结构
1.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所示。
2 系统实现
使用Visual Basci 6.0企业版中ADO(ActiveX Data Objects,ActiveX数据对象)数据库应用程序接口实现对SQL Server 2005数据库的访问。在实现指纹登记和验证功能时,将Biokey.ocx编程组件加载到控件面板,分别建立读者信息管理窗体和图书借阅管理窗体,在两个窗体上放置指纹控件后,即可实现指纹识别控件的编程。
2.1 指纹登记模块的实现
指纹登记模块用于实现读者基本信息(如读者编号、类型编号、姓名、性别、密码、所在院系等)的录入、指纹图像采集和指纹特征码的提取,并将读者基本信息和指纹信息保存到数据库中的Reader表中。图4是设计的基于指纹识别的读者信息管理界面。
图4 读者指纹登记界面
根据图4,在注册读者信息时,由图书管理人员首先录入学生的基本信息,然后读者通过指纹仪连续输入3次有效的指纹图像,由指纹特征提取算法自动从3幅指纹图像中综合提取序列长度为256字符的指纹特征码。如果提示指纹登记成功,则显示指纹特征码,点击保存即可。如果采集指纹图像有一次不合格,则提示读者重新输入有效的指纹。实现指纹登记过程中所涉及的关键事件的代码如下:
①在读者管理窗口form_load事件中初始化指纹仪:
②在添加按钮中,调用BeginEnroll方法,使指纹仪进入等待登记登记指纹模式,并提示读者输入指纹:
④自动触发OnFeatureInfo事件,判断指纹录入次数是否完成且合格,如果满足条件,进入第⑤步骤,否则返回②重新采集指纹图像,关键代码如下:
⑤在OnRoll事件中判断指纹录入是否有效,如果有效,调用GetTemplateAsString方法提取指纹图像特征码并显示在指纹特征码文本框,否则提示重新输入新的指纹图像,关键代码如下:
2.2 指纹认证模块实现
指纹认证模块用于在读者借阅或归还图书时,进行读者身份的验证。在验证指纹时,由图书管理员操作图书借阅功能,指纹仪进入指纹验证模式。当读者通过指纹仪输入1次指纹时,如果采集指纹图像合格,由指纹特征提取算法从获取的指纹图像中提取序列长度为256字符的特征码,并与指纹高速缓冲区中的指纹特征库进行匹配,如果特征点匹配的相似度达到预设的阈值(笔者设置为12),则提示读者身份认证成功,否则,拒绝借阅操作。如图5是设计的基于读者指纹认证的图书借阅管理界面。
图5 基于指纹认证的图书借阅界面
根据图5,基于指纹认证的图书借阅模块具体实现过程如下:
①在图书借阅窗体的form_load事件中初始化指纹仪,使用CreateFPCacheDB创建指纹识别高速缓冲空间fpcHandle,并从Reader表中读取指纹标识码和指纹特征码,使用AddRegTemplateStrToFPCacheDB函数将指纹标识码和指纹特征码添加到指纹缓冲空间fpcHandle中,以便借阅及对读者身份进行认证,关键代码如下:
②调用BeginCapture方法,进入等待读者输入指纹状态。
③如果有指纹输入,自动触发OnImageReceived事件,显示指纹图像。
④在OnFeatureInfo事件中判断录入的指纹是否完成且合格。如果满足条件,进入第⑤步骤,否则返回②重新采集指纹图像。
⑤在OnCapture事件中调用GetTemplateAsString方法提取指纹图像特征码,并调用指纹验证函数IdentificationFrom-StrInFPCacheDB,将提取的指纹验证模板字符串和指纹识别高速缓冲空间fpcHandle中所有登记模板进行比对,如果匹配成功,则返回值指纹标识码,否则返回-1,并提示读者身份验证失败,拒绝借还图书操作。OnCapture事件中对读者指纹认证的核心代码如下:
通过返回的指纹标志码,可以检索对应的读者编号,从而检索和存取相应读者的图书借阅信息。使用数字指纹识别认证的方法,能有效防止读者借用、盗用其他读者身份进行违规借阅行为,比传统卡证的方式更加安全可靠。
3 结语
与卡证方式的读者身份认证方式相比,基于数字指纹识别技术的图书借阅管理方式具有方便、快捷、安全和可靠等诸多优点。作者使用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.