Citește QR code

Articolul descrie caracteristicile de bază ale codurilor QR și metode de decodificare de informații fără utilizarea calculatoarelor.

Soluția de lectură în mod direct problema de informații cu QR-imagini prin exemplul celor două coduri.

Pentru a înțelege cum de a extrage datele din codul, aveți nevoie pentru a înțelege algoritmul. Există mai multe standarde în familia de coduri QR cu principiile lor de bază pot fi găsite în caietul de sarcini. Pe scurt explica: datele care urmează să fie codificate sunt împărțite în blocuri în funcție de modul de codificare. Prin rupt în blocuri în funcție antet adăugat în modul și numărul de blocuri indicând. Există, de asemenea, moduri care utilizează structura mai complexă a posta informații. Aceste moduri nu vor fi luate în considerare, având în vedere faptul că extrage informații din ele manual este impracticabilă. Cu toate acestea, pe baza principiilor descrise mai jos, este posibil să se adapteze și la aceste regimuri.

În cazul unor date incorecte de citire QR aplică coduri speciale care pot corecta defectele de citire. Această așa-numitele coduri Reed-Solomon. Principiul codurilor de calcul, precum și corectarea erorilor în blocuri de informații nu vor fi luate în considerare, acesta este un subiect pentru un alt articol. Eroare la corectarea codurilor Reed-Solomon (RS) sunt înregistrate după toate datele de informații. Acest lucru simplifică foarte mult sarcina de a citi informațiile direct: puteți citi pur și simplu datele fără a atinge codul. După cum arată practica, de obicei, cea mai mare parte a matricei QR ia corective RS-coduri.

Conform standardului, datele din RS-codificate înainte de a fi stocate în imagine „premeshivayutsya“. În acest scop, folosiți măști speciale. Există 8 algoritmi, printre care este selectat cel mai bun. Criteriile de selecție se bazează pe un sistem de amenzi, care pot fi citite, de asemenea, în caietul de sarcini.

Date „mixt“ este scris într-o anumită secvență pe imaginea șablon, care adaugă informații tehnice la dispozitivele de decodare. Pe baza acestui algoritm, este posibil să se aloce circuitul de recuperare de date a codului QR:

Aici sunt subliniate în elemente de marcare verzi care trebuie să fie puse în aplicare cu citirea directă a codului. Elementele rămase pot fi omise, având în vedere faptul că lectura face un om.

Privind la poze, puteți vedea mai multe regiuni distincte. Aceste zone sunt utilizate pentru detectarea codului QR. Aceste date sunt de interes în ceea ce privește informațiile înregistrate, dar au nevoie să radieze sau amintesc doar locația lor, astfel încât acestea să nu interfereze. Tot ceea ce câmp de cod altceva desfășoară deja informații utile. Acesta poate fi împărțit în două părți: informațiile și datele de sistem. Există, de asemenea, informații despre versiune a codului. Versiunea codului depinde de cantitatea maximă de date care pot fi scrise în cod. Când upgrade - a adăugat blocuri speciale, cum ar fi aici:

Ele pot fi folosite pentru a naviga și de a înțelege ce versiune de QR în fața ta. Noile versiuni ale codurilor sunt, de obicei, de asemenea, nu este recomandat să citiți manualul.

Plasarea informațiilor de sistem este prezentat mai jos:

Informații sistem este duplicat, care poate reduce în mod semnificativ riscul de erori în codul de detectare și de lectură. System Information - Aceste 15 biți de date, dintre care primele 5 - este o informație utilă, iar restul de 10 rămase - a (15,5) Codul CCB, care permite corectarea erorilor din datele de sistem. Clasa codurilor CCB si includ codurile RS. Rețineți că în figură, două benzi de 15 biți nu se suprapun.

Etapa 1. Citiți 5 biți de informații de sistem

