黃 樂,王 斌,王衛(wèi)亞
(長安大學 信息工程學院,陜西 西安 710064)
二維條碼PDF417是一種高密度、高信息含量的便攜式數(shù)據(jù)文件,是實現(xiàn)證件及卡片等大容量、高可靠性信息自動存儲、攜帶并可用機器自動識讀的理想手段。它可以將照片、指紋、掌紋、簽字、聲音、文字等凡可數(shù)字化的信息進行編碼。它作為一種新的信息存儲和傳遞技術,從誕生之初就受到了國際社會的廣泛關注。經(jīng)過幾年的努力,現(xiàn)已被廣泛地應用在國防、公共安全、交通運輸、工業(yè)、商業(yè)、金融、海關及政府管理等領域。PDF417最大的優(yōu)勢在于其龐大的數(shù)據(jù)容量和極強的糾錯能力,同時對印制要求不高,可用多種閱讀設備閱讀,另外,碼制已公開且形成國際標準,我國也已制定了PDF417碼的國標。此外,二維條碼還具有成本低、信息可隨載體移動、不依賴于數(shù)據(jù)庫和計算機網(wǎng)絡、保密防偽性強等優(yōu)點,再結(jié)合我國人口多、底子薄、計算機網(wǎng)絡投資資金難度較大、對證件的防偽措施要求較高等特點,可以預見,二維條碼PDF417在我國極有推廣價值。本文結(jié)合此情況對PDF417的編碼和解碼進行分析和研究,開發(fā)出一套二維條碼PDF417編碼和解碼系統(tǒng)。
PDF417條碼符號是一個多行結(jié)構(gòu)[1-2]。符號的頂部和底部為空白區(qū),上下空白區(qū)之間為多行結(jié)構(gòu)。每行數(shù)據(jù)符合字符數(shù)相同,行與行左右對齊直接銜接,其最小行數(shù)為3,最大行數(shù)為90,符號結(jié)構(gòu)圖如圖1所示[1]。
圖1 PDF417條碼符號結(jié)構(gòu)圖Fig.1 Structure diagram of PDF417 barcode symbol
每行構(gòu)成如下:(A)左空白區(qū);(B)起始符;(C)左行指示符號字符;(D)1~30個數(shù)據(jù)符號字符;(E)右行指示符號字符;(F)終止符;(G)右空白區(qū)。其中每一符號字符由4個條和4個空構(gòu)成,自左向右從條開始,每一個條或空包含1~6個模塊,在一個符號字符中,4個條和4個空的總模塊數(shù)為17,因此稱之為417碼。
PDF417有 3種數(shù)據(jù)壓縮模式[1]:文本壓縮模式(TC)、數(shù)字壓縮模式(NC)和字節(jié)壓縮模式(BC)。在一個條碼符號編碼中,可通過應用模式鎖定/轉(zhuǎn)移(Latch/Shift)碼字進而運用多種模式表示數(shù)據(jù)。
文本壓縮模式(TC)主要包括4個子模式[3]:大寫字母型子模式(Alpha)、小寫字母型子模式(Lower Case)、混合型子模式(Mixed)和標點型子模式(Punctuation)。子模式的設置是為了更有效地表示數(shù)據(jù),每種子模式選擇了文件中出現(xiàn)頻率較高的一組字符組成的字符集。在子模式中,每一個字符對應一個值 (0~29),這樣可用一個單獨的碼字表示一個字符對,表示字符對的碼字計算公式如下:碼字=30×H+L,其中:H、L分別表示字符對中的高位和低位字符值。
數(shù)字壓縮模式(NC)是指從基10至基900的數(shù)據(jù)壓縮的一種方法。它能把約3個數(shù)字位用一個碼字表示,一般當連續(xù)的數(shù)字位數(shù)大于13時用此種模式。在數(shù)字模式下,根據(jù)以下算法對數(shù)字位進行編碼:1)將數(shù)字序列從左向右每44位分為一組,最后一組包含的數(shù)字位可少于44個。2)對每一組數(shù)字:首先在數(shù)字序列前加一位有效數(shù)字1(即前導位),然后執(zhí)行基10至基900的轉(zhuǎn)換。例如:數(shù)字序列000213298174000的表示過程為:首先,對其進行分組。因其共有15位,故只有一組;其次,在其最左邊加1,將得到數(shù)字序列1000213298174000;最后將其轉(zhuǎn)移成基900的碼字序列,結(jié)果為:1,624,434,632,282,200。
字節(jié)壓縮模式(BC)是通過基256至基900的轉(zhuǎn)換,將字節(jié)序列轉(zhuǎn)換為碼字序列。對于字節(jié)壓縮模式,有兩個模式鎖定(901,924)。當所要表示的字節(jié)總數(shù)不是6的倍數(shù)時,用模式鎖定901;當所要表示的字節(jié)總數(shù)是6的倍數(shù)時,用模式鎖定924。在應用模式鎖定924的情況下,6個字節(jié)可通過基256至基900的轉(zhuǎn)換用5個碼字表示,從左到右進行轉(zhuǎn)換。例如:一個二位16進制的數(shù)據(jù)序列01H,02H,03H,04H,05H,06H (H代表16進制)可表示為一個碼字序列924,1,620,89,74,846。
對于一組給定的數(shù)據(jù)碼字,錯誤糾正碼字根據(jù)Reed-Solomon 錯 誤控制碼算法來計算[1,4-5]。
第一步:建立符號數(shù)據(jù)多項式。
符號多項式如下:
式中di是數(shù)據(jù)碼字。
第二步:建立糾正碼字的生成多項式。
k個錯誤糾正碼字的生成多項式如下:
式中 k為錯誤糾正碼字 ci(i=0...k-2,k-1)的個數(shù)。
第三步:錯誤糾正碼字ci的計算。
對一組給定的數(shù)據(jù)碼字和一選定的錯誤糾正等級,ci為符號數(shù)據(jù)多項 d(x)式乘以 xk,然后除以生成多項式 g(x),所得余式的各系數(shù)的補數(shù)。
本文采用VC++6.0作為軟件系統(tǒng)開發(fā)工具,搭建前臺人機界面,該界面主要分為3部分,分別是編碼區(qū)、解碼區(qū)和其他按鈕操作區(qū)。在編碼區(qū)主要操作有編碼文本輸入、糾錯等級和條碼列數(shù)的設置、條碼的生成及保存。在解碼區(qū)主要操作有選擇待解碼的條碼和對條碼進行解碼。在其他按鈕操作區(qū)主要實現(xiàn)條碼的打印和退出系統(tǒng)的功能。
由于二維條碼PDF417可將照片、聲音、文本等多種信息進行編碼,本文實現(xiàn)的是常用的文本信息編碼。計算機編碼就是指將相關文本信息轉(zhuǎn)換成可實現(xiàn)條碼繪制的碼字,同時再加入相關的附加信息?;玖鞒蹋豪镁幋a算法將文本信息轉(zhuǎn)換成PDF417碼字,然后通過查詢數(shù)據(jù)庫將碼字進一步轉(zhuǎn)換成相對應的條空相間(黑白相間)的符號字符,最后計算機繪制出這些黑白相間的條空,即得到本文實現(xiàn)的PDF417二維條碼圖像。具體的軟件實現(xiàn)流程如圖2所示[5]。
圖2 二維條碼PDF417編碼流程圖Fig.2 Flow chart of 2d barcode PDF417 encoding
理論上,解碼的過程是編碼的逆過程,通過解碼不但可以實現(xiàn)對條碼的識別,而且還可以進一步驗證編碼的正確性。首先計算機要獲取到待解碼的PDF417二維條碼,然后對該條碼進行全部掃描,并將掃描結(jié)果存在一個二維數(shù)組中,接下來將掃描到的條碼符號轉(zhuǎn)換成碼字,再將碼字按照不同的編碼規(guī)則轉(zhuǎn)化為可讀的字符、漢字等相關文本信息并在計算機屏幕上顯示出來[6]。本文通過對系統(tǒng)編碼實現(xiàn)的PDF417二維條碼進行解碼對比,解碼得到的文本信息和編碼時輸入的文本信息完全一致,也進一步驗證了編碼的準確性。
以原始條碼文本信息“長安大學直屬國家教育部,是教育部和交通運輸部、陜西省人民政府共建的國家211工程重點建設大學0123456789abcdefghPDF417”為例,利用該系統(tǒng)對其進行編碼和解碼,其中糾錯等級和條碼列數(shù)分別設置為1和5,實現(xiàn)界面如圖3所示,最終編碼生成的PDF417二維條碼如圖4所示,以bmp格式將其保存在指定的文件夾中。最后點擊打印編碼按鈕,選擇以Adobe PDF Converter類型打印編碼后的PDF417二維條碼,結(jié)果如圖5所示。
圖3 二維條碼PDF417編解碼軟件實現(xiàn)界面Fig.3 Software interface of 2d barcode PDF417 codec
圖4 二維條碼PDF417編碼實驗結(jié)果Fig.4 Experiment result of 2d barcode PDF417 encoding
圖5 二維條碼PDF417編碼打印測試結(jié)果Fig.5 Result of 2d barcode PDF417 print test
文中在分析和研究二維條碼PDF417的結(jié)構(gòu)和編解碼原理的基礎上,以VC++6.0為開發(fā)環(huán)境,開出一套簡易的二維條碼PDF417編解碼系統(tǒng),實現(xiàn)了對漢字、字母、數(shù)字等文本信息進行編碼,以及對該系統(tǒng)生成的PDF417二維條碼進行解碼。該系統(tǒng)編碼精確,速度快,方便靈活,同時還實現(xiàn)了對編碼后的PDF417二維條碼的解碼和打印。此外,該系統(tǒng)再配置上其它相關硬件控制設備,即可制成一套PDF417二維條碼打印和掃描系統(tǒng)。總之,二維條碼在我國有著廣闊的應用前景,PDF417二維條碼技術在我國的推廣應用也必將為我國信息產(chǎn)業(yè)的發(fā)展和現(xiàn)代化的經(jīng)濟建設帶來可觀的社會效益和經(jīng)濟效益。
[1]中華人民共和國國家標準GB/T17172-1997.四一七條碼[S].1997.
[2]謝金龍,武獻宇,楊立雄,等.PDF417二維條碼的設計與實現(xiàn)[J].物流工程與管理,2011,33(4):88-89.XIE Jin-long, WU Xian-yu, YANG Li-xiong, et al.Design and implementation of two-dimension barcode[J].Logistics Engineering and Management,2011,33(4):88-89.
[3]武莎莎.基于Delphi的PDF417條碼編碼系統(tǒng)[J].山西電子技術,2009(5):41-42.WU Sha-sha.PDF417 Barcode encoding system based on Delphi technology [J].Shanxi Electronic Technology,2009(5):41-42.
[4]趙博,黃進.二維條碼PDF417編碼原理及其軟件實現(xiàn)[J].包裝工程,2007,28(1):96-98.ZHAO Bo,HUANG Jin.Code theory of two dimension bar code PDF417 and its creating software[J].Packaging Engineer,2007,28(1):96-98.
[5]孫靜,陳偉.PDF417二維條碼的編碼技術及其在Visual Basic下的實現(xiàn) [J].西安石油大學學報:自然科學版,2005,20(1):77-80.SUN Jing,CHEN Wei.Coding technology of PDF417 two dimensional bar code and implementation in Visual Basic[J].Journal of Xi’an Shiyou University:Natural Science Edition,2005,20(1):77-80.
[6]李媛,李紅星,張益農(nóng).二維編解碼技術研究與應用[J].北京聯(lián)合大學學報:自然科學版,2007,21(4):10-14.LI Yuan, LI Hong-xing, ZHANG Yi-nong.Research and Application of Encoding and Decoding on two-dimension bar code [J].Journal of Beijing Union University:Natural Sciences,2007,21(4):10-14.