条形码/二维码技术在图书馆个性化服务中的应用与实现
李健1, 杨京峰2, 张成昱3
1.北京大学信息管理系 北京 100871
2.高等教育出版社数字技术中心 北京 100029
3.清华大学图书馆 北京 100084
摘要

针对国内图书馆中地理信息的缺失,介绍条形码/二维码在国内外的研究现状,利用Android等技术,设计并实现以图书导航服务为中心的图书馆个性化服务系统,重点介绍该系统的用户需求、设计思路与功能实现。通过对应用效果的评估,认为该系统可以极大地提升图书馆的服务效率和服务质量。

关键词: 条形码; 二维码; 图书馆个性化服务
Application and Implementation of Bar Code and Two-dimensional Bar Code in Library Personalized Services
Li Jian1, Yang Jingfeng2, Zhang Chengyu3
1.Department of Information Management, Peking University, Beijing 100871, China
2.Digital Technology Center, Higher Education Press, Beijing 100029, China
3.Tsinghua University Library, Beijing 100084, China
Abstract

Due to the lack of geographic information in national library,the paper introduces the research of bar code and two-dimensional bar code, using Android and other technology, designs and realizes library personalized services system which is based on book navigation service. It focuses on user needs,design thought and implementation of main functions. According to the assessment of the application, the system can greatly enhance the efficiency and quality of library services.

Keyword: Bar code; Two-dimensional bar code; Library personalized service
1 引 言

条形码技术在图书中已经得到了广泛应用,每一本书都带有一个条形码。由于受到条形码识别设备的限制,条形码的应用还仅仅停留在图书馆管理中,而面向读者的应用非常少。随着硬件设备的飞速发展,特别是装有Android、IOS系统的手机的大量普及,个人用户的手机也可以方便地识别条形码的内容。但是,相比于一维条形码,二维码可以容纳更多的信息,同样可以方便地被手机解码识别,这为图书馆实现更加优质的服务提供了可能。

本文基于条形码/二维码技术,在Android系统中,对图书馆个性化服务进行了一些探索,拓展了移动图书馆的服务内容,延伸了移动环境下的图书目录查询服务,实现了图书等资料的增值服务,整体上提升了图书馆的服务质量和水平。

2 研究现状

张晓玲等[ 1]认为条形码将会在图书情报的管理及图书馆的现代化中有越来越广泛的应用,这是条形码技术在图书馆中应用的较早论述。唐晓国[ 2]提到,以应用条形码技术,孝感师范专科学校图书馆实现了图书馆人员考勤与流通服务的条码化管理,充分体现了条形码技术快速、准确、方便的特点。随着技术的发展与需求的提高,二维码技术开始出现,形成了二维码与条形码共存的一个状态。张燕蕾[ 3]提到,把存储图书编目等信息的二维码粘贴在图书、期刊上,实现数据的脱机使用,保证图书馆自动化管理中的不间断服务,这是二维码技术在图书馆中应用的较早论述。周喆[ 4]使用二维码实现了图书信息的自动录入、借阅者的身份识别,以及从一维条码到二维码的图书借阅管理的无缝过渡。梁永鸿等[ 5]通过提取OPAC中图书的部分书目信息并转换成QR二维码图片,给出了将QR二维码应用到OPAC中的具体实现步骤。综上所述,国内的研究以探索性为主,偏向于图书借阅、员工考勤等图书馆中的常规服务,研究上有待进一步的深入,在应用领域上也有很大的拓展空间。

与国内相比,国外的研究与应用相对成熟一些,Pavlidis[ 6]指出,在美国,二维码已经在UPS、驾照、身份认证等方面开展了应用,并对二维码与OCR之间的协作运用做了论述。韩国的研究者对光线不好、条码破损、失焦等情况下PDF417条码(二维码的一种)的解码做了深入的研究[ 7]。圣何塞州立大学的研究者提出了二维码在无线领域的应用研究,包括为移动用户提供信息跟踪、无线广告与支付等,极大地改善了用户体验[ 8],其实,这已经属于物联网的应用研究范畴。Jeyaverasingam等[ 9]提出利用二维码技术把个人家庭中的书籍、CD等资料管理起来,建立一个方便、快捷的家庭图书馆的管理系统。东京大学图书馆通过二维码可以实现图书的催还、预约、续借以及临时闭馆、服务调整等实时信息的交流;在韩国,用户通过二维码可以查阅图书借阅、阅览室位置、座位剩余等信息;2004年,美国纽约公共图书馆的读者通过二维码登录图书馆网站后,即可下载、阅读电子书和预约借阅音像制品,图书馆还会根据读者的借阅历史提供新书推荐服务[ 10]。由此可见,二维码在国外的研究更为深入、应用更加广泛,而国内条形码与二维码共存的现状还可能要维持一段时间。

