خواندن اسم افراد از روی پاسپورت در پردازش تصویر با پایتون
آیا تا به حال به این فکر کردهاید که چگونه میتوانید با تکنیکهای پردازش تصویر در زبان برنامه نویسی پایتون نام افراد را از روی پاسپورت آنها بدست آورید. در این نوشته به روش بدست آوردن اسم افراد در پایتون میپردازیم.
خواندن اسم افراد از روی پاسپورت در پردازش تصویر با پایتون
برای خواندن اسم افراد در پایتون از روی تصویر پایتون از پکیج pytesseract استفاده میکنیم تا بتوانیم از تکنیکهای ocr در این پکیج استفاده کنیم. برای خواندن اسم افراد از روی پاسپورت با پایتون از کد زیر استفاده کنید:
from PIL import Image
import pytesseract
import re
def extract_name_from_id_card(image):
try:
image = Image.open(image)
ocr_text = pytesseract.image_to_string(image).lower().replace(" ", "")
name_pattern = re.compile(r"p<([^<]+)<<([^<]+)<")
matches = name_pattern.findall(ocr_text)
if len(matches) == 1:
return matches[0][::-1]
else:
words = ocr_text.split()
possible_names = [
word for word in words if len(word) > 3 and word.isalpha()
]
return possible_names[:2]
except Exception as e:
return None
در کد بالا ابتدا سعی داریم تا اسم افراد را از روی بخش زیرین پاسپورت بخوانیم و در صورتی که نتوانیم از بارکد زیرین پاسپورت که در تمام پاسپورتهای دنیا یکسان است، بدست آوریم از تمام متنهای بدست آمده در تصویر پاسپورت برای خواندن نام افراد استفاده میکنیم.
اگر کد بهتری برای خواندن نام افراد در پایتون در دسترس دارید در بخش نظرات همین نوشته برای ما بنویسید.



















میشه این کدو روی پاسپورتهای اسکن شده قدیمی هم استفاده کرد؟
بله، این کد قابلیت استفاده بر روی پاسپورتهای اسکن شده قدیمی را نیز دارد، اما کیفیت و وضوح تصویر در نتایج تاثیرگذار خواهد بود.
سرعت پردازش تصویر با این روش زیاد نیست؟
سلام. این روش برای پردازش تصاویر با حجم کم و دقت بالا مناسب است، اما برای حجم زیاد تصاویر ممکن است نیاز به بهینهسازی داشته باشد.
regex برای پیدا کردن اسم، همه پاسپورتها رو پوشش میده؟
سلام. الگوی regex استفاده شده برای استخراج نام، بر اساس فرمت استاندارد پاسپورت طراحی شده است، اما ممکن است در برخی موارد خاص یا پاسپورتهای قدیمیتر نیاز به تنظیم داشته باشد.
pytesseract همیشه اسم رو درست تشخیص میده یا گاهی خطا می کنه؟
کتابخانه pytesseract در تشخیص نامها گاهی اوقات خطا میکند، به خصوص اگر کیفیت تصویر پایین باشد یا فونت نامشخص باشد. در چنین مواردی، ممکن است نیاز به پیشپردازش تصویر یا استفاده از الگوریتمهای پیچیدهتر باشد
آیا شناسایی ناحیه MRZ به صورت خودکار همیشه دقیق است؟
شناسایی MRZ به صورت خودکار همیشه دقیق نیست و دقت آن به کیفیت تصویر و شرایط نوری بستگی دارد. برای بهبود دقت میتوان از تکنیکهای پیشپردازش تصویر استفاده کرد.
بهترین روش برای کاهش نویز تصویر قبل از OCR چیست؟
سلام، برای کاهش نویز تصویر قبل از OCR، استفاده از فیلترهای میانه (Median Filter) و Gaussian Blur معمولاً نتایج خوبی به همراه دارد. همچنین، تنظیم کنتراست و روشنایی تصویر نیز میتواند به بهبود دقت OCR کمک کند.
آیا تغییر نور یا زاویه عکس روی دقت استخراج تاثیر دارد؟
سلام، بله متاسفانه تغییر نور و زاویه عکس میتواند روی دقت استخراج تاثیر منفی بگذارد. بهتر است تصویر با نور کافی و به صورت مستقیم گرفته شود.
آیا میتوان این فرآیند را بهصورت خودکار برای چندین پاسپورت انجام داد؟
بله، با کمی تغییر در کد میتوانید این فرآیند را به صورت خودکار برای چندین پاسپورت انجام دهید، مثلاً با استفاده از یک حلقه و پردازش دستهای تصاویر.
آیا این روش با پاسپورتهای کشورهای مختلف هم کار میکند؟
سلام، این روش بر اساس استاندارد خواندن اطلاعات از بخش MRZ پاسپورتها طراحی شده و به همین دلیل با اکثر پاسپورتهای دنیا سازگار است، اما ممکن است در برخی موارد نیاز به تنظیمات جزئی داشته باشد.
چه باحال
سپاس از نظرتون.