-
-
Save foag1996/1e4a253c61d29a8bbccad83fe0ef27cd to your computer and use it in GitHub Desktop.
Función para extraer los datos del codigo de barras PDF417 de una cedula colombiana usando javascript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import moment from 'moment'; | |
import { capitalize } from './helpers'; | |
// Data comes directly from react-native-camera onGoogleVisionBarcodesDetected method | |
export function extractColDocumentData(data) { | |
const dataArray = data.barcodes[0].data.replace(/[^A-Za-z0-9+]+/g, ' ').split(' '); | |
let indexMod = 0; | |
let idNumber; | |
let lastName1; | |
// Is old document | |
if (/[A-Z]/g.test(dataArray[3])) { | |
indexMod = - 1; | |
const idString = dataArray[3].replace(/[A-Z]/g, ''); | |
idNumber = idString.substring(10, idString.length); | |
lastName1 = capitalize(dataArray[3].replace(/[0-9]/g, '')); | |
} else { | |
idNumber = dataArray[4].replace(/[A-Z]/g, ''); | |
lastName1 = capitalize(dataArray[4].replace(/[0-9]/g, '')); | |
} | |
const lastName2 = capitalize(dataArray[5 + indexMod].replace(/\W/g, '')); | |
const firstName1 = capitalize(dataArray[6 + indexMod].replace(/\W/g, '')); | |
let middleName; | |
if (!(/[0-9]/g.test(dataArray[7 + indexMod]))) { | |
middleName = capitalize(dataArray[7 + indexMod]); | |
} | |
const extraData = dataArray[middleName ? 8 + indexMod : 7 + indexMod]; | |
const gender = extraData.includes('M') ? 'MALE' : 'FEMALE'; | |
const birthDate = moment(extraData.substr(2, 10), 'YYYYMMDD'); | |
const bloodType = extraData.substr(-2); | |
return { | |
idNumber, | |
lastName1, | |
lastName2, | |
firstName1, | |
middleName, | |
gender, | |
birthDate, | |
bloodType, | |
fullName: `${firstName1} ${middleName || ''} ${lastName1} ${lastName2 || ''}`, | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment