ailiteracynepal 🇳🇵
पाठ आकार

अध्याय ५ · खण्ड III · 28 मिनेट

सानो देवनागरी OCR नमुना

तपाईंको ल्यापटपमा चल्ने पूर्व-तालिमप्राप्त मोडेल। नेपाली पाठको फोटोमा देखाउनुहोस्, यसले पाठ फिर्ता दिन्छ। पन्ध्र लाइन कोड, इन्टरनेट छैन, API बिल छैन।

खण्ड 2 ले अरूको सर्भरमा चल्ने मोडेललाई पाठ पठायो। यो खण्डले मोडेल तपाईंकै ल्यापटपमा चलाउँछ। कार्य OCR हो — Optical Character Recognition — पाठको फोटोलाई वास्तविक पाठ वर्णमा बदल्ने। विशेष गरी देवनागरी लिपिमा लेखिएको नेपाली पाठ। बीस वर्षअघि यसका लागि अनुसन्धान प्रयोगशाला चाहिन्थ्यो। आज यो पन्ध्र लाइन Python र निःशुल्क डाउनलोड हो।

हामी के बनाउँछौँ

सानो कार्यक्रम जसले छविको बाटो लिन्छ — साइनबोर्डको फोटो, नेपाली लेखको स्क्रिनसट, हस्तलिखित नोटको स्न्याप — र यसमा भएको देवनागरी पाठ प्रिन्ट गर्छ।

Input:  photo of a sign reading "खाजा घर"
Output: "खाजा घर"

बस यति नै। त्यहाँबाट स्पष्ट अर्को कदमहरू — आउटपुट अनुवाद गर्ने, नेपाली कागजात सारांश गर्ने, स्क्यान गरिएका बिलहरूको फोल्डरमा खोज्ने — हप्ता-अन्तमा बनाउन सक्ने साना विस्तार हुन्।

औजार: Tesseract

हामी Tesseract प्रयोग गर्नेछौँ, मूलतः HP ले बनाएको, अनि Google ले, र अब ओपन-सोर्स मर्मतकारीहरूको समुदायले हेरचाह गर्ने पुरानो, राम्रोसँग मर्मत गरिएको, निःशुल्क OCR इन्जिन। यसमा पूर्ण देवनागरी समर्थन छ, सामान्य ल्यापटपमा सजिलैसँग चल्छ, र सफा Python र्‍यापर छ।

नयाँ, ट्रान्सफरमर-आधारित OCR प्रणाली पनि छन् — Microsoft को TrOCR, Meta को Nougat, Google को Cloud Vision API, Anthropic को दृष्टि-सक्षम Claude — र 2026 मा उत्पादन-स्तरीय नेपाली OCR का लागि तीमध्ये एउटाले प्रायः Tesseract लाई हराउँछ। हामी Tesseract प्रयोग गरिरहेका छौँ किनभने यो निःशुल्क छ, अफलाइन चल्छ, र सेट गर्न साँच्चै सरल छ। सिद्धान्तहरू सर्छन्।

स्थापना, दुई भागमा

Tesseract का दुई टुक्रा छन्:

इन्जिन आफै — एउटा प्रणाली कार्यक्रम, Python प्याकेज होइन।

  • macOS: brew install tesseract
  • Windows: github.com/UB-Mannheim/tesseract/wiki बाट स्थापक डाउनलोड गर्नुहोस्। स्थापनाका बेला, भाषा-छनोट पर्दामा, नेपाली (देवनागरी) जाँचिएको छ निश्चित गर्नुहोस्। यदि छुटाउनुभयो भने, पछि स्थापक फेरि चलाउन सकिन्छ।
  • Linux: sudo apt install tesseract-ocr tesseract-ocr-nep (-nep प्याकेजले नेपाली भाषा डाटा थप्छ)।

टर्मिनलमा पुष्टि गर्नुहोस्:

tesseract --version
tesseract --list-langs

दोस्रो आदेशले उपलब्ध भाषाहरूमध्ये nep (नेपाली) र eng (अंग्रेजी) देखाउनुपर्छ। यदि nep छुटेको छ भने, नेपाली डाटा फाइल स्थापित छैन — यो यहाँको सबैभन्दा सामान्य त्रुटि हो।

Python र्‍यापर — सक्रिय भर्चुअल वातावरणमा:

pip install pytesseract Pillow

pytesseract Tesseract को वरिपरि र्‍यापर हो। Pillow Python को मानक छवि-ह्यान्डलिङ पुस्तकालय हो; हामी छवि फाइल लोड गर्न प्रयोग गर्छौँ।

पूरा कार्यक्रम

from PIL import Image
import pytesseract

image_path = "data/signboard.jpg"
img = Image.open(image_path)

text = pytesseract.image_to_string(img, lang="nep")

print(text.strip())

पाँच वास्तविक लाइन। बिस्तारै पढ्नुहोस्:

  • Image.open(...) ले डिस्कबाट छवि फाइल लोड गर्छ।
  • pytesseract.image_to_string(...) कल हो — यसले छविलाई Tesseract मा पठाउँछ र पहिचान गरिएको पाठ फिर्ता दिन्छ।
  • lang="nep" ले Tesseract लाई नेपाली भाषा प्याक प्रयोग गर्न भन्छ। पूर्वनिर्धारित अंग्रेजी हुनेछ, र देवनागरीमा खराब गर्थ्यो।
  • text.strip() ले नतिजाबाट पुच्छरको खाली ठाउँ काट्छ।

data/signboard.jpg मा देवनागरी साइनको सफा फोटो राख्नुहोस् र चलाउनुहोस्। पहिलो पटक चल्दा जादू जस्तो लाग्छ। होइन। यो अरूले तालिम दिएको मोडेल हो, अरूले लेखेको पुस्तकालयले लोड गरेको, र तपाईंले लेखेका पाँच लाइनले बोलाएको। कामको आकार ठ्याक्कै यही हो।

अझ उपयोगी संस्करण

कच्चा आउटपुट ठीक छ। सामान्य कुराहरू सम्हाल्ने सानो कार्यक्रम — फाइल नभेटिएको, भाषा प्याक छुटेको — झन् राम्रो हुन्छ:

import sys
from pathlib import Path
from PIL import Image
import pytesseract


def read_devanagari(image_path: str) -> str:
    path = Path(image_path)
    if not path.exists():
        raise FileNotFoundError(f"No image at {image_path}")

    img = Image.open(path)
    text = pytesseract.image_to_string(img, lang="nep")
    return text.strip()


if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python ocr.py <path-to-image>")
        sys.exit(1)

    print(read_devanagari(sys.argv[1]))

ocr.py मा बचत गर्नुहोस्। टर्मिनलबाट चलाउनुहोस्:

python ocr.py data/signboard.jpg

तपाईंसँग अब सानो आदेश-लाइन औजार छ। साथीलाई स्क्रिप्ट दिनुहोस्, र तिनले आफ्नो टर्मिनलबाट छविमा OCR गर्न सक्छन् — Tesseract स्थापना गरेर। Course 05 मा वेब पृष्ठमा बेर्नुहोस्, र ब्राउजर भएको जुनसुकैले उही गर्न सक्छ।

OCR विफल हुँदा (र हुनेछ)

सबैभन्दा सामान्य निराशाहरूको छोटो परिचय:

  • धमिलो वा बाङ्गो फोटो। Tesseract खराब इनपुटमा भङ्गुर छ। पाठमा कसिलो क्रप गर्नुहोस्, क्यामेरा सीधा समाउनुहोस्, राम्रो उज्यालोमा खिच्नुहोस्। पूर्व-प्रशोधन — ग्रेस्केलमा बदल्ने, कन्ट्रास्ट बढाउने, सीधा गर्ने — ले धेरै कुरा बचाउन सक्छ। Pillow पुस्तकालयले यी सबै तीन-तीन लाइनमा गर्न सक्छ, र Course 02 मा हामी फेरि हेर्नेछौँ।
  • हस्तलिपि। Tesseract प्राथमिक रूपमा छापिएको पाठका लागि बनाइएको हो। हस्तलिपि धेरै गाह्रो हुन्छ। हस्तलिखित देवनागरीका लागि, तपाईंले प्रयोगयोग्य तर मैलो आउटपुट पाउनुहुनेछ — र ट्रान्सफरमर-आधारित दृष्टि मोडेल (जस्तै, दृष्टि-सक्षम Claude लाई छवि सिधै पढ्न भन्ने) ले प्रायः राम्रो गर्छ।
  • मिश्रित लिपि। नेपाली र अंग्रेजी मिसिएको पृष्ठले nep मात्र सोध्दा Tesseract अल्मलिन्छ। lang="nep+eng" पास गर्नुहोस् र दुवै कोसिस गर्छ।
  • गलत भाषा प्याक। आउटपुट बकवास देवनागरी जस्तो देखिन्छ भने, तपाईंले lang="eng" ले नेपाली छविमा Tesseract चलाएको हुनसक्छ, वा nep डाटा छुटेको। tesseract --list-langs ले फेरि जाँच्नुहोस्।

