Spaces:
Sleeping
Sleeping
| import datetime | |
| def extract_details(texts): | |
| details = {'name': '', 'gender': '', 'dob': '', 'aadhaarNo': ''} | |
| current_year = datetime.datetime.now().year | |
| for text in texts: | |
| # Check if colon exists in text and split accordingly | |
| if ':' in text: | |
| text = text.split(':')[1].strip() | |
| cleaned_text = text.replace(':', '').strip() | |
| # Remove leading non-alphabetic characters for gender detection and strip spaces | |
| cleaned_gender = cleaned_text.lstrip('.-/').strip() | |
| # Check if the text is the name (only alphabets, spaces, and possibly dots) | |
| if (all(char.isalpha() or char.isspace() or char == '.' for char in cleaned_text) | |
| and cleaned_gender.lower() not in ['male', 'female']): | |
| details['name'] = cleaned_text | |
| # Check if the text is the DOB (format: dd/mm/yyyy or yyyy) | |
| elif (len(cleaned_text) == 4 and | |
| cleaned_text.isdigit() and | |
| 1900 < int(cleaned_text) < current_year): | |
| details['dob'] = cleaned_text | |
| # Check if the text is the DOB (format: dd/mm/yyyy or dd-mm-yyyy) | |
| elif (len(cleaned_text) == 10 and | |
| (cleaned_text[2] in ['/', '-']) and | |
| (cleaned_text[5] in ['/', '-']) and | |
| cleaned_text.replace('/', '').replace('-', '').isdigit()): | |
| details['dob'] = cleaned_text | |
| # Check if the text is the gender (either 'Male' or 'Female') | |
| elif cleaned_gender.lower() in ['male', 'female']: | |
| details['gender'] = cleaned_gender.capitalize() | |
| # Check if the text is the Aadhaar number (12 digits after removing spaces) | |
| elif cleaned_text.replace(' ', '').isdigit() and len(cleaned_text.replace(' ', '')) == 12: | |
| details['aadhaarNo'] = cleaned_text | |
| # Check if any key's value is empty | |
| if any(value == '' for value in details.values()): | |
| error_key = next(key for key, value in details.items() if value == '') | |
| result = { | |
| 'statusCode': 400, | |
| 'result': details, | |
| 'error': f'{error_key} value is not found due to bad image.' | |
| } | |
| else: | |
| result = { | |
| 'statusCode': 200, | |
| 'result': details, | |
| 'error': '' | |
| } | |
| return result | |