3 功能需求和系统设计
3.1 功能需求

在图书馆中,读者常常会遇到这样的困扰,即查询到图书的信息后还需要花很长时间来找到它,不仅如此,在一个诺大的图书馆中,读者也会遇到迷路的困惑,导致出现这些问题的原因是图书馆中地理信息服务的缺失,而基于条形码/二维码的图书馆个性化服务系统可以解决以上问题。本系统通过对条形码数据的解析实现图书识别,之后用户就可以对图书进行操作。综合传统图书馆所提供的服务,基于条形码/二维码的图书馆个性化服务主要包括图书查询、图书评价与讨论、图书位置导航、图书借阅、图书推荐等功能,如图1所示:

图1 系统功能图

系统服务的用户包括:在校学生、相关学科教师和科研人员等读者用户,图书馆馆员、系统管理员等管理用户。

3.2 系统设计

根据MVC的设计模式,整个系统分为4层:数据层、接口层、应用层和表现层,如图2所示:

通过对业务的分析,把数据、业务、逻辑、表现进行整合分类。在这种设计模式下,各个层相对清晰,而且针对不同的终端或者表现形式实现系统的时候,只需在表现层实现,底层的部分完全是通用的。同时,系统的扩展性也很好,各个层既独立又统一地有机联系在一起。

一个典型用户的流程如图3所示:

图3 典型用户流程图

用户针对条形码/二维码进行拍照,系统识别此照片。如果是条形码:可以通过元数据服务得到图书的元数据信息,同时可以通过OPAC系统进行借阅等相关服务;如果图书在OPAC中不存在,还可以利用分享评论服务进行推荐和分享;图书元数据中相关的GIS信息可以进行地图导航。如果是二维码:其信息可能是元数据信息、评论信息、GIS信息、书包信息等,通过不同的格式进行识别,调用相关的服务。

(1)数据层

数据层用来存储服务提供需要的数据,包括条形码数据、图书相关评论、推荐、借阅数据、用户身份数据、个性化数据等。其中除条形码数据和用户身份数据的部分内容外,其余的数据都是通过系统不断使用累计产生的有价值的数据。这些数据根据系统设计的数据字典和存储规范存储在数据库中,应用层可以通过接口层提供的接口对数据进行调用处理。

条形码数据可以通过三种方式获取:同图书馆编目数据同步、系统用户加工或者从其他条码数据库获取。系统用户数据来自于图书馆用户库或者学校教务系统数据库,系统支持SSO方式登录,也支持批量导入初始化后由读者激活使用。

(2)接口层

接口层针对用户需求进行归纳总结和优化处理,抽象出DC元数据接口、OPAC数据接口、评论数据接口、GIS数据接口、用户数据接口和书包接口。其中,DC元数据接口和OPAC数据接口对应条形码数据库;评论数据接口和GIS数据接口对应二维码数据库;用户数据接口和书包接口对应用户数据库。

(3)应用层

在接口层之上,针对用户,提取出四大应用:图书元数据服务,图书分享评论服务,图书导航服务和用户个人中心、书包服务。这四大应用都是基于条形码/二维码开发的新应用形式。系统采用开放的架构,对于其他应用,添加在系统应用层,作为一项服务为表现层提供支持。

(4)表现层

表现层目前通过两种方式实现:WAP方式,用浏览器显示;客户端方式。本文采用Android客户端机型开发。

3.3 功能实现

由于篇幅所限,重点介绍GIS图书位置导航应用和条形码/二维码的实现方法。

(1)GIS图书位置导航

图书的GIS位置导航是由图书馆的GIS信息和图书的架目信息合并组成的,通过GIS接口,以地图的方式显示图书的具体位置。

