二维码 PDF417
PDF417二維條碼
每一個PDF417碼是由3~90橫列堆疊而成,而為了掃瞄方便,其四周皆有靜空區,靜空區分為水平靜空區與垂直靜空區,至少應為0.020寸
其中每一層都包括下列五個部份:
起始碼。
左標區:在起始碼後面,為一指示符號字元。
資料區:可容納1~30個資料字元。
右標區:在資料區的後面,為一指示符號字元。
結束碼:在橫列之最右邊。
???除了起始碼和結束碼外,左標區、資料區和右標區的組成字元皆可稱為字碼(Codeword),每一個字碼由17個模組(Modules)所構成,每一個字碼又可分成4線條(或黑線)及4空白(或白線),每個線條至多不能超過6個模組寬。每個417碼因資料大小不同,其行數及每行的資料模組數與字碼數都可以從1至30不等。字碼的組成如圖所示。
PDF417二維條碼的尺寸
??因為符號的組合較有彈性,每一個PDF417二維條碼可因應不同的實體設備印成不同的長寬比例與密度,以適應印刷條件及掃瞄條件的要求。其中每個模組寬X是PDF417碼中最重要的尺寸之一,X值的最小限制為0.0075英寸(約0.191mm),在同一個條碼符號中,X的值是固定不變的。
PDF417的最小高度與長度可由下列算式算出:
W=(17C+69)X+2Q
H= R×Y+2Q
其中:
W=?條碼寬度,H=條碼高度,X=條碼模組寬,Y=層數
C=每層符號字元的總數(含左右標區),R=層高,Q=靜空區大小
編碼原理
計算機編碼過程就是將可讀信息轉換成用于繪制條碼的碼字,然后加上必要的附加信息。其流程為:運用編碼算法將有用信息轉換成PDF417碼字,再通過數據庫查詢把碼字轉換成對應的條空相間的符號字符,最后在計算機上將那些層層相疊的條空繪出,即二維條形碼圖像。
| 符號字符簇及計算 每行只使用同一簇中的符號字符。同一簇每三行重復一次。第一行使用第0簇的符號字符,第二行使用第3簇的符號字符,第三行使用第6簇的符號字符,第四行又重復使用第一行的內容,余此類推。行號由上至下遞增,最上一行為第一行。 對于一個特定的符號字符,其簇號由下式確定:簇號=(b1-b2+b3-b4+9)mod9例如對圖中的符號字符,其簇號=(5-1+1-2+9)mod9=3
對于每一個特定的行使用的符號字符的簇號由下式確定:簇號=[(行號-1)mod3]×3 |
| 左右行指示符號的值確定
|
二維碼PDF417 的編碼
PDF417的編碼分為數據碼字編碼、錯誤糾正碼字編碼、前后行指示符編碼3個部分。
有3種數據壓縮模式:文本壓縮模式(TC)、字節壓縮模式(BC)、數字壓縮模式(NC)。
通過應用模式鎖定和轉移碼字,可用三種壓縮模式中的一種來編碼,對三個符號簇中的任何一個序列,每個符號都賦予0~928中的一個值,表示如下:
| 值 | 用途 |
| 0~899 | 目前的壓縮方式和GLI解釋的編碼數據 |
| 900 | 鎖住TC模式 |
| 901 | 鎖住BC模式(編碼的字節數不是6的倍數) |
| 902 | 鎖住NC模式 |
| 913 | 把下一個碼字切入BC模式 |
| 922,923,928 | 用于MacroPDF 417 |
| 921 | 讀出設備初始化 |
| 903~912和914~920 | 預留將來用 |
模式鎖定碼字是用于由一種模式轉換到另一種模式時,它在下次模式更換之前一直有效。
模式轉移只對轉換后的第一個碼字有效。
PDF4170 簇
1 文本壓縮模式
在文本壓縮模式中有四種子模式即大寫字母型模式;小寫字母型模式;混合型模式;標點型模式。這四種子模式中定義了30個字符值為0~29。兩個文本字符可編碼成一個417字符,每個417符號值等于[(30×H)+L],其中H是第一個文本字符,L是第二個文本字符。
例如字符串“Bc:401”可以編碼為字符序列B,ll,c,:,ml,4,0,1
查表找出對應值(1,27,2,28,14,4,0,1)
2個一組分為(1,27),(2,28),(14,4),(0,1)
符號字符的字碼為(1*30+27),(2*30+28),(14*30+4),(0*30+1)
(57),(88),(424),(1)
然后用符號字符表示
2 字節壓縮模式
利用字節壓縮模式可以把一系列的字節壓縮成417的碼字。這里主要利用了基數256到基數900的轉換。如果壓縮的字節數是6的倍數,則根據模式鎖定在924來處理編碼數據,按照從左到右的順序,通過基數256到基數900的轉換,6個字節被編譯成5個碼字。如果壓縮的字節數不是6的倍數,則碼字前導字節是901,對于被6整除多剩余的字節,每個字節對應一個碼字,然后逐字節用碼字表示。
如6個字節A1,A2,A3,A4,A5,A6轉換為5個碼字S1,S2,S3,S4,S5
A1 *256^5 + A2 * 256^4 + A3 * 256^3 + A4 * 256^2 + A5 * 256^1 + A6 *256^0 =
S1 *900^4 + S2 * 900^3 + S3 * 900^2 + S4 * 900^1 + S5 * 900^0
A1,A2,A3,A4,A5,A6, S1,S2,S3,S4,S5全部以10進制帶入。
123456
1 *256^5 + 2 * 256^4 + 3 * 256^3 + 4 * 256^2 + 5 * 256^1 + 6 * 256^0 =
1* 900^4 + 620* 900^3 + 89* 900^2 + 74* 900^1 + 864* 900^0
查表確定符號字符
3 數字壓縮模式
利用基數10至基數900的轉換,數字壓縮模式能夠把3個十進制的數壓縮成一個417的字符,十位數字序列用下面的代數編碼:
1.將數字分成44位為一組,最后一組可以小于44位;
2.對每組,在前面數字加入“1”,然后進行10至900的基數轉換。
例:“1000213298174002”,由于是15位,小于44位,只能成為一組,在前面導入1,實行10至900的轉換。
1000213298174002=1×9005+624×9004+434×9003+632×9002+282×900+202,所以417條碼的編碼序列是(1,624,434,634,282,202)
查表確定符號字符
417條碼符號的型號是矩形,當碼字的總數不能正好填充一個矩形時,用碼字900作為虛擬碼字填充,必須放在錯誤糾正碼字前。
PDF417二維條碼的錯誤糾正能力??
PDF417二維條碼的一個重要特性是其自動糾正錯誤的能力較高,不過PDF417的錯誤糾正能力與每個條碼可存放的資料量有關,PDF417碼將錯誤復原分為9個等級,其值從0到8,級數愈高,錯誤糾正能力愈強,但可存放資料量就愈少,一般建議編入至少10%的檢查字碼。資料存放量與錯誤糾正等級的關系如表1所示。表2則建議不同的字數所適用的錯誤糾正等級。
最大儲存量(錯誤糾正等級為0)為每個符號表示1850個大小寫字母或2710個數字或1108個字節
表1可存放資料量與錯誤糾正等級對照表
| 錯誤糾正等級 | 糾正碼數 | 可存資料量(位元) |
| 自動設定 | 64 | 1024 |
| 0 | 2 | 1108 |
| 1 | 4 | 1106 |
| 2 | 8 | 1101 |
| 3 | 16 | 1092 |
| 4 | 32 | 1072 |
| 5 | 64 | 1024 |
| 6 | 128 | 957 |
| 7 | 256 | 804 |
| 8 | 512 | 496 |
表2PDF417的建議錯誤糾正等級
| 資料字碼數 | 錯誤糾正等級 |
| 1~40 | 2 |
| 40~160 | 3 |
| 161~320 | 4 |
| 321~863 | 5 |
總結
以上是生活随笔為你收集整理的二维码 PDF417的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongo的php查询,使用PHP进行简
- 下一篇: 深度学习之卷积神经网络 AlexNet