Cuando el cliente escanea el DNI con la cámara, el sistema lee el código de barras 2D (PDF417) del reverso y autocompleta nombre, apellido, número y fecha de nacimiento. Dos casos reales quedaban afuera y forzaban a cargar todo a mano. Esta mejora los resuelve.
Los DNI menores a 10.000.000 — mayormente personas de edad — vienen en el código
con una letra adelante (por ejemplo F9876543 o M1234567,
según la Disp. 902/2021). El parser exigía solo dígitos, así que rechazaba ese número y
mandaba al operador a tipear todo.
Se descarta la letra inicial antes de validar los dígitos. Un DNI normal de 8 cifras sin prefijo sigue funcionando igual que siempre.
La tarjeta celeste de esos años codifica los datos en otro orden y con más campos (16–17 en vez de 8–9) que la tarjeta actual. El parser asumía siempre el formato nuevo, así que de una tarjeta vieja sacaba el dato equivocado o nada.
Ahora detecta el formato por la cantidad de campos y usa el mapa correcto. El detalle que
lo hacía fallar: el formato viejo arranca con un campo vacío (un @ al
principio), y eso corría todos los índices en uno.
NUEVO (tarjeta actual):
tramite@APELLIDO@NOMBRE@sexo@DNI@ejemplar@FNAC@emision
VIEJO (2009–2012, arranca con @ vacío):
@DNI@ejemplar@1@APELLIDO@NOMBRE@nac@FNAC@sexo@emision@...
Esto es lo importante: los índices del formato viejo se ajustaron corriendo el parser sobre un corpus real de 100.000 códigos de DNI, no sobre ejemplos inventados. La primera versión daba 96,96% — el corpus destapó que estaba corrida en uno. Corregida, el resultado es:
| Concepto | Cantidad |
|---|---|
| Recuperadas por el fix de prefijo (DNI < 10M) | 8.440 |
| Recuperadas por el fix de formato viejo | ~2.685 |
| Rechazadas (scans corruptos o truncados) | 355 |