通过调用地图接口,叠加数据层中图书位置GIS数据和读者自身的位置信息,可以得到图书的所在位置,并且可以绘制出用户取书的路线图,代码如下:

MapView mapView=(MapView) findViewById(R.id.map_view); //实例化MapView对象

mapView.setBuiltInZoomControls(true); //显示放大缩小控制

List mapOverlays = mapView.getOverlays();

//得到地图的图层

Drawable drawable = this.getResources().getDrawable(R.drawable.icon); //初始化一个图标

CustomItemizedOverlay itemizedOverlay=new CustomItemizedOverlay(drawable, this);//利用这个图标实例化CustomItemizedOverlay类

GeoPoint point=new GeoPoint(latitudeE6, longitudeE6);

//根据经纬度实例化GeoPoint类

OverlayItem overlayitem=new OverlayItem(point, "您好", "我在书架上呢,快来吧。");//根据GeoPoint实例化一个文字说明

itemizedOverlay.addOverlay(overlayitem);

//添加在itemizedOverlay上

mapOverlays.add(itemizedOverlay);//添加在图层上

MapController mapController = mapView.getController();

//实例化地图控制类

mapController.animateTo(point);//动画显示到之前实例化的图书所在的经纬点

mapController.setZoom(6);//缩放比例设为6

(2)条形码/二维码的解析和生成

本文采用的二维码是QR Code,采用开源OR码生成库就可以很方便生成QR码。把“基于条形码/二维码的图书馆个性化服务系统探讨”字符串生成QR二维码的过程如下:

BufferedImage bi = new BufferedImage(150, 150,BufferedImage.TYPE_INT_RGB);//创建一个BufferImage 二维码图片

Qrcode x = new Qrcode();//实例化Qrcode类

x.setQrcodeErrorCorrect('M');//设置QrcodeErrorCorrect为M

x.setQrcodeEncodeMode('B');//设置QrcodeEncodeMode为B

x.setQrcodeVersion(4);//设置QrcodeVersion为4

String str = "基于条形码/二维码的图书馆个性化服务系统探讨";//要编码的字符串

byte[] d = str.getBytes();//把字符串转化为字节

Graphics2D g = bi.createGraphics();//实例化一个Graphics2D类

g.setBackground(Color.WHITE);//设置背景为白色

g.clearRect(x1 - 300, y1 - 300, 300, 300);

//画一个300*300的正方形

g.setColor(Color.BLACK);//设置画笔颜色黑色

if (d.length > 0 && d.length < 120) {

boolean[][] s = x.calQrcode(d);

for (int i = 0; i < s.length; i++) {

for (int j = 0; j < s.length; j++) {

if (s[j][i]) {

g.fillRect(j * 3 + x1 - 199, i * 3 + y1 - 199, 3, 3);

//根据QRcode的编码算法,图黑色正方形块

}

}

}

}

g.dispose();//释放

bi.flush();//刷新得到二维条码图像

对于QR二维码和条形码的解析,可以运用开源解析库Zxing完成,Zxing解析库提供多种语言的SDK,采用Java解析一个二维码的过程如下:

Reader reader = new QRCodeReader();//实例化一个QRcodeReader类

BufferedImage myImage =ImageIO.read(file);//创建BufferImage类

LuminanceSource source = new BufferedImageLuminanceSource(myImage); //构建LuminaceSource类

BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));//构建BinaryBitmap 类

Result result

Hashtable hints = new Hashtable(); //构建解析点HashTable,用来命中解析结果

hints.put(DecodeHintType.CHARACTER_SET, "GBK");

//设置文字编码为GBK

result = new MultiFormatReader().decode(bitmap, hints);

//得到解析结果

3.4 效果评估

采用上面的设计方法,实现了一个原型系统,如图4所示:

图4 系统界面图

本系统在清华大学图书馆试用中,正在跟进用户的反馈以持续改进用户体验。在使用中存在的问题主要有以下几点:

(1)位置导航体验需要逐渐优化

目前的位置导航服务还相对简单,如果用户要去某个目的地,通过查询可以直接显示路线或以消息方式告知读者与目的地之间的行走路线以及便捷通道,从而协助读者在图书馆中顺利到达目的地,但是,位置导航服务还不是很直观。用户体验还有待进一步的提升,未来的导航服务应该趋向于三维与虚拟现实技术的结合,但是这需要更高的软硬件要求。

