देवनागरी OCR
या धाग्याचा इवलासा हेतू असा की ‘देवनागरी OCR’ ह्या प्रकाराचा कुणाला प्रत्यक्ष अनुभव असेल तर तो किती बरा किंवा वाईट आहे ते कळावं.
OCR चा अर्थ Optical Character Recognition. म्हणजे समजा मराठी वर्तमानपत्रातल्या एखाद्या लेखाचा फोटो काढून कंप्यूटरमध्ये टाकला तर OCR सॉफ्टवेअरला त्या फोटोकडे पाहून त्यातले शब्द आणि अक्षरं यांची फोड करता यायला हवी, आणि त्या लेखाची text file तयार करता यायला हवी. अशा प्रकारचं तंत्रज्ञान रोमन लिपीसाठी कित्येक वर्षांपासून उपलब्ध आहे, पण देवनागरीत आहे का आणि असल्यास किती चांगलं काम करतं हे मला ठाऊक नाही. (संपादकीण बाईंनाही ह्या विषयात रस आहे.) इथे ‘चांगलं’ ह्याचा निकष असा की बाहेर येणाऱ्या text file मध्ये चुका खूप कमी असायला हव्यात.
ह्या प्रांतातली नेहमीची अडचण अशी की देवनागरी अक्षरं रोमन लिपीपेक्षा गुंतागुंतीची असल्यामुळे (आणि अर्थात जोडाक्षरं असल्यामुळे) ती अोळखायला कंप्यूटरला ‘शिकवणं’ अवघड जातं. हस्ताक्षर अोळखणं तर सोडाच पण छापील मजकूर अोळखणंही तितकंसं सोपं नसतं. पण जर हे करता आलं तर खूप मोठी सोय होईल, आणि digital humanities ही जी ज्ञानशाखा आहे तिच्यात मराठी-हिंदीला शिरता येईल.
पण ते एक असो. वर म्हटल्याप्रमाणे अशासारखा प्रकार कुणी प्रत्यक्ष वापरून पाहिलेला असेल तर कृपया आपला अनुभव सांगावा.
ओसीआरचा अल्गोरिदम नेमका कसा
ओसीआरचा अल्गोरिदम नेमका कसा असतो? C हे अक्षर Cच आहे, O किंवा E नाही हे संगणकाला कसं पटवतात?
ढोबळ आयड्या खालीलप्रमाणे.
अगोदर जी टार्गेट लिपी आहे त्यातले ऑल पॉसिबल ग्लिफ्स/सिम्बॉल्स जे आहेत त्यांची एक लिस्ट बनवायची. म्हणजे अ ते ज्ञ, प्रत्येकाची सुटी बाराखडी आणि शिवाय जोडाक्षरे व त्यांचीही बाराखडी. या प्रत्येक सिम्बॉलचे व्हॅरियंट्स फीड करायचे, उदा. अ हे अक्षर चारपाच फॉण्टांत लिहिलेले वापरायचे.
डेटासेटची फीचर्स खालीलप्रमाणे.
वरीलप्रमाणे प्रत्येक सिम्बॉलची इमेज आणि त्याचे लेबल. (अ आ ई इ.इ.) ही एक रो झाली. इमेज म्ह. त्यातले अनेक फीचर्स वगैरे. उदा. अक्षर अ साठी.
फीचर १ फीचर २..... फीचर न लेबल
१ ०-------------- १ अ
किंवा १-० च्या ऐवजी काही न्युमरिक व्हॅल्यूज ऑब्टेन्ड आफ्टर इमेज प्रोसेसिंग.
प्रत्येक सिम्बॉलसाठीची अशी रो असते. असे सगळे करून मग तो डेटासेट सजवायचा. सजवल्यावर त्यावर न्यूरल नेटवर्कसारखे अल्गोरिदम वापरून ते नेटवर्क ट्रेन करायचे- की ही फीचर्स असतील, या फीचर्सची व्हॅल्यू तमुक रेंजमध्ये असेल तर मोस्ट लाईकलि लेबल हे असेल वगैरे. क्रॉसव्हॅलिडेशन वगैरे टेक्निक्स वापरून नेटवर्क अधिकाधिक रिफाईन करत जायचे.
एकदा या ट्रेनिंग डेटासेटवरती नेटवर्क ट्रेन झाले पुरेसे की मग नये टेस्ट डेटा पे उसकी टेस्ट घ्यायची. ट्रेनिंग डेटासेट जितका वैविध्यपूर्ण तितकीच टेस्ट डेटावर त्याची अॅक्युरसी उत्तम.
लिपी कुठलीही असो, ओसीआरचा अल्गोरिदम सामान्यत: असाच असतो.
अगोदर जी टार्गेट लिपी आहे
अगोदर जी टार्गेट लिपी आहे त्यातले ऑल पॉसिबल ग्लिफ्स/सिम्बॉल्स जे आहेत त्यांची एक लिस्ट बनवायची. म्हणजे अ ते ज्ञ, प्रत्येकाची सुटी बाराखडी आणि शिवाय जोडाक्षरे व त्यांचीही बाराखडी. या प्रत्येक सिम्बॉलचे व्हॅरियंट्स फीड करायचे, उदा. अ हे अक्षर चारपाच फॉण्टांत लिहिलेले वापरायचे.
याऐवजी उलटा प्रकार केला तर? प्रत्येक अक्षर डिफाईन करणारे "किमान गुणधर्म" शोधून काढायचे. म्हणजे, मिनिमम ठिपके वापरून ते अक्षर डिफाईन करायचं.
उदा० "न" चे किमान गुणधर्म --> ··: (शिरोरेषा प्रत्येक अक्षरावर असतेच, त्यामुळे त्याची डेफिनिशन नाही केली तरी चालावं.) हा पॅटर्न पाहिला की अल्गोरिदमने हा 'न' आहे असं ओळखावं.
मग फॉन्ट कोणताही असो (किंवा मग अगदी हस्ताक्षर असो) - हे गुणधर्म तेच राहणार. हे 'व्हेरियंट - इन्डिपेन्डन्ट' ओसीआर होईल. माणसाचा मेंदूही अक्षर असंच ओळखत असावा.
माणसाचा मेंदूही अक्षर असंच
माणसाचा मेंदूही अक्षर असंच ओळखत असावा.
कदाचित तसेच ओळखत असावा.
पत्रिका छापायच्या निमित्ताने मि कन्नड टायपिंग शिकलो. शिकलो म्हनजे श्रीलिपीला ज्या किबोर्ड लेआऊटने देवनागरि होते त्याच लेआऊटने कन्नड होते. फॉन्ट चेंज करायचा फक्त्. एवढ्याने संपले नाही. ५० टक्के बरोबर असायचं. करेक्ट करताना कन्नड येणारा सांगायचा "ते आ करा अ नको" मग त्यातला आ कोणता ते सरावाने लक्शात येउ लागले. वेलांटि म्हणजे अक्षराला नुसता काना देऊन एक टोपी बसवणे नव्हे. कन्नड अक्षरांचा कर्वच (स्वरुप्) बदलतो. जोडाक्शरे पण तसेच. मराठिप्रमाणे नाही होत. (अर्थात हे सर्व भाष्हेनुसार नाहीच्. मला ते सर्व चित्रेच वाटायची. वळणे, ठिपके, रिपिटेशन अशा ग्राफिक मेथडने हे टायपिंग शिकत गेलो.)
अगदिच एखादे कॅरेक्टर जमलेच नाहि तर ते कोरलमध्ये क्रियेट करुन सीमलेस घुसवण्याचा प्रकार पण करुन पाह्यला. ;)
कधी कधी वाटते पेंटर ज्या पध्दतीने अक्ष्हरे घटवतात तिच मेथड वापरावी. किंवा टायपोग्राफी मेथडने.

