अध्याय ५ · खण्ड 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 मा तपाईंले लेख्नुभएको समस्या — र सक्नुहोस्। सुरुदेखि अन्त्यसम्म बनाउनुहोस्। लेख्नुहोस्। साझा गर्नुहोस्। पहिलो सम्पन्न परियोजना अर्को दश अधुरा परियोजनाभन्दा बढी मूल्यवान् हुन्छ।