(2)用户的认知度需要逐渐培养

虽然手机的普及率已经非常高,但是,基于手机的条形码/二维码的应用还远未普及到用户的日常生活中,它的替代性优势还未被用户认可。同时,用户使用习惯的改变也有一个过程,这需要对条形码/二维码的相关知识进行大力宣传,让用户了解到它们的使用方法、便捷优势,引导用户逐渐接受新技术的便利与快捷。

4 结 语

条形码和二维码提供了一种便利的方法,通过摄像头,用户可以轻松地将图书、图书馆和自身联系在一起,这些也是物联网的基础。通过这种联系,为图书馆实现更优质的服务提供了可能。随着硬件成本的下降,可以解析条形码/二维码的摄像头和程序都越来越大众化,基于条形码/二维码的相关图书服务将成为大势所趋。

参考文献
[1] 张晓玲, 张晓平, 匡平. 条形码技术在图书馆管理上的应用[J]. 图书馆, 1991(2): 63-65.
(Zhang Xiaoling, Zhang Xiaoping, Kuang Ping. The Application of Bar Code in the Library Management[J]. Library, 1991(2): 63-65. ) [本文引用:1]
[2] 唐晓国. 条形码技术及其在图书馆的应用[J]. 情报理论与实践, 2000, 23(5): 383-385.
(Tang Xiaoguo. Bar Code Technology and Its Application in the Library[J]. Information Studies: Theory & Application, 2000, 23(5): 383-385. ) [本文引用:1] [CJCR: 1.5]
[3] 张燕蕾. 二维码技术及其在数字图书馆中的应用探析[J]. 现代情报, 2007, 27(10): 94-95.
(Zhang Yanlei. Analysis on the Two-Dimensional Code and Its Application in the Digital Library[J]. Modern Information, 2007, 27(10): 94-95. ) [本文引用:1] [CJCR: 0.801]
[4] 周喆. 二维码在图书借还管理系统中的应用[J]. 常州工学院学报, 2010, 23(2): 53-55.
(Zhou Zhe. On the Application of Two-Dimensional Bar Code in Book Borrowing and Lending Management System[J]. Journal of Changzhou Institute of Technology, 2010, 23(2): 53-55. ) [本文引用:1] [CJCR: 0.3882]
[5] 梁永鸿, 苏宁. 手机二维码在图书馆OPAC中的应用与实现[J]. 无线互联科技, 2011(3): 58-59.
(Liang Yonghong, Su Ning. The Application and Implementation of Mobile Two-Dimensional Bar Code in Library OPAC[J]. Wireless Internet Technology, 2011(3): 58-59. ) [本文引用:1]
[6] Pavlidis T. A New Paper/Computer Interface: Two-Dimensional Symbologies[C]. In: Proceedings of the 15th International Conference on PatternRecognition. 2000: 145-151. [本文引用:1] [JCR: 2.632]
[7] Hahn H I, Joung J K. Implementation of Algorithm to Decode Two-Dimensional Barcode PDF-417 [C]. In: Proceedings of the 6th International Conference on Signal Processing. IEEE, 2002: 1791-1794. [本文引用:1]
[8] Gao J Z, Prakash L, Jagatesan R. Understand ing 2D-BarCode Technology and Applications in M-Commerce-Design and Implementation of A 2D Barcode Processing Solution[C]. In: Proceedings of the 31st Annual International Computer Software and ApplicationsConference(COMPSAC 2007). 2007: 49-56. [本文引用:1]
[9] Jeyaverasingam S, Yan Y H. A Mash Up Home Library Management System[C]. In: Proceedings of the 2008 IEEE Congress on Services 2008-Part I. Washington: IEEE Computer Society, 2008: 160-167. [本文引用:1]
[10] 孙晓瑜, 王荣宗. 国外手机二维码技术在图书馆中的应用及启示[J]. 图书馆学研究, 2011(6): 23-25.
(Sun Xiaoyu, Wang Rongzong. The Application and Inspiration of Foreign Mobile Two-Dimensional Bar Code Technology in Library[J]. Research on Library Science, 2011(6): 23-25. ) [本文引用:1]