Schritt-für-Schritt-Codes: PDF417 lesen / codieren

Magst du Codes? Nun, oder nicht lieben. In jedem Fall müssen Sie manchmal wissen, wie man sie richtig verwendet. Sie können den langen Weg gehen, wie ich es beim letzten Mal getan habe , aber wenn keine Zeit ist, ist es einfacher, die Anweisungen zu verwenden.


Lassen Sie uns also alles erledigen, was Sie zum Lesen und / oder Schreiben von PDF417 benötigen. Schließlich ist es nicht immer möglich, ein Smartphone mit einem Programm zum Lesen zu finden. Und fürs Protokoll - und noch mehr.


Achtung, unter dem Schnitt - 9 Bilder mit einer Gesamtgröße von 2,79 MB, 6 Tabellen und einigen Formeln.





Inhaltsverzeichnis






01. Geschichte von PDF417 und Nutzungsrecht


( Zurück | Inhaltsverzeichnis | Vorwärts )


PDF417 erfunden von Symbol Technologies Inc. 1991 und am 7. September 1993 wurde für ihn ein US-Patent unter der Nummer 5.243.655 erteilt (beispielsweise hier erhältlich ). Tatsächlich beschreibt das Patent nicht nur ein Codierungsverfahren, sondern ein umfassendes System zum Codieren und Decodieren von Daten ( "System zum Codieren und Decodieren von Daten in maschinenlesbarer grafischer Form" ). Darüber hinaus werden derzeit nicht alle Empfehlungen des Patents verwendet.


, PDF417 , .


: ISO/IEC 15438:2015, PDF417, — 198 CHF ( ). , . , , .





02.


( | | )


() PDF417 (. 1) — , . , ( ) . ().


, . PDF417 3 90 , 3 30 .




. 1. PDF417


17 ( ), 4 4 . 1 6 .


x(x0,,x7). 3 (), "", "". , t, ti=xi1+xi. .


PDF417 . , 0,3,6,, — 1,4,7,, — 2,5,8,. (. 2), .


xt:


C=(x0x2+x4x6)mod9,
C=(t1t2+t5t6)mod9,


mod9— 9.


, 3 , 9 , . : C=(nrmod3)3.


PDF417 929 ( 000 928).





03.


( | | )


(. 2):


  • , , (N);
  • N1, ;
  • Ne;
  • Nr.



. 2. PDF417


, , ( 900, ), d0,d1,.





04.


( | | )


, PDF417 000 928 . , 2 787 .


000 899 .


900 : 928 — (. 1). 900, 901, 902, 913 924, .



##
900(TC)
901- (BC)
902(NC)
903: 912
913-
914: 920
921
922PDF macro
923PDF macro
924-6
925ECI / GLI
926ECI / GLI
927ECI / GLI
928PDF macro

. 1. PDF417. ,


PDF macro PDF417 . , ( ) .


ECI / GLI — Extended Channel Interpretation / Global Label Identifier — , . , ( , GLI 0, ), .





04.a) (TC, Text Compaction Mode)


( | | )


PDF417 ( ). 4 :


  • Alpha ( );
  • Lower case;
  • Mixed;
  • Punctuation.


##Alpha
(ASCII)
Lower case
(ASCII)
Mixed
(ASCII)
Punctuation
(ASCII)
0A (65)a (97)0 (48); (59)
1B (66)b (98)1 (49)< (60)
2C (67)c (99)2 (50)> (62)
3D (68)d (100)3 (51)@ (64)
4E (69)e (101)4 (52)[ (91)
5F (70)f (102)5 (53)\ (92)
6G (71)g (103)6 (54)] (93)
7H (72)h (104)7 (55)_ (95)
8I (73)i (105)8 (56)` (96)
9J (74)j (106)9 (57)~ (126)
10K (75)k (107)& (38)! (33)
11L (76)l (108)CR (13)CR (13)
12M (77)m (109)HT (9)HT (9)
13N (78)n (110), (44), (44)
14O (79)o (111): (58): (58)
15P (80)p (112)# (35)LF (10)
16Q (81)q (113)— (45)— (45)
17R (82)r (114). (46). (46)
18S (83)s (115)$ (36)$ (36)
19T (84)t (116)/ (47)/ (47)
20U (85)u (117)+ (43)" (34)
21V (86)v (118)% (37)| (124)
22W (87)w (119)* (42)* (42)
23X (88)x (120)= (61)( (40)
24Y (89)y (121)^ (94)) (41)
25Z (90)z (122)pl? (63)
26SP (32)SP (32)SP (32){ (123)
27llasll} (125)
28mlmlal' (39)
29pspspsal

. 2. GLI 0


  • al, ll, ml pl — alpha, lower case, mixed punctuation (l = latch);
  • as ps — alpha punctuation (s = shift) .

900 2 :


V=30H+L,


V— 900, H— , L— . X1X2.


, , H-, L- 29.


shift- . latch- .





04.b) - (BC, Byte Compaction Mode)


( | | )


900. 256. :


  • 901 ( 6);
  • 924 ( ).

, 6 5 256 900. , 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, (. 3).




. 3. , -


:


924, 001, 620, 089, 074, 846.


6, 6 5 , — . , 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 :


901, 001, 620, 089, 074, 846, 007, 008, 009.


, - 913.





04.c) (NC, Numeric Compaction Mode)


( | | )


10 900. , 0 9. , 44 15 .


902. , 13 . , 3 ( , 2.93) , , (2 ).


900 1 , . 4. , 1 .




. 4. ,





05.


( | | )


. PDF417 2 . , , (. 3).




( )
02 (0)
14 (2)
28 (6)
316 (14)
432 (30)
564 (62)
6128 (126)
7256 (254)
8512 (510)

. 3. PDF417


:


  • , (erasures), " ";
  • , , (errors), " ".

:


e;
k;
s;
Ne=2s+1.


:


e+2kd2


2 , , , .


Error Correction Capacity, , . , , . , s=0, , :


e+2kd3.


2 , . 2 .


, s=3, 13 , 7 , , (9 2 ..).


- GF(929). .


(. 4).



-
0: 402
41: 1603
161: 3204
321: 8635

. 4.





06.


( | | )


( 03), PDF417.


, , . , , , , , (. 5).




. 5.





07.


( | | )


x-, 17- GitHub


( 02), PDF417 3 (0, 3 6) 929 . 17- , x-. , , , , . 5.



##036
0311111365111112521111155
1411111446111113331111163
2511111524111121611111246
3311112355111122421111254
4411112436111123231111262
5511112514111131511111345
6211113265111132321111353
7311113346111133131111361
8211114254111141411111444
9111115165111142221111452
10211115244111151311111543
11111116155111152161112114
12211121364111161211112155
13311121444111212521112163
14411121525111213361112213
15211122356111214111112254
16311122433111221621112262
17411122514111222461112312
18111123265111223211112353
19211123343111231521112361
20

. 5. 20 x-





08. 8-


( | | )


GLI 0


ASCII 0:127. 128:255 PC 437.



################
0NUL32SP64@96`128Ç160á192224α
1SOH33!65A97a129ü161í193225ß
2STX34"66B98b130é162ó194226Γ
3ETX35#67C99c131â163ú195227π
4EOT36$68D100d132ä164ñ196228Σ
5ENQ37%69E101e133à165Ñ197229σ
6ACK38&70F102f134å166ª198230µ
7BEL39'71G103g135ç167º199231τ
8BS40(72H104h136ê168¿200232Φ
9HT41)73I105i137ë169201233Θ
10LF42*74J106j138è170¬202234Ω
11VT43+75K107k139ï171½203235δ
12FF44,76L108l140î172¼204236
13CR45-77M109m141ì173¡205237φ
14SO46.78N110n142Ä174«206238ε
15SI47/79O111o143Å175»207239
16DLE48080P112p144É176208240
17DC149181Q113q145æ177209241±
18DC250282R114r146Æ178210242
19DC351383S115s147ô179211243
20DC452484T116t148ö180212244
21NAK53585U117u149ò181213245
22SYN54686V118v150û182214246÷
23ETB55787W119w151ù183215247
24CAN56888X120x152ÿ184216248°
25EM57989Y121y153Ö185217249
26SUB58:90Z122z154Ü186218250·
27ESC59;91[123{155¢187219251
28FS60<92\124|156£188220252
29GS61=93]125}157¥189221253²
30RS62>94^126~158190222254
31US63?95_127DEL159ƒ191223255NBSP

. 6. GLI 0, PDF417


GLI 1


ISO 8859-1 ().





09. PDF417,


( | | )


PDF417 .


, , PDF417 - -, x- 81111113 711311121 (18 ) .


, PDF417 (. 6). , - -.




. 6. 0 PDF417





10.


( | | )


. ( 0, 0). , 19 (. 7). , , ( , , 06). , 1 -, 18 - 8 , 27, .


. , .




. 7. ,





11. PDF417


( | | )


, 000 928 (. 8). , , .




. 8.


900 : 928. . 8, . , (TC, 04.a).





12.


( | | )


, , 2 :


V=30H+L


H30, L— 30.


:


(27)(07) (19)(19) (15)(18) (28)(14) (19)(19) (28)(07) (27)(00) (01)(17) (29)(17) (02)(14) (12)(29) (19)(15) (14)(18) (19)(28) (19)(05) (00)(00) (09)(06) (02)(29)


( . 2):


(ll)https(ml)://(al)H(ll)abr(ps).com(ps)/post(ml)/500962(ps)


(ll), (ml), (al) (ps) 04.a.


:


https://Habr.com/post/500962


, . 8 ( 05).





13.


( | | )


— . .


, . , 3 . , ( ).


, — x, t( 02). PDF417 , ( ..), , , — . , .


. , , ( ). .





14.


( | | )


, , .



1.  P -   
2. ,      (900)
3.  N -  ,   ,    P

    4.  N ≥ 13
        5.     (902)
        6.    
        7.  P
        8.    3

    9.  N < 13
        10.  T -    ,  
             .      
              (901, 902, 913, 924)    
              13 .

        11.  T ≥ 5
            12.     (900)
            13.  
            14.  P
            15.   3

        16. T < 5
            17.  B -    , 
                  P.     11
                 4.

            18. B == 1 &   - 
                19.      1  (913)
                20.   
                21.  P
                22.    3

            23. 
                24.     (901  924   
                     ,  04.b)
                25. 
                26.  P
                27.    3





15. ,


( | | )


, PDF417 , . , 3:1( , . 4). , 4:1.


, PDF417 " ", 2 .


:


H=NrY+2Q
W=(17Nc+69)X+2Q



H— ;
W— ;
Nr— ;
Nc— ;
Y— ();
X— ;
Q— ( 2X).





16. () PDF417


( | | )


PDF417 "" ( ), PDF417 (Truncated PDF417, . 9).


:


  • ( , 06);
  • - 1 .

34 15 :


W=(17Nc+35)X+2Q




. 9. PDF417 ( , )


, :


  • , ;
  • - .




17.


( | | )


PDF417






  • + (GitHub)




18.


( | | )


, PDF417. (, , ) , .


, step by step:



, , , ( PDF417).


, , - . , .


!




P.S. , , . "Ctrl / ⌘ + Enter", Ctrl / ⌘, . , . !


All Articles