तुलना: स्थानीय बनाम होस्ट गरिएको, सँगसँगै

तपाईंले अब दुवै छेउ गर्नुभयो:

होस्ट गरिएको API (Claude)स्थानीय मोडेल (Tesseract)
सेटअपAPI की, एउटा pip installप्रणाली स्थापना, भाषा प्याक, Python र्‍यापर
लागतप्रति कल पैसास्थापनापछि निःशुल्क
गति1-3 सेकेन्ड (नेटवर्क राउन्ड ट्रिप)मिलिसेकेन्ड, तपाईंको हार्डवेयरमा
गोपनीयताडाटा मेसिनबाट जान्छडाटा मेसिनमै बस्छ
गुणस्तरअत्याधुनिकयुग र कार्यका लागि बलियो
इन्टरनेट चाहिनेहोहोइन

विजेता छैन। प्रति समस्या तपाईंले गर्ने छनोट छ। NEPSE सारांश औजार: होस्ट गरिएको, किनभने डाटा सार्वजनिक छ र तपाईंलाई धाराप्रवाह चाहिन्छ। मेडिकल-रेकर्ड OCR प्रणाली: स्थानीय, किनभने डाटा गोपनीयता असम्झौतायोग्य छ।

“एआई निर्माता” को मानसिक आकार त्यो व्यक्ति हो जसले हरेक नयाँ समस्याका लागि यी दुईबीच धाराप्रवाह छनोट गर्छ — र छनोट बदलिँदा डाटालाई एकबाट अर्कोमा सार्न सक्छ।

आफ्नो बुझाइ जाँच्नुहोस्

Quick check

तपाईंले देवनागरी पाठको सफा फोटोमा `pytesseract.image_to_string(img, lang='nep')` चलाउनुभयो तर अंग्रेजी जस्तो बकवास — स्पष्ट शब्दबिनाको ल्याटिन अक्षर — फिर्ता पाउनुभयो। सम्भावित कारण के हो?

Quick check

टिकापुरको एक क्लिनिकले फोटो खिचिएको चिकित्सकीय नोटबाट बिरामीको नाम निकाल्ने प्रणाली बनाउन सहयोग माग्छ — झन्डै सबै हस्तलिखित देवनागरी। यो खण्डका तैनाती छनोटहरूमध्ये कुन तिनको बाधासँग सबैभन्दा मेल खान्छ?

अब के आउँछ

तपाईंले होस्ट गरिएको मोडेल बोलाउनुभयो र स्थानीय मोडेल चलाउनुभयो। तपाईं डाटा राख्न, सार्न, चार्ट बनाउन, साझा गर्न, र डिबग गर्न सक्नुहुन्छ। उपकरण-पेटी पूर्ण छ। अध्याय 6 ले यो पूरै ट्र्याकको अन्तिम, सबैभन्दा गाह्रो, सबैभन्दा कम मूल्यबद्ध काम गर्न भन्छ: एउटा सानो विचार लिनुहोस् — अध्याय 1, खण्ड 1 मा तपाईंले लेख्नुभएको समस्या — र सक्नुहोस्। सुरुदेखि अन्त्यसम्म बनाउनुहोस्। लेख्नुहोस्। साझा गर्नुहोस्। पहिलो सम्पन्न परियोजना अर्को दश अधुरा परियोजनाभन्दा बढी मूल्यवान् हुन्छ।