Regex неправильно извлекает данные CNIC из текста, извлеченного с помощью EasyOCR в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Regex неправильно извлекает данные CNIC из текста, извлеченного с помощью EasyOCR в Python

Сообщение Anonymous »

Я пытаюсь извлечь личные данные (такие как имя, пол, дата рождения и т. д.) из изображения CNIC (компьютеризированного национального удостоверения личности) с помощью EasyOCR и регулярных выражений в Python.

Я пытаюсь получить соответствующие данные с помощью регулярного выражения, некоторые поля, такие как дата рождения, пол и страна пребывания, извлекаются неправильно.
Проблема: у меня есть изображение CNIC от который я использую EasyOCR для извлечения текста. Я использую регулярные выражения для захвата таких полей, как номер CNIC, имя, пол и т. д. Однако для некоторых полей я получаю неправильные или отсутствующие выходные данные.
Я хотел, чтобы выходные данные были в виде файла блокнота. в котором прописан номер Cnic и остальные поля..
Вот код;
import easyocr

txt = easyocr.Reader(['en'])
text = txt.readtext(image_path)
# Join OCR detected text into a single string and clean it up
etext = " ".join([item[1] for item in text])
print("Cleaned Extracted Text:\n", etext) # Debugging the cleaned text


# 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()}

with open(file_path, 'w') as f:

for key, value in cnic_data.items():

f.write(f"{key}: {value}\n")
print(f"Data has been written to {file_path}")


Требуемый результат:
Я ожидаю, что результатом будет файл Блокнота с правильно извлеченными данными CNIC, например:
CNIC Number: 37403-9637109-9
Name: Muhammad Talha Bin Maghfoor
Father Name: Maghfoor Ahmed Gender
Gender: M
Date of Birth: 11.01.1999
Country of Stay: Pakistan


Поля пола, даты рождения и страны пребывания извлекаются неправильно (или иногда не извлекаются вообще).< /p>
Что я пробовал:
  • Я гарантировал, что имена полей в шаблонах регулярных выражений (например, Имя, Имя отца, дата рождения,Gender, Страна пребывания) соответствуют тексту, извлеченному из изображения CNIC.
  • Я попытался настроить шаблоны регулярных выражений, но проблема не устранена.
Я пробовал обновить шаблоны регулярных выражений для имени отца , пол и дату рождения, но я до сих пор не могу их правильно извлечь.

Может ли кто-нибудь помочь мне устранить проблему или предложить какие-либо улучшения шаблонов регулярных выражений?
Ввод: входные данные — изображение Cnic
вот результат:
Actual output:
PAKISTAN National Identity Card ISLAMIC REPUBLIC OF PAKISTAN Name Muhammad Talha Bin Maghfoor Father Name Maghfoor Ahmed Gender Country of Stay M Pakistan Identity Number Date of Birth 37403-9637109-9 11.01.1999 Date of Issue Date of Expiry 03.02.2024 03.02.2034

CNIC Number: 37403-9637109-9
Name: Muhammad Talha Bin Maghfoor
Father Name: Maghfoor Ahmed Gender Country of Stay M Pakistan Identity Number Date of Birth
Gender: Not Found
Date of Birth: Not Found
Country of Stay: M Pakistan Identity Number Date of Birth

Data has been written to cnic_data.txt


Подробнее здесь: https://stackoverflow.com/questions/793 ... gh-easyocr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»