După cum sa menționat deja, este de interes, doar primii 5 biți. 2 biți din care indică nivelul de corecție a erorilor, iar cei 3 biți rămași indicați care masca disponibilă 8 este aplicată datelor. În aceste coduri QR, informații de sistem include:

Pasul 2: Masca pentru informații despre sistem

Pe lângă informațiile de sistem schemele deja cusute sonore plus, se utilizează masca statică, care se aplică la orice informație de sistem. Ea are forma: 101010000010010. Deoarece interesul este doar primii 5 biți, masca poate fi redusă, și ușor de reținut: 10101 (10-101). După aplicarea operațiunii „XOR» (xor) obține informații.

niveluri posibile de corectare a erorilor:

L 01
M 00
11 Q
H 10

000 (i + j) mod 2 = 0
001 i Mod 2 = 0
010 j mod 3 = 0
011 (i + j) mod 3 = 0
100 ((i div 2) + (j div 3)) mod 2 = 0
101 (i j) mod 2 + (i j) mod 3 = 0
110 ((i j) mod 2 + (i j) mod 3) mod 2 = 0
111 ((i + j) mod 2 + (i j) mod 3) mod 2 = 0

Pasul 3: Citiți antetul de date

Pentru a înțelege ce date va trebui să se ocupe, aveți nevoie pentru a citi antetul original, 4-biți, care conține informații despre funcționarea. Specificul datelor citite din imagine:

O listă de moduri posibile:

ECI 0111
numeric 0001
alfanumerică 0,010
8 biți (octet) 0100
Kanji 1000
Structurat plus 0,011
FNC1 0101 (poziția 1)
1001 (locul 2)

Pasul 4. Aplicați o mască pentru titlul

După extragerea 4 biți modul descrie, este necesar să se aplice masca.
În acest caz, cele două coduri sunt utilizate pentru diferite măști. Masca este definită prin expresia dată în tabelul de mai sus. Dacă această expresie este redusă la TRUE (adevărat) pentru un pic cu coordonatele (i, j), bitul este inversat, altfel rămâne neschimbat. Originea se află în colțul din stânga sus (0,0). Privind la expresia, puteți vedea modele în ele. Pentru aceste coduri QR, masca va arata astfel:

Pasul 5. Citire date

puteți începe citirea informațiilor de la primirea modului de date. Este necesar să se prevadă că cele mai interesante pentru a citi datele numerice și alfanumerice, deoarece acestea pot fi interpretate cu ușurință. Dar, de asemenea, nu-ți fie frică de 8-biți. Acesta poate fi, de asemenea, ușor de interpretat informații. De exemplu, multe generatoare on-line cod QR pentru text în acest mod, folosind ASCII. Un alt motiv pentru modul de ce ar trebui să citiți inițial este faptul că numărul de pachete de date depinde de ea. Ceea ce, de asemenea, depinde de versiune a codului. Pentru versiunile primul bloc la lungimi de-al nouălea pentru moduri mai ușor de citit:

Numerice 10 biți / 4 biți
Alfanumerică 9 biți
8 biți (octet) 8 biți

Prima unitate după indicatorul modului - numărul de caractere. Pentru modul numeric număr este codificat în următorii 10 biți, iar modul de 8 biți la 8 biți (scuze pentru tautologie).

Figura arată că în codul QR din stânga, așa cum sa menționat mai sus, a înregistrat figura 5. Este evident din numărul de caractere și un pointer urmat după 4 biți. În modul numeric, împreună cu blocurile 10 biți folosind blocuri de 4 biți pentru a economisi spațiu, în cazul în care un volum de 10 biți nu este necesară. Codul de drept este criptat 4 caractere. În acest moment, nimeni nu știe ce este criptat în ea. Prin urmare, este necesar să se procedeze pentru a citi coloana următoare pentru a extrage tot blocul 4 date.

Figura prezintă toate 4 pachet sunt codurile ASCII de litere latine care formează cuvântul «Habr»