Il codice 39 , sviluppato nel 1974, è una delle simbologie o tipi più comunemente usati di codici a barre, sebbene sia il sistema UPC / EAN che viene spesso visto nelle vendite al dettaglio. I codici a barre del codice 39 possono codificare lettere maiuscole, numeri e alcuni simboli e sono banali per stampare dal software del computer utilizzando un font speciale. Ciò ha portato al loro ampio uso commerciale e industriale (ad es. Badge identificativi dell'azienda, tracciabilità delle risorse, automazione di fabbrica).
Crea il programma o la funzione più breve per leggere un codice a barre Code 39 in qualsiasi orientamento da un'immagine in scala di grigi 512x512 pixel; il codice a barre potrebbe non essere allineato orizzontalmente o verticalmente.
- Il programma deve accettare un formato di file immagine standard e produrre i dati codificati nel codice a barre come output standard o valore di ritorno (senza includere alcun carattere di avvio / arresto).
- Nessuna immagine contiene più di un codice a barre Codice 39 valido e nessun codice a barre codifica un carattere spazio (ASCII 32).
- Se nell'immagine non viene visualizzato alcun codice a barre Codice 39 valido, il programma deve generare un singolo punto interrogativo (
?).
Ho preparato un'implementazione di riferimento JavaScript e testato una suite di immagini in formato PNG, sia con codici a barre validi che senza. L'implementazione di riferimento, che non supera solo 3 dei 46 casi di test nei browser Web più recenti, ha lo scopo di mostrare un possibile algoritmo di decodifica, non conforme rigorosamente alle specifiche di cui sopra.
Un invio valido supera almeno l'80% di questi test (37/46) e non richiede più di un minuto per farlo per ogni immagine su una CPU ragionevolmente veloce (ad esempio quad-core a 2,6 GHz). La mia implementazione di riferimento supera il 93% dei test ed elabora ogni immagine entro 10 secondi (sul mio PC desktop con Google Chrome).
(Questa domanda è stata proposta su Meta il 28 maggio 2011.)