Per alcuni metodi di pagamento, gli utenti compilano moduli cartacei con un ID di riferimento a 9 cifre. Gli ID numerici hanno il difetto che gli utenti possono commettere errori di trascrizione (cifre perse, cifre duplicate, cifre scambiate). È possibile rilevare banalmente quegli errori aggiungendo un checksum (ad esempio basato su modulo dello standard ISO 7064). Ma come puoi evitare quegli errori? L'unico modo in cui posso pensare al momento è di rendere i codici più brevi codificando l'ID numerico in un set di caratteri alfanumerici estesi. Ma poi si apre un'altra fonte di errori che è la somiglianza dei caratteri e gli errori OCR.
Le mie domande sono:
- C'è un set di caratteri abbastanza grande da creare una riduzione delle cifre, ma ha ancora bassi tassi di errore in OCR / scrittura umana? Siamo stati relativamente rigidi e abbiamo creato
ACDEFKLMNPRTWXYZ349
. - Fa la differenza se creiamo il checksum dopo o prima della codifica? Anche il checksum deve essere codificato, quindi probabilmente ha senso codificare dopo il checksum.
- Esiste già un'implementazione standard o ampiamente utilizzata?
Al momento il nostro piano è di utilizzare i seguenti passaggi:
- Crea un checksum base11 dall'ID numerico con MOD 70-2 ISO 7064
- Converti l'ID base10 e il checksum base11 in un "numero" base22 (base22 perché
ACDEFKLMNPRTWXYZ349
è lungo 22 caratteri). - Mappa i due "numeri" base22 (che usano
0-9
eA-L
come cifre) al nostro set di 22 caratteri.
C'è un modo migliore?