साधारण कल्पना
बादवे - ओसीआरचा अल्गोरिदम नेमका कसा असतो? C हे अक्षर Cच आहे, O किंवा E नाही हे संगणकाला कसं पटवतात?
किंवा देवनागरीसाठी -
म आणि र या अक्षरांतला फरक आल्गोरिदमला कसा समजतो?
काही अक्षरांत उभी रेघ असते, काही अक्षरांत नसते. मी रँडम फॉरेस्टचा उल्लेख खाली, आधी एका प्रतिसादात केला आहे. उदाहरणार्थ, रँडम फॉरेस्ट आल्गोरिदम (मूळ आल्गोरदिम - डिसिजन ट्री) अक्षरांचे दोन गट करेल, उभी रेष असणारे आणि नसणारे. र, ड, उ, ऊ आणि कदाचित ळ या उभी रेष नसणाऱ्या गटात येतील. (उ या अक्षराचं वर्गीकरण टंकानुसार बदलू शकतं.) तिरकी रेष असणाऱ्यांचा दुसरा गट करेल, यात ष आणि ब येतील. अक्षरात उभी रेष असणारा गट बनवून, त्यात क, त, ख, अशी बहुसंख्य अक्षरं येतील. प्रत्येक वेळेस काही 'फीचर' - म्हणजे उभी, आडवी, तिरपी रेष असं काही - आल्गोरिदम स्वतः तयार करेल. हे तयार करण्यासाठी मुळात त्याला खायला घातलेली विदा वापरली जाईल आणि आपल्याला असे काही 'फीचर' वापरायचे असं सांगावं लागणार नाही.
कोणतं फीचर आणि किती प्रमाणात वापरायचं, ही गोष्टही रँडम फॉरेस्ट (मूळ आल्गोरदिम - डिसिजन ट्री) ठरवेल. (ज्यांना या विषयाच्या पायाभूत माहितीमध्ये रस आहे त्यांनी ते वाचून पाहा. गंंमतीशीर माहिती आहे. नाही तर मला वेळ मिळाला की मी तपशिलात लिहेन.)
न्यूरल नेटवर्क आणि रँडम फॉरेस्ट यांतला फरक -
न्यूरल नेटवर्क हेसुद्धा जंगलासारखेच 'फीचर्स' ठरवेल. पण त्यात फरक असा की गुंतागुंतीच्या दुसऱ्या पातळीवर, आल्गोरिदम फीचरांचा मिलाप करेल. म्हणजे आडवी रेष आणि उभी रेष आहे का, यात म, न, त अशी अक्षरं मिळतील, पण ल, य मिळणार नाहीत. या प्रकाराला 'फीचर इंजिनियरींग' म्हणतात. न्यूरल नेटवर्क हा प्रकार आपण होऊन करतात; इतर बऱ्याच आल्गोरिदमांमध्ये हा प्रकार आपल्याला करावा लागतो. रँडम फॉरेस्टला 'फीचर इंजिनियरींग' करता येणार नाही. पण त्यामुळे उत्तरं कितपत अचूक येतील, याबद्दल मला शंका आहे. (म्हणून मला तो प्रयोग करून बघायचा आहे.)
शरद यांनी खाली एका ओसीआरचं आउटपुट दाखवलं आहेत. ते वाचलं तर आल्गोरिदम ब आणि व यांतला फरक ओळखण्यात गफलत करतंय, हे दिसतंय. ही गफलत का होत असेल, याचा अंदाज, माणसांना स्पष्टीकरणाशिवायच येतो. अशीच गल्लत प आणि ष या अक्षरांतही होऊ शकते.
माझ्या मते यासाठी उत्तर म्हणजे आणखी विदा आल्गोरिदमला खायला घालायची. जेवढं जास्त खायला घालू तेवढं आल्गोरिदम हे बालक पुष्ट होईल.
आणखी एक कल्पना म्हणजे, आल्गोरिदमला शब्द मिळाला की शब्दकोशात तो शब्द आहे का, हे तपासून बघायचं. समजा, 'वघायचं' (४५% शक्यता) आणि 'बघायचं' (३५% शक्यता) असे दोन शब्द एकाच शब्दासाठी आल्गोदिरमनं दिले, तर शब्दकोश सांगू शकेल की 'वघायचं' हा शब्द अस्तित्वात नाही. मग आल्गोरिदमचं आऊटपुट 'बघायचं' हा शब्द असेल.
यात सुरुवातीला चित्रांवर शार्पन आणि ब्लर फिल्टर वापरले जातात; त्याबद्दल लिहिलेलं नाही. (ते नंतर प्रतिसाद संपादित करून लिहेन.)
ही सगळी माहिती कोरडी, काठावरून दिलेली आहे. आशा आहे की लवकरच मला अक्षरांची विदा बनवून त्यात हात माखवून घेता येतील.
" आणखी भिंतचर्चा खफवर चालवा "
" आणखी भिंतचर्चा खफवर चालवा " असा शेरा येण्या अगोदर लिहितो - तुम्ही भिंत केवळ चालवली नसून नांदवली आहे.
आडकित्ता गायब होण्याचं कारण त्यांना मोठे कंत्राट मिळाले काय नट्स क्रॅकायचे? उगाच वेळ घालवताहेत. इथे दात कुणाला उरलेत? नट्सची पावडरच करावी त्यांनी. उदा० आस्तिकनास्तिकइकॅानमीपावडर धागा पाहा.
( वै लेखकाचा धागा वाया घालवतोय माफ करा)
ISI कलकत्ता
मागच्या दिवाळीत आयएसाय कलकत्त्याला जाऊन आलो होतो. तिथे सलग दोन दिवस, सलग १२-१२ तास पीएचडी स्कॉलर्सची व्याख्याने ऐकली. आयएसआय कलकत्त्यामध्ये पॅटर्न रिकग्निशन, ऑप्टिकल कॅरेक्टर रिकग्निशन, मोशन प्रेडिक्शन इत्यादींवर बरंच काम चालू आहे.
तर, तुमचा धागा वाचून एक प्रोफेसर आणि त्यांच्या दोन पट्टशिष्यांची आठवण झाली. त्यांचं मुख्य काम हे फॉर्म फिलींग मध्ये लोक जी माहिती भरतात ती संगणकीकृत करण्यासाठी ओसीआर विकसित करण्यासाठी ओसीआर डीझाईन करणं. त्यांनी सगळ्याच भारतीय भाषांचं, एक साधारण ओसीआर करायचं ठरवलेलं आहे. त्यात बंगालीमध्ये त्यांना थोडंसं यश आलेलं दिसतही होतं. बंगालीत त्यांनी 'मुंबई'लिहून मग ते युनिकोड बांगला टेक्स्ट मध्ये रुपांतरित करुन दाखवलं. पण नंतर स्क्रीन ऑफ करून त्या प्रोफेसरनी जे सांगितलं ते ह्याप्रमाणे:
" भारतीय भाषा ह्या अतिशय संकुचित (कॉम्पॅक्ट) असल्याने, आणि परत मैलामैलाला लिपी बदलत असल्याने त्यांचा एक साचेबद्ध ओसीआर सांगाडा तयार करणं फार जिकीरीचं काम आहे. शिवाय आपल्या भाषा ह्या इंग्रजीप्रमाणे रेषीय नाहीत. इकार, उकार हे त्यातली गुंतागुंत अधिकच वाढवतात. प्रत्येक अक्षराच्या बाराखडीतलं प्रत्येक रुप हे वेगवेगळं मानलं, तर संपूर्ण प्रक्रिया अत्यंत जिकीरीची आणि वेळखाऊ होते. ते नाही, तर चुकीचं परिमाण खूप वाढतं. ह्या सगळ्या अडथळ्यांवर मात करून एक चांगलं ओसीआर बाजारात आणायला आणखी दहा वर्षं तरी नक्कीच लागतील. आम्ही बांगला मध्ये जे केलेलं आहे ते अजूनही जोडाक्षरांपर्यंत नेता आलेलं नाहीये."
तेव्हा त्यांना फक्त सोपे सोपे आणि सुटेच शब्द रुपांतरित करता येत होते. तेव्हा मनात चमकून गेलेलं की हे कधी आपल्याला मराठीसाठी किमान सुरू तरी करता येईल का? मग एकाएकी इकडची सगळीच परिस्थिती झर्रकन डोळ्यांसमोरून फिरून गेली आणि मग - स्वाक्षरी पहा. :(
मराठी OCR १)अॅप नाही सापडले
मराठी OCR १)अॅप नाही सापडले अजून.
२) काही ठिकाणी सॅाफ्टवेर विकत घ्यायला /डाउनलोड करायला सांगतात.
३) Online करणारी http://www.newocr.com/
ही वेबसाइट वापरून ऐसिवरच्याच लेखनाचा स्क्रीन शॅाट वापरून केले मराठी OCR
//
२९ एप्रिल
जन्मदिवस: गणितच्छा, डॉक्टर व विनोदी
लेखकजॉन आरबथनॉट (१६६७), चित्रकार
राजारक्विर्मा (१८४८), गणितज्ञ,
(१८५४), ग्रीक कवीकॅव्हण्फी (१८६३), ४०
पेटंटे घेणारे आणि २०० शोधनावाबर असणारे
वैज्ञानिकशंका आबाजी भिसे (१८६७),
समस्थानिकांबद्दल संशोधन कांण्यासाठो
नोबेलमिळव्णप्स हँएल्ह उरे (१८९३), जाझ
पियानोवादकव //
त्यांच्याकडे सॅाफ्टवेर असावे पण ओनलाइनवर पूर्ण सर्विस देत नसतील. पेपरातील,खफ वरील फोटोचे आले नाही.
गूगलचा देवनागरी ओसीआर
गूगलने देवनागरी लिपीतील मजकूर ओसीआरद्वारे रूपांतरित करण्याची सोय गूगलड्राइव्हवर उपलब्ध करून दिलेली आहे. ती वापरण्याची प्रक्रिया खालीलप्रमाणे
०१. मराठी मजकुराची प्रतिमा असलेली लहान (साधारणपणे १ एमबीपेक्षा लहान) आकारमानाची (पीडीएफ किंवा जेपीजी) धारिका (फाईल) आपल्या गूगलड्राइव्हर चढवावी.
०२. ती धारिका आपल्या यादीत दिसू लागल्यावर राइटक्लिकद्वारे गूगलडॉकमध्ये उघडण्याचा पर्याय (ओपन विथ गूगलडॉक) वापरून गूगलडॉकमध्ये रूपांतरित करावी.
०३. रूपांतर व्हायला काही वेळ जातो. त्यानंतर मराठी मजकूर धारिकेत टेक्स्ट स्वरूपात दिसू लागतो.
मी करून पाहिलेल्या प्रयोगाचे फलित खाली दिलेल्या दुव्यांवर पाहता येईल. मी पुढील दुव्यावर उपलब्ध पीडीएफ धारिका त्यासाठी वापरली (https://drive.google.com/open?id=0B8m4NJu3L0B8elBFRTBqNWRWems)
ह्याचे फलित खालील दुव्यावर पाहता येईल.
https://docs.google.com/document/d/12z1egqJn8HEZPoof8M8jzj2QZkOXBmFus0O…
ह्यात सगळा मजकूर रूपांतरित झालेला नाही. पण बराचसा झालेला आहे.
मराठी विकिस्रोतावरही गूगलचा ओसीआर जोडलेला आहे. https://mr.wikisource.org/wiki/%E0%A4%85%E0%A4%A8%E0%A5%81%E0%A4%95%E0%… ह्या दुव्यावर लाल रंगात असलेल्या क्रमांकांची पाने ओसीआर न झालेली आहेत.
लोकसत्तेतील बातमी
देवनागरी हस्तलिखिताची संगणकीय प्रत -‘टीआयएफआर’मध्ये संशोधनास सुरुवात.
http://www.loksatta.com/mumbai-news/new-research-in-tiar-1533884/
हीण नको.
मला 'ईण' प्रत्ययान्त शब्दांमध्ये काही रस नाही. मी OCR बनवून तर त्यात असे शब्द बॅन करून टाकेन.