ट्रैक
/
Python
Python
/
अभ्यास
/
OCR संख्याएँ
OCR संख्याएँ

OCR संख्याएँ

आसान

परिचय

आपके सबसे अच्छे दोस्त मार्ता को हाल ही में अपने सपनों की नौकरी मिली है। उस नौकरी में उन्हें एक स्थानीय इतिहास संग्रहालय के संग्रह के साथ काम करना है। आपको प्रोग्रामिंग में रुचि है, यह जानते हुए वे अपने काम की एक समस्या आपसे साझा करते हैं। यह समस्या कंप्यूटिंग के इतिहास पर होने वाली एक आगामी प्रदर्शनी से जुड़ी है। एक स्थानीय विश्वविद्यालय के गणित विभाग ने ऐतिहासिक प्रिंटआउट के कई डिब्बे दान किए थे। लेकिन दस्तावेज़ों की हालत बहुत खराब थी, इसलिए यह तय किया गया है कि टेक्स्ट को डिजिटल रूप में बदल दिया जाए। लेकिन उस विश्वविद्यालय के पुराने प्रिंटर में टेक्स्ट को दिखाने के कुछ अजीब तरीके थे। डेटा को सफलतापूर्वक निकालने में आपकी मदद आपके दोस्त के बहुत काम आ सकती है।

निर्देश

ऑप्टिकल कैरेक्टर रिकग्निशन या OCR एक ऐसा सॉफ्टवेयर है जो टेक्स्ट की छवियों को मशीन द्वारा पढ़े जा सकने वाले टेक्स्ट में बदल देता है। कुछ अंकों को दर्शाने वाले अक्षरों का एक ग्रिड दिया गया है। इस ग्रिड को अंकों की स्ट्रिंग में बदलिए। अगर ग्रिड में सेलों की कई पंक्तियाँ हों, तो आउटपुट में उन पंक्तियों को "," से अलग किया जाना चाहिए।

  • ग्रिड सेलों की एक या अधिक पंक्तियों से बनता है।
  • ग्रिड की हर पंक्ति एक या अधिक सेलों से बनी होती है।
  • हर सेल तीन कॉलम चौड़ा और चार पंक्तियों ऊँचा (3x4) होता है और एक अंक को दर्शाता है।
  • अंकों को पाइप ("|"), अंडरस्कोर ("_") और स्पेस (" ") से बनाया जाता है।

एज केस

  • अगर इनपुट का आकार मान्य नहीं है, तो आपके प्रोग्राम को यह बताना चाहिए कि एक एरर है।
  • अगर इनपुट का आकार सही है, लेकिन कोई सेल पहचाना नहीं जा सकता, तो आपके प्रोग्राम को उस अक्षर के लिए "?" आउटपुट करना चाहिए।

उदाहरण

नीचे दिया गया इनपुट (कमेंट के बिना) "1234567890" में बदल दिया जाता है।

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

नीचे दिया गया इनपुट "123,456,789" में बदल दिया जाता है।

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

एक्सेप्शन संदेश

कभी-कभी एक एक्सेप्शन उठाना ज़रूरी हो जाता है। ऐसा करते समय आपको हमेशा एक सार्थक एरर संदेश शामिल करना चाहिए, जिससे पता चले कि एरर का स्रोत क्या है। इससे आपका कोड ज़्यादा पढ़ने योग्य बनता है और डीबग करने में काफी मदद मिलती है। जिन स्थितियों में आपको पता हो कि एरर का स्रोत एक खास टाइप का होगा, वहाँ आप अंतर्निहित एरर टाइपों में से कोई एक उठाना चुन सकते हैं, लेकिन तब भी सार्थक संदेश शामिल करना चाहिए।

इस अभ्यास में यह ज़रूरी है कि जब convert() फंक्शन को कोई ऐसी स्ट्रिंग मिले जो मान्य OCR संख्या नहीं है, तब आप raise स्टेटमेंट का उपयोग करके ValueError "फेंकें"। टेस्ट तभी पास होंगे जब आप exception को raise करें और उसके साथ एक संदेश भी शामिल करें।

किसी संदेश के साथ ValueError उठाने के लिए, संदेश को exception टाइप के आर्गुमेंट के रूप में लिखिए:

# when the rows aren't multiples of 4
raise ValueError("Number of input lines is not a multiple of four")

# when the columns aren't multiples of 3
raise ValueError("Number of input columns is not a multiple of three")
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Python Exercism

OCR संख्याएँ शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Python को 17 कॉन्सेप्ट146 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।