Tipi di codici a barre

PDF417: come funziona il codice impilato di carte d'imbarco e documenti, e come leggerlo

Il PDF417 è un codice 2D di tipo impilato: un rettangolo formato da più righe sovrapposte di codice lineare. Contiene fino a circa 1850 caratteri di testo, 2710 cifre o 1108 byte, con correzione degli errori regolabile da 0 a 8. Lo trovi su carte d'imbarco, documenti d'identità esteri ed etichette di trasporto. Per leggerlo serve un imager 2D.

Struttura

Il nome descrive la struttura: ogni "parola di codice" (codeword) è formata da 4 barre e 4 spazi per una larghezza totale di 17 moduli. Un simbolo PDF417 ha:

  • Pattern di start e stop a sinistra e a destra, uguali per tutte le righe: è il motivo per cui il PDF417 si riconosce dalle barre verticali continue ai lati.
  • Indicatori di riga a sinistra e a destra, che dicono al lettore numero di riga, numero di colonne e livello di correzione.
  • Da 1 a 30 colonne di dati e da 3 a 90 righe.

Siccome ogni riga dichiara la propria posizione, il lettore può ricostruire il simbolo anche leggendo le righe in ordine sparso: per questo alcuni lettori laser "raster" (a più linee) potevano leggerlo spazzando il codice dall'alto in basso.

Varianti da conoscere: PDF417 compatto (o troncato), senza indicatori di riga a destra per risparmiare spazio; MicroPDF417, più piccolo e con capacità ridotta; Macro PDF417, che divide dati lunghi su più simboli. Su molti lettori MicroPDF417 e Macro PDF417 sono opzioni separate, spesso disattivate di fabbrica.

Correzione degli errori e capacità

Il livello di correzione va da 0 (solo rilevamento) a 8 (massima ridondanza: 512 codeword di correzione). Più è alto, più il simbolo cresce a parità di dati. Lo standard suggerisce livelli minimi crescenti con la quantità di dati.

Capacità massime indicative del PDF417
Modalità di compattazioneCapacità massima
Numerica2710 cifre
Testocirca 1850 caratteri
Byte1108 byte

Sono valori teorici con correzione minima. Nella pratica i PDF417 su documenti e carte d'imbarco contengono da poche decine a qualche centinaio di caratteri.

Dove si trova

  • Carte d'imbarco: lo standard IATA BCBP ammette PDF417 (molto diffuso sulle carte stampate) e codici 2D come Aztec e QR sulle versioni mobili.
  • Documenti d'identità e patenti di diversi paesi, in particolare in Nord America.
  • Etichette di trasporto e documenti di spedizione di alcuni corrieri.
  • Applicazioni industriali dove serve molto testo su un'etichetta stretta e lunga.

Per biglietti e controllo accessi vedi anche eventi e biglietti.

Quali lettori lo leggono

Compatibilità PDF417 per tipo di lettore
LettorePDF417Note
Imager 2DSìDi solito abilitato di fabbrica
Laser raster dedicatoSì, su modelli specificiTecnologia ormai superata
Laser a linea singolaNoLegge una riga alla volta senza ricostruire il simbolo
Imager lineare (CCD)NoAcquisisce una sola riga
SmartphoneDipende dall'appNon tutte le app lo supportano

Un PDF417 molto largo può non entrare nel campo visivo del lettore da vicino: allontanalo finché l'intero simbolo, comprese le barre di start e stop, è inquadrato. Le righe basse (simboli schiacciati in altezza per risparmiare spazio) sono un'altra causa frequente di mancata lettura. Il confronto tra tecnologie è in laser, CCD o imager 2D.

Cosa riceve il PC

Con l'identificatore AIM attivo il PDF417 è preceduto da un codice della famiglia ]L, spesso ]L2: il modificatore dipende dal modello e dalle opzioni, verificalo sul manuale. La cifra di controllo non esiste in senso classico: la correzione Reed-Solomon è interna e non viene trasmessa.

Il punto critico è il contenuto. I PDF417 su documenti contengono spesso caratteri di controllo come separatori di campo: a capo (LF, ASCII 10), CR (ASCII 13), RS (ASCII 30) o GS (ASCII 29). In emulazione tastiera questi caratteri diventano tasti Invio o combinazioni Ctrl che l'applicazione può interpretare come comandi:

Contenuto (schematico):   CAMPO1<LF>CAMPO2<CR>CAMPO3<RS>
Emulazione tastiera:      CAMPO1 [Invio] CAMPO2 [Invio] CAMPO3 [carattere perso]
Porta COM virtuale:       tutti i byte, inclusi 0A, 0D e 1E

Se devi elaborare PDF417 con dati strutturati, una porta COM virtuale o un'integrazione via SDK è molto più affidabile dell'emulazione tastiera. Vedi USB HID o porta COM virtuale e la tabella dei caratteri di controllo ASCII. Per vedere quali caratteri invisibili arrivano usa il test del lettore.

Caso tipico: al check-in di un evento il lettore 2D legge la carta d'imbarco o il biglietto in PDF417 in un campo di ricerca del browser. A metà lettura la pagina invia il modulo: il primo a capo contenuto nel codice è diventato un Invio. Soluzione: un campo multiriga, la rimozione degli a capo tramite formattazione dei dati sul lettore, oppure un'integrazione che non passi per la tastiera.

Errori comuni

  • Usare PDF417 per pochi dati: un Data Matrix o un QR Code occupano meno spazio e si leggono più facilmente.
  • Livello di correzione 0 o 1 per simboli stampati: troppo fragile. Usa almeno i livelli raccomandati dallo standard.
  • Comprare un lettore CCD "perché legge anche dagli schermi" per leggere carte d'imbarco: legge i codici lineari, non il PDF417.

Domande frequenti

Il PDF417 è un codice 2D?

Sì, è un 2D di tipo impilato (stacked), diverso dai codici a matrice come QR e Data Matrix ma comunque leggibile solo con imager 2D nella pratica attuale.

Perché si chiama 417?

Perché ogni codeword è formata da 4 barre e 4 spazi in 17 moduli. PDF sta per Portable Data File, non ha a che fare con il formato dei documenti Adobe.

Il mio lettore 2D non legge un MicroPDF417: è normale?

Spesso sì: MicroPDF417 è un'opzione separata e frequentemente disattivata di fabbrica. Attivala dal manuale o dal software di configurazione.

Fonti e riferimenti

  • ISO/IEC 15438, specifica della simbologia PDF417; ISO/IEC 24728 (MicroPDF417), ISO
  • ISO/IEC 15415, qualità di stampa dei simboli 2D, ISO
  • Product Reference Guide dei lettori 2D Honeywell, Zebra e Datalogic: opzioni PDF417, MicroPDF417, Macro PDF417

Altro in Tipi di codici a barre

Tutta la sezione Tipi di codici a barre