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

OCR संख्याएँ

मध्यम

परिचय

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

निर्देश

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

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

एज केस

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

उदाहरण

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

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

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

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

इम्प्लीमेंटेशन नोट्स

निर्देशों के चरण 1 में बताए अनुसार recognizeDigit नाम का एक फंक्शन बनाइए, लेकिन इसे 0 से 9 तक के सभी दस अंक पहचानने वाला बनाइए। पैरामीटर और रिटर्न वैल्यू के लिए जो चाहें चुन लीजिए, लेकिन इसे चरण 2 के सबरूटीन की तरह काम का बनाइए।

चरण 2 के लिए यह बनाइए,

func Recognize(string) []string

और इसे recognizeDigit का उपयोग करके लागू कीजिए।

यहाँ जाँची जाने वाली इनपुट स्ट्रिंग में हर लाइन की शुरुआत में एक \n होता है, और अंतिम लाइन के अंत में कोई \n नहीं होता। (इससे रॉ स्ट्रिंग लिटरल पढ़ने में आसान रहते हैं।)

बोनस अंक पाने के लिए गलत फॉर्मैट वाले डेटा को भी सहजता से संभालिए। अधूरा सेल मिले तो क्या करें? उसे छोड़ दें? खाली जगहों से भर दें? उसे "?" अक्षर के साथ बताएँ? अगर पहला अक्षर \n न हो तो क्या करें?

GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Go Exercism

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

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