المسارات
/
MIPS Assembly
MIPS Assembly
/
التمارين
/
أرقام التعرّف الضوئي (OCR)
أرقام التعرّف الضوئي (OCR)

أرقام التعرّف الضوئي (OCR)

متوسط

مقدمة

حصل صديقك المقرّب مارتا مؤخرًا على وظيفة أحلامه للعمل مع مجموعات متحف محلي للتاريخ. ولمعرفته بشغفك بالبرمجة، يبوح لك بمشكلة تواجهه في العمل تتعلق بمعرض قادم عن تاريخ الحوسبة. كان قسم الرياضيات في إحدى الجامعات المحلية قد تبرّع بعدة صناديق من المطبوعات التاريخية، لكن نظرًا لسوء حالة المستندات، تقرر رقمنة النص. غير أن الطابعة القديمة للجامعة كانت لها بعض الغرائب في كيفية تمثيل النص، ويمكن لصديقك أن يستفيد من مساعدتك لاستخراج البيانات بنجاح.

التعليمات

التعرّف الضوئي على المحارف (OCR) هو برنامج يحوّل صور النصوص إلى نص يمكن قراءته آليًا. إذا أُعطيت شبكة من المحارف تمثّل بعض الأرقام، فحوّل الشبكة إلى سلسلة نصية من الأرقام. إذا كانت الشبكة تحتوي على عدة صفوف من الخلايا، فيجب فصل الصفوف في المخرجات بـ ",".

  • تتكوّن الشبكة من سطر واحد أو أكثر من الخلايا.
  • يتكوّن كل سطر في الشبكة من خلية واحدة أو أكثر.
  • عرض كل خلية ثلاثة أعمدة وارتفاعها أربعة صفوف (3x4)، وتمثّل كل خلية رقمًا واحدًا.
  • تُرسم الأرقام باستخدام الشرطات العمودية ("|") والشرطات السفلية ("_") والمسافات (" ").

الحالات الحدّية

  • إذا لم يكن حجم المُدخل صالحًا، فينبغي أن يشير برنامجك إلى وجود خطأ.
  • إذا كان حجم المُدخل صحيحًا لكن خلية ما غير قابلة للتعرّف عليها، فينبغي أن يُخرج برنامجك "?" لذلك المحرف.

الأمثلة

المُدخل التالي (بدون التعليقات) يُحوَّل إلى "1234567890".

      _  _     _  _  _  _  _  _  #
    | _| _||_||_ |_   ||_||_|| | # Decimal numbers.
    ||_  _|  | _||_|  ||_| _||_| #
                                 # The fourth line is always blank,

المُدخل التالي يُحوَّل إلى "123,456,789".

    _  _ 
  | _| _|
  ||_  _|
         
    _  _ 
|_||_ |_ 
  | _||_|
         
 _  _  _ 
  ||_||_|
  ||_| _|
         

تنسيق الشبكة

تُمثَّل الشبكة بسلسلة نصية منتهية بـ null، مع محرف سطر جديد في نهاية كل صف.

السجلات

السجل الاستخدام النوع الوصف
$a0 مدخل عنوان سلسلة نصية مُدخلة منتهية بـ null
$a1 مدخل/مخرج عنوان سلسلة نصية ناتجة منتهية بـ null، وتكون فارغة إذا كانت أبعاد الشبكة غير صالحة
$v0 مخرج عدد صحيح حالة الشبكة (0 = ok، -1 = invalid columns، -2 = invalid rows)
$t0-9 مؤقت أي نوع للتخزين المؤقت
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
MIPS Assembly Exercism

مستعد لبدء أرقام التعرّف الضوئي (OCR)؟

سجّل في Exercism لتتعلّم وتتقن MIPS Assembly عبر 70 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.