OCR извлекает текст правильно. Однако, когда я пытаюсь извлечь данные, некоторые поля, такие как дата рождения, пол и страна пребывания, извлекаются неправильно.
Проблема : у меня есть Изображение CNIC, из которого я использую EasyOCR для извлечения текста. Я использую регулярные выражения для сбора таких полей, как номер CNIC, имя, пол и т. д. Однако для некоторых полей я получаю неправильные или отсутствующие данные.
Вот код;
Я использую EasyOCR для извлечения текста из изображения CNIC:
Код: Выделить всё
import easyocr
txt = easyocr.Reader(['en'])
text = txt.readtext(image_path)
# Use regular expressions to extract relevant data
cnic_data = {}
# Regular expressions for extracting CNIC number, name, father name, dob etc.
cnic_number_pattern = r'(\d{5}-\d{7}-\d{1})'
name_pattern = r'Name\s*\s*([A-Za-z\s]+)'
father_name_pattern = r'Father\s*Name\s*[:\-\s]*([A-Za-z\s]+(?:\s+[A-Za-z\s]+)*)'
gender_pattern = r'Gender\s*[:\-\s]*(?:M|F|Male|Female)
dob_pattern = r'Date\s*of\s*Birth\s*[:\-\s]*(\d{2}-\d{2}-\d{4})' country_of_stay_pattern = r'Country\s*of\s*Stay\s*[:\-\s]*([A-Za-z\s]+)'
# If a match is found, save it, otherwise mark it as not found
cnic_data['CNIC Number'] = re.search(cnic_number_pattern, etext)
cnic_data['Name'] = re.search(name_pattern, etext)
cnic_data['Father Name'] = re.search(father_name_pattern, etext)
cnic_data['Gender'] = re.search(gender_pattern, etext)
cnic_data['Date of Birth'] = re.search(dob_pattern, etext)
cnic_data['Country of Stay'] = re.search(country_of_stay_pattern, etext)
# Extracting the values from regex matches
cnic_data = {key: (match.group(1) if match else "Not Found") for key, match in cnic_data.items()}
return cnic_data
Я ожидаю, что результатом будет словарь с правильно извлеченными данными CNIC, например:
{
«Номер CNIC»: «37403-9637109-9»,
«Имя»: «Мухаммад Талха бин Магфур»,
«Имя отца»: «Магфур» Ахмед",
"Пол": "М",
"Дата рождения": "11.01.1999",
"Страна пребывания": "Пакистан"
}< /p>
Поля пола, даты рождения и страны пребывания извлекаются неправильно (а иногда и не извлекаются вообще).
Поля пола, даты рождения и страны пребывания извлекаются неправильно. р>
Что я пробовал:
- Я гарантировал, что имена полей в шаблонах регулярных выражений (например, дата рождения,, Страна пребывания) соответствуют тексту, извлеченному из изображения CNIC. OCR правильно извлекает текст из изображения cnic.
Код: Выделить всё
Gender
- Я пытался настроить шаблоны регулярных выражений, но проблема не устранена.
Я вручную проверил извлеченный текст, и кажется, что пол и страна не анализируются правильно из-за их близости.
Может ли кто-нибудь помочь мне разобраться в проблеме или предложить какие-либо улучшения шаблонов регулярных выражений?
Выход:

Подробнее здесь: https://stackoverflow.com/questions/792 ... syocr-in-p