التعامل مع قارئ MRZ
#1
السلام عليكم و رحمة الله
صح فطوركم و تقبل الله منا و منكم
هل سبق لأحدكم و أن تعامل مع قارئ MRZ الذي يقرأ الشريط السفلي من بطاقة التعريف البيومترية أو جواز السفر برمجيا بحيث أستخرج رقم البطاقة و الاسم و اللقب ... هل من مساعدة من فضلكم و بارك الله فيكم.
الرد
#2
سلام عليكم ، رمضان كريم
وحدة تتعامل مع MRZ 

كود :
unit PassMRZChk; interface implementation function CheckPassportDigit(const PassportStr: string): byte; const   Weight: array [0 .. 2] of byte = (1, 7, 3);   //   function GetChrProductXWeight(DigitChr: Char; const Idx: byte): byte;   begin     DigitChr := UpCase(DigitChr);     case DigitChr of       '<':         Result := 0;       '0' .. '9':         Result := (Ord(DigitChr) - 48);       'A' .. 'Z':         Result := (Ord(DigitChr) - 65) + 10;     else       Result := 0;     end;     Result := Result * Weight[(Idx mod 3)];   end; var   i: byte;   ProductXWeight: byte;   Sum: Word; begin   Sum := 0;   if Length(PassportStr) = 0 then     exit(0);   for i := 1 to Length(PassportStr) do   begin     ProductXWeight := GetChrProductXWeight(PassportStr[i], (i mod 3));     Sum := Sum + ProductXWeight;   end;   Result := (Sum mod 10); end; end.
الفاشلون نوعان : الأول : فكر ولم يفعل .. والآخر: فعل ولم يفكر
[-] كل من 4 users say قال شكرا ل Mr.DOS على المشاركة المفيدة
  • أبو معاذ, ELARAPY, igidher, Lam.Abdeldjalil
الرد
#3
(17-04-2022, 11:47 PM)Mr.DOS كتب : سلام عليكم ، رمضان كريم
وحدة تتعامل مع MRZ 

كود :
unit PassMRZChk; interface implementation function CheckPassportDigit(const PassportStr: string): byte; const   Weight: array [0 .. 2] of byte = (1, 7, 3);   //   function GetChrProductXWeight(DigitChr: Char; const Idx: byte): byte;   begin     DigitChr := UpCase(DigitChr);     case DigitChr of       '<':         Result := 0;       '0' .. '9':         Result := (Ord(DigitChr) - 48);       'A' .. 'Z':         Result := (Ord(DigitChr) - 65) + 10;     else       Result := 0;     end;     Result := Result * Weight[(Idx mod 3)];   end; var   i: byte;   ProductXWeight: byte;   Sum: Word; begin   Sum := 0;   if Length(PassportStr) = 0 then     exit(0);   for i := 1 to Length(PassportStr) do   begin     ProductXWeight := GetChrProductXWeight(PassportStr[i], (i mod 3));     Sum := Sum + ProductXWeight;   end;   Result := (Sum mod 10); end; end.

يبدو أنك لم تفهمني
أنا أود قراءة MRZ دون اللجوء إلى OutputWedgeSysTray المتواجد في مجلد التنصيب 3M Swipe Reader كما هو مبين في الفيديو ابتداء من الثانية 47 
https://www.youtube.com/watch?v=EqXxNkXIs2o
هل هناك مكون دلفي يتعامل مباشرة مع MRZ كلوحة مفاتيح؟ أرجو أن أكون أوضحت الفكرة
الرد
#4
و عليكم السلام و رحمة الله و بركاته

ليست عندي معلومات عن الجهاز ، لكن عندي بعض الأسئلة
* ما نوع منفذ الجهاز؟ usb/ com
* إذا كان usb  عند فتح محرر النصوص و القراءة دون إستعمال أي اداة هل يكتب النص ؟
إذا كان لا يكتب النص هل sdk الخاص بالجهاز متوفر؟

إذا كان غير متوفر إتصل بالمصنع و أطلب نسخة إذا موجودة أو بعض المساعدة
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم