OCR / app /extract_mrz /mrz_engine.py
ShahzainHaider's picture
Upload folder using huggingface_hub
7bbae49
raw
history blame
2.67 kB
from mrz.checker.td1 import TD1CodeChecker
from mrz.checker.td2 import TD2CodeChecker
from mrz.checker.td3 import TD3CodeChecker
def mrz_engine(mrz_list, lenghtOfChars):
try:
user_data = {}
if lenghtOfChars == 90:
check = TD1CodeChecker(f"{mrz_list[0]}\n"
f"{mrz_list[1]}\n"
f"{mrz_list[2]}"
)
elif lenghtOfChars == 72:
check = TD2CodeChecker(f"{mrz_list[0]}\n"
f"{mrz_list[1]}")
elif lenghtOfChars == 88:
check = TD3CodeChecker(f"{mrz_list[0]}\n"
f"{mrz_list[1]}")
else:
check = False
result = bool(check)
# print(result)
if result:
user_data = check.fields()
# print(fields.name,fields.surname )
# print(get_country(fields.country))
else:
print("FAILED")
return user_data
except Exception as e:
print("[Exception in mrz_engine] : ", str(e))
return user_data
def mrz_corrector(capital_strings, lenghtOfCharaters):
try:
lines = len(capital_strings)
if lines == 2 and lenghtOfCharaters not in [72, 88]:
safe_check = {72: 3, 88: 3}
for index, line in enumerate(capital_strings):
if len(line) != safe_check[lenghtOfCharaters]:
char_difference = safe_check[lenghtOfCharaters] - len(line)
line = line + char_difference * '<'
capital_strings[index] = line
lenghtOfCharaters = len(capital_strings)*len(line)
for index, line in enumerate(capital_strings):
if len(line) != 30:
char_difference = 30 - len(line)
line = line + char_difference * '<'
capital_strings[index] = line
lenghtOfCharaters = len(capital_strings)*len(line)
elif lines == 3 and lenghtOfCharaters != 90:
for index, line in enumerate(capital_strings):
if len(line) != 30:
char_difference = 30 - len(line)
line = line + char_difference * '<'
capital_strings[index] = line
lenghtOfCharaters = len(capital_strings)*len(line)
return lenghtOfCharaters, capital_strings
except Exception as e:
print("[Exception in mrz_corrector] : ", str(e))
lenghtOfCharaters = 0
capital_strings = []
return lenghtOfCharaters, capital_strings