Regex extrahiert CNIC-Details nicht korrekt aus Text, der über EasyOCR in Python extrahiert wurdePython

Python-Programme
Guest
 Regex extrahiert CNIC-Details nicht korrekt aus Text, der über EasyOCR in Python extrahiert wurde

Post by Guest »

Ich versuche, mit EasyOCR und Regex in Python persönliche Daten (wie Name, Geschlecht, Geburtsdatum usw.) aus einem Bild eines CNIC (Computerized National Identity Card) zu extrahieren.

Ich versuche, die relevanten Daten über Regex abzurufen, einige Felder, wie Geburtsdatum, Geschlecht und Aufenthaltsland, werden nicht korrekt extrahiert.
Problem: Ich habe ein CNIC-Bild aus dem ich EasyOCR verwende, um Text zu extrahieren. Ich verwende reguläre Ausdrücke, um Felder wie CNIC-Nummer, Name, Geschlecht usw. zu erfassen. Allerdings erhalte ich für einige Felder eine falsche oder fehlende Ausgabe.
Ich wollte, dass die Ausgabe eine Notepad-Datei ist Darin werden die CNIC-Nummer und die restlichen anderen Felder geschrieben.
Hier ist der Code;

Code: Select all

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

Code: Select all

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

Gewünschte Ausgabe:
Ich erwarte, dass die Ausgabe eine Notepad-Datei mit ordnungsgemäß extrahierten CNIC-Details ist, wie zum Beispiel:

Code: Select all

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

Die Felder Geschlecht, Geburtsdatum und Aufenthaltsland werden nicht korrekt (oder manchmal überhaupt nicht) extrahiert.< /p>
Was ich versucht habe:
  • Ich habe sichergestellt, dass die Feldnamen in den Regex-Mustern (z. B Name, Vatername, Geburtsdatum,

    Code: Select all

    Gender
    , Aufenthaltsland) stimmen mit dem überein, was im aus dem CNIC-Bild extrahierten Text erscheint.
  • Das habe ich Ich habe versucht, die Regex-Muster anzupassen, aber das Problem besteht weiterhin.
Ich habe versucht, die Regex-Muster für Vatername zu aktualisieren. Geschlecht und Geburtsdatum, aber ich kann sie immer noch nicht richtig extrahieren.

Kann jemand? Helfen Sie mir, das Problem zu beheben, oder schlagen Sie Verbesserungen an den Regex-Mustern vor?
Eingabe: Die Eingabe ist ein Cnic-Bild
Hier ist die Ausgabe:< /p>

Code: Select all

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post