textToIdCard method
Map<String, String?>
textToIdCard(
- String text, {
- required String? inputName,
- required String? inputFatherName,
- required String? inputIdCardNumber,
- required String? inputExpiryDate,
- required String? inputIssueDate,
- required String? inputBirthDate,
- required String? inputGender,
- required String? inputCountry,
})
Implementation
Map<String, String?> textToIdCard(
String text, {
required String? inputName,
required String? inputFatherName,
required String? inputIdCardNumber,
required String? inputExpiryDate,
required String? inputIssueDate,
required String? inputBirthDate,
required String? inputGender,
required String? inputCountry,
}) {
String? country = getCountry(text);
text = removeStopWords(text);
String namePrefix = 'Name ';
String fatherNamePrefix = 'Father Name ';
// String identityNumberPrefix = 'Identity Number ';
String? idCardNumber = extractIdCardNumber(text);
removeFromText(text, idCardNumber);
String? name = getValueFromPrefix(text, namePrefix, split: ' @@ ')?.trim();
removeFromText(text, name);
String? fatherName =
getValueFromPrefix(text, fatherNamePrefix, split: ' @@ ')?.trim();
removeFromText(text, fatherName);
// String? idcardNumber = getValueFromPrefix(text, identityNumberPrefix);
String gender = getGender(text);
// String? country = gender == 'F'
// ? getValueFromPrefix(text, ' F ')
// : getValueFromPrefix(text, ' M ');
// print(text);
RegExp dateRegex = RegExp(
r"(?:(\d{2})\.(\d{2})\.(\d{4})).*?(?:(\d{2})\.(\d{2})\.(\d{4})).*?(?:(\d{2})\.(\d{2})\.(\d{4}))");
Match? dateMatch = dateRegex.firstMatch(text);
String? dateOfBirth;
String? dateOfIssue;
String? dateOfExpiry;
if (dateMatch != null) {
int birthDay = int.parse(dateMatch.group(1)!);
int birthMonth = int.parse(dateMatch.group(2)!);
int birthYear = int.parse(dateMatch.group(3)!);
int issueDay = int.parse(dateMatch.group(4)!);
int issueMonth = int.parse(dateMatch.group(5)!);
int issueYear = int.parse(dateMatch.group(6)!);
int expiryDay = int.parse(dateMatch.group(7)!);
int expiryMonth = int.parse(dateMatch.group(8)!);
int expiryYear = int.parse(dateMatch.group(9)!);
dateOfBirth = "$birthDay.$birthMonth.$birthYear";
dateOfIssue = "$issueDay.$issueMonth.$issueYear";
dateOfExpiry = "$expiryDay.$expiryMonth.$expiryYear";
}
print('************');
// print('Name: $name');
// print('Father\'s Name: $fatherName');
// print('id card number $idCardNumber');
// print('dateOfExpiry $dateOfExpiry');
// print('dateOfIssue $dateOfIssue');
// print('dateOfBirth $dateOfBirth');
// print('Gender $gender');
// print('country $country');
if (dateOfIssue != null && dateOfExpiry != null && dateOfBirth != null) {
List<String> sortedDates =
sortDates([dateOfBirth, dateOfExpiry, dateOfIssue]);
dateOfBirth = sortedDates[0];
dateOfIssue = sortedDates[1];
dateOfExpiry = sortedDates[2];
removeFromText(text, dateOfBirth);
removeFromText(text, dateOfIssue);
removeFromText(text, dateOfExpiry);
}
Map<String, String?> idCardData = {
'name': name ?? inputName,
'father_name': fatherName ?? inputFatherName,
'id_card_number': idCardNumber ?? inputIdCardNumber,
'date_of_expiry': dateOfExpiry ?? inputExpiryDate,
'date_of_issue': dateOfIssue ?? inputIssueDate,
'date_of_birth': dateOfBirth ?? inputBirthDate,
'gender': gender,
'country': country ?? inputCountry
};
print(idCardData);
return idCardData;
}