Я работаю над извлечением данных из удостоверения личности (например, номера удостоверения личности, имени, пола и т. д.) из изображения. Я использую EasyOCR вместе с OpenCV и другими библиотеками Python (например, matplotlib, scipy и т. д.) для извлечения конкретных деталей из изображения CNIC (компьютеризированного национального удостоверения личности). На данный момент мне удалось извлечь несколько полей, таких как имя, имя отца, дата рождения, дата выдачи и дата истечения срока действия, но я также хочу извлечь номер CNIC и пол. Проблема:
OCR может извлекать имя, имя отца, дату рождения и т. д., но теперь я хочу также извлечь поля номера CNIC и пола.
Номер CNIC и пол извлекаются неправильно, например Номер CNIC: Хунуаусе и
ПОЛ: Пол?
Я использую предопределенные ограничивающие рамки, чтобы попытаться найти соответствующие поля для CNIC и пола. .
Корректировка ограничивающих рамок: корректны ли заранее заданные ограничивающие рамки для номера CNIC и пола, или их следует скорректировать, чтобы лучше охватить эти поля?
Я был бы признателен любая помощь или предложения по повышению точности и надежности извлечения номеров CNIC и пола с помощью OCR.
вот код, который я использую:
Я работаю над извлечением данных из удостоверения личности (например, номера удостоверения личности, имени, пола и т. д.) из изображения. Я использую EasyOCR вместе с OpenCV и другими библиотеками Python (например, matplotlib, scipy и т. д.) для извлечения конкретных деталей из изображения CNIC (компьютеризированного национального удостоверения личности). На данный момент мне удалось извлечь несколько полей, таких как имя, имя отца, дата рождения, дата выдачи и дата истечения срока действия, но я также хочу извлечь номер CNIC и пол. [b]Проблема[/b]: OCR может извлекать имя, имя отца, дату рождения и т. д., но теперь я хочу также извлечь поля номера CNIC и пола. Номер CNIC и пол извлекаются неправильно, например Номер CNIC: Хунуаусе и ПОЛ: Пол? Я использую предопределенные ограничивающие рамки, чтобы попытаться найти соответствующие поля для CNIC и пола. . Корректировка ограничивающих рамок: корректны ли заранее заданные ограничивающие рамки для номера CNIC и пола, или их следует скорректировать, чтобы лучше охватить эти поля? Я был бы признателен любая помощь или предложения по повышению точности и надежности извлечения номеров CNIC и пола с помощью OCR. вот код, который я использую: [code]import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import cv2 from PIL import Image import easyocr import numpy as np import math import re from scipy.spatial import distance
# %% """ ## Reading a sample Image and applying OCR """
# %% # 9 image_path = "/content/drive/MyDrive/CV/T3.jpeg" im = Image.open(image_path) image = cv2.imread(image_path) result = reader.readtext(image_path) print('Result',result)
# %% dpi = im.info.get('dpi') print(f"The DPI of Image is : {dpi}")
# %% shape = image.shape[:-1] print(f"The Shape of Image is :{shape}")
# %% plt.imshow(image)
# %% """ ## Showing the marked bounding boxes """
# %% bbs = [] values = []
for (bbox, text, prob) in result: # display the OCR'd text and associated probability # print("[INFO] {:.4f}: {}".format(prob, text)) values.append(text)
# cleanup the text and draw the box surrounding the text along # with the OCR'd text itself cv2.rectangle(image, tl, br, (0, 255, 0), 2) cv2.putText(image, text, (tl[0], tl[1] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 0, 0), 2) # show the output image #cv2.imshow("Image", image) #cv2.waitKey(0)
# %% def get_value(key,normalize_output): distances = {} for bbx,text in normalize_output: distances[text] = calculate_distance(key,bbx) return distances
# %% dict_data = {} output_dict = {} output_dict['Name'] = name_value output_dict['Father Name'] = father_value output_dict['Date of Birth'] = dob_value output_dict['Date of Issue'] = doi_value output_dict['Date of Expiry'] = doe_value #output_dict['CNIC Number'] = cnic_value # New entry for CNIC number #output_dict['GENDER'] = gender_value output_dict['Country of Stay'] = country_of_stay output_dict['CNIC Number'] = cnic_value output_dict['GENDER'] = gender_value
# %% for key,value in output_dict.items(): output_dict = get_value(value,normalize_output) answer = list(min(output_dict.items(), key=lambda x: x[1]))[0] dict_data[key] = answer
# %% b """ ## Output Dictionary """
# %% print('datadd',dict_data)
# %% # %% """ ## Writing the Output Dictionary to a Text File """
# Define the file path where you want to save the text file output_file_path = "/content/drive/MyDrive/output.txt"
# Open the file in write mode with open(output_file_path, "w") as file: # Loop through the dictionary and write each key-value pair to the file for key, value in dict_data.items(): file.write(f"{key}: {value}\n")
Я работаю над извлечением данных (например, номера CNIC, имени, пола и т. д.) из изображения. Я использую EasyOCR вместе с OpenCV и другими библиотеками Python (например, matplotlib, scipy и т. д.) для извлечения конкретных деталей из изображения...
Я работаю над извлечением данных (например, номера CNIC, имени, пола и т. д.) из изображения. Я использую EasyOCR вместе с OpenCV и другими библиотеками Python (например, matplotlib, scipy и т. д.) для извлечения конкретных деталей из изображения...
Я работаю над извлечением данных (например, номера CNIC, имени, пола и т. д.) из изображения. Я использую EasyOCR вместе с OpenCV и другими библиотеками Python (например, matplotlib, scipy и т. д.) для извлечения конкретных деталей из изображения...
Я хочу создать DLL для чтения данных с удостоверения личности Эмирейтс. У меня есть картридер HID OMINKEY 3121. Мне необходимо считать идентификационный номер Эмирейтс с карты.
Какие действия необходимо для этого сделать?