- 01सुरुवातको कारण “छनोट मात्रैमा समय बित्नु” हो
- 02संरचनाको सम्पूर्ण चित्र
- 03PDF लाई page अनुसारको image मा रूपान्तरण गर्ने
- 04निर्धारणको तर्क
- 05अंक दिने नियम “check मात्र” ले एकीकृत
- 06विषय अनुसार “गल्तीको unit” फेरिएको छ
- 07कार्यान्वयन वातावरण पार गर्ने संरचना बनाएको कारण
- 08गरेर महसुस भएको कुरा
- 09यस्ता व्यक्तिलाई उपयुक्त छ
- 10सारांश
नमस्ते, म まさきん हुँ।
हाम्रो घरमा धेरै बच्चाहरू छन्। प्रत्येकले गर्ने drill र सामग्री फरक छ। प्रिन्टको थुप्रोलाई हरेकपल्ट हातैले छनोट गर्नु, सानो तर बोझ थियो।
एकसाथ scan गरी, पछिको छनोट AIलाई सुम्पने। त्यस्तो संरचना बनाएर हेरें। यसपटक वास्तवमा प्रयोग गरिरहेको code र नियमसम्म, ठोस रूपमा देखाउँछु।
सुरुवातको कारण “छनोट मात्रैमा समय बित्नु” हो
सकिएको drill र प्रिन्ट, बच्चाको संख्या जति प्रकार हुन्छ। विषय पनि कक्षा पनि फरक-फरक। एकसाथ राख्दा, अन्तमा कुन कसको हो थाहा नहुने हुन्छ।
एक-एक पाना हातैले पल्टाई जाँच्नु, सरल काम हो तर समय लाग्छ। त्यसैले, यो “छनोट” भाग मात्र स्वचालित बनाउन सकिँदैन कि भनेर सोचें।
संरचनाको सम्पूर्ण चित्र
प्रक्रिया सरल छ। तलका 3 चरणमा बाँडिएको छ।
- सकिएको प्रिन्टलाई एकसाथ scan गरी, PDF बनाउने
- PDF लाई एक-एक page image मा रूपान्तरण गरी, AI लाई header वा layout को विशेषताबाट “कसको・कुन विषयको” प्रिन्ट हो निर्धारण गराउने
- निर्धारण परिणामको आधारमा, बच्चा अनुसार・विषय अनुसारको tool मा प्रतिबिम्बित गर्ने
महत्वपूर्ण कुरा, scan गर्ने बेलामा छनोटको बारे सोच्नु नपर्नु हो। एकसाथ पढेर, निर्णय पछि AIलाई सुम्पिन्छ।
PDF लाई page अनुसारको image मा रूपान्तरण गर्ने
Scan गरिएको PDF, त्यसै गरी AIलाई पढाउँदा पनि राम्रोसँग चिन्न नसक्न सक्छ। विशेष गरी हातले लेखिएको अंक दिइएको scan PDF, अक्षर layer नभएको मात्र image को समूह हुने धेरै भएकोले।
त्यसैले, पहिले PyMuPDF जो fitz हो ले page एक-एक PNG image मा रूपान्तरण गरिन्छ।
import fitz
doc = fitz.open("scan.pdf")
for i in range(doc.page_count):
pix = doc[i].get_pixmap(matrix=fitz.Matrix(2, 2)) # 2 गुणा resolution
pix.save(f"page_{i+1}.png")
Matrix(2, 2) ले resolution 2 गुणा बनाएपछि image बनाउँदा, AI ले अक्षर वा check box पढ्ने precision बढ्छ। हातले लेखिएको अंक विशेष गरी, resolution कम भएमा छुट्ने धेरै हुन्छ।
सजिलै अलमलिने खतरा: coordinate को unit
Check box मात्र zoom गरी जाँच गर्न चाहँदा, get_pixmap मा clip argument ले क्षेत्र तोक्न सकिन्छ। यहाँ एउटा जालो छ। clip को coordinate PDF को point coordinate जो मौलिक page आकार हो मा तोक्ने कुरा हो, ठूलो बनाएपछिको pixel coordinate होइन।
# 2 गुणा・4 गुणा zoom गरे पनि, clip को अंक page को वास्तविक आकार A4 भए लगभग 590×836pt मा नै तोक्ने
pix = doc[i].get_pixmap(matrix=fitz.Matrix(4, 4), clip=fitz.Rect(0, 140, 589, 600))
गुणा दिएकोले clip को अंकसम्म ठूलो बनाइदिँदा, क्षेत्र image बाहिर गएर खाली हुन्छ। यहाँ मिसाएमा “किन हो crop गरेको image सफा सेतो” भन्ने घटनामा फस्छ, त्यसैले पहिले नै थाहा पाएमा समय बचत हुन्छ।
निर्धारणको तर्क
AI लाई दिइरहेको निर्देशन, सामान्यीकृत गरी देखाउँछु।
तल scan गरिएको अध्ययन प्रिन्टको image छ।
तलका संकेतको आधारमा, कुन बच्चा・कुन विषयको प्रिन्ट हो निर्धारण गर्नुहोस्।
- page को माथिल्लो भागको logo वा शीर्षकको design
- रेखा वा layout को ढाँचा माथी box को आकार, line को फासला आदि
- लेखिएको unit नाम वा प्रश्नको ढाँचा
- नाम स्तम्भमा लेखिएको नाम
निर्धारण परिणाम "बच्चा ID" "विषय" "unit" गरी 3 विषयमा फर्काउनुहोस्।
निर्णय गर्न नसकिएमा "थाहा छैन" भनेर जवाफ दिनुहोस्, जबर्जस्ती निर्णय नगर्नुहोस्।
वास्तविक छनोटमा, शीर्षकको शब्द・layout को विशेषता・नाम स्तम्भ यी 3 मिलाएको “पहिचान तालिका” पहिले बनाइराखी, AI लाई त्यो तालिकासँग तुलना गराउने ढाँचामा गरिएको छ। उदाहरणका लागि “kanji लेखाइ drill मा, माथि दायाँतिर कक्षा नाम परेको” र “गणना drill मा, प्रत्येक प्रश्नको तल-बायाँतिर सानो प्रश्न प्रकारको संकेत छापिएको” जस्ता कुरा, देखावट मात्रैले लगभग स्पष्ट छुट्याउन सकिन्छ। तालिका बनाइराखेकोले, AI को निर्धारण नबदलिने भयो।
छनोटको श्रम संरचनाले घटाउने सोच, प्रिन्ट बाहेक पनि प्रयोग गर्न सकिन्छ होला। बेवास्ता गर्ने बानी हुने mobile रेट plan को पुनरावलोकन पनि, त्यस्तै कुरा हो जस्तो लाग्छ।
थिच्दा राकुतेनको लगइन पेज खुल्छ। लगइन गरेपछि क्याम्पेनको विवरण देखिन्छ।
अंक दिने नियम “check मात्र” ले एकीकृत
धेरै बच्चाको सामग्री सम्हाल्दा, अर्को एउटा तय गरेको कुरा छ। अंक दिने मापदण्डलाई, बच्चा जुनसुकै भए पनि एकीकृत गर्ने कुरा हो।
ठोस रूपमा, प्रत्येक प्रश्नको बायाँ वा माथि-बायाँ मा भएको check box भरिएको छ कि छैन मात्रैलाई, सही-गलत निर्णयको आधार बनाइएको छ।
- Check box भरिएको → गल्ती दोहोर्याउनुपर्ने
- Check box सेतै रहेको → सही
- जवाफ नजिकैको रातो गोलो ◯ “सही पुष्टि गर्ने चिन्ह” हो, गलतको चिन्ह होइन
- रातो कलमले फेरि लेखिएको जवाफ अभिभावकको सुधार हो, बच्चाको जवाफ होइन। रातो अक्षर भए-नभएले सही-गलत निर्णय नगर्ने
अक्षरको सफाइ वा rubber ले सुधारेको छाप निर्णयमा समावेश गर्दिनँ। कारण सरल छ। Check परेको छ कि छैन यान्त्रिक रूपमा पढ्न सकिन्छ, तर हातले लेखेको सफाइलाई मूल्याङ्कनमा मिसाउँदा, तुरुन्तै मापदण्ड बदलिन्छ।
त्यसैले, “सही-गलतको निर्णय check box भरिएको आधारमा मात्र गर्ने, अक्षर राम्रो-नराम्रो वा रातो अक्षरको सुधार निर्णयको आधार नबनाउने” भन्ने नियम, सुरुमै AI लाई दिने निर्देशनको रूपमा स्पष्ट लेखिएको छ। यो एक वाक्य भए-नभएले, निर्धारणको बदलिने तरिका धेरै फरक पर्यो।
Check box छुट्ने रोक्ने ठूलो बनाउने तरिका
Scan image सम्पूर्णलाई सानो बनाएकै अवस्थामा हेर्दा, check box को भराइ थिचिएर नदेखिन सक्छ। “सबै लेखिएकोले सबै प्रश्न सही” भनी हतार नगर्न, तलको तरिका अनिवार्य रूपमा पछ्याइन्छ।
- Page सम्पूर्ण जाँच गरी, अनुमानित layout बुझ्ने
- Check box को स्तम्भ मात्र काटी ठूलो बनाउने अघि भनिएको
clipप्रयोग गर्ने - ठूलो बनाइएको image मा एक-एक प्रश्न, भरिएको छ कि छैन जाँच गर्ने
- निर्धारणमा अलमल हुने check box वा, मूलतः अक्षर पढ्न नसकिने ठाउँ, अनुमान नगरी मानिसलाई जाँच गराउने
Thumbnail आकारको सानो image मात्रैले निर्णय सक्दा, भराइ छुट्ने धेरै हुन्छ भनेर महसुस भएको छ।
विषय अनुसार “गल्तीको unit” फेरिएको छ
अर्को उपाय गरिएको बिन्दु छ। गल्ती रेकर्ड गर्ने unit लाई, विषय अनुसार फरक बनाउने कुरा हो।
| विषय | रेकर्ड गर्ने unit | ठोस उदाहरण |
|---|---|---|
| Kanji・hiragana अभ्यास | 1 अक्षर unit | ”校” “ぬ” जस्तै अक्षर आफैलाई key बनाउने |
| गणित | प्रश्नको pattern unit | ”unit रूपान्तरण” “बाँकी हुने भाग” “स्थान मान” जस्तै, प्रश्न प्रकारलाई key बनाउने |
| विज्ञान・सामाजिक | विषय+सानो item unit | ”विषय नाम:section:संख्या” जस्तै तह बनाएको key |
उही “गल्ती भएको प्रश्न” भए पनि, विषय अनुसार पुनरावलोकन गर्नुपर्ने दाना फरक हुन्छ। Kanji लाई unit unit मा जम्मा गरिदिँदा, अर्को पुनरावलोकनको precision घट्छ। यसको उल्टो, गणितको “pattern” लाई एक-एक प्रश्नको दानामा बनाइदिँदा, पुनरावलोकनको लक्ष्य संकुचित गर्न गाह्रो हुन्छ।
गणितको हकमा, प्रत्येक प्रश्नको कुनामा सानो प्रश्न प्रकार देखाउने संकेत छापिराखी, अंक परिणाम पढ्दा त्यो संकेत unit मा गल्ती जम्मा गरिन्छ। उही प्रकारको प्रश्न धेरै भएर एक प्रश्नमा पनि गल्ती भएमा, त्यो प्रकार सम्पूर्णलाई “पुनरावलोकन आवश्यक” को रूपमा व्यवहार गर्ने, सरल नियम हो।
विज्ञान・सामाजिकमा, प्रिन्टको अन्तिमको पुनरावलोकन कोर्नर उही दिनको मुख्य विषयभन्दा फरक unit बाट प्रश्न आउने भएकोले, प्रश्नको वाक्यलाई विषय सूचीसँग तुलना गरेपछि, कुन विषयको पुनरावलोकन हो निश्चित गरिन्छ। जबर्जस्ती निर्णय नगरी, अनिवार्य रूपमा तुलना गरेपछि रेकर्ड गर्ने भाग हो।
यो संरचना, मूलतः अर्को उद्देश्यले बनाइराखेको “गल्ती भएको विषय रेकर्ड गरी फेरि प्रश्न दिने” संरचना पुनरुपयोग गरिएको हो। उद्देश्य फेरिए पनि, आधारको तर्क त्यसै प्रयोग गर्न सकियो।
कार्यान्वयन वातावरण पार गर्ने संरचना बनाएको कारण
यो संरचना, AI सँगको कुराकानी आफैं cloud को sandbox वातावरणमा गरी, वास्तविक file operation र state व्यवस्थापन घरको computer तिरको resident process लाई सुम्पने, गरी 2 तह संरचना बनाइएको छ।
कारण सरल छ, अंक परिणाम save गर्ने database वा drill बनाउने script, घरको computer मा मात्र राखिएको भएकोले हो। Cloud तिरबाट घर तिरसम्म, सरल command पठाउने मात्रको हलुका client script मार्फत access गरिन्छ।
# उदाहरण: निर्धारण परिणामको आधारमा, गल्ती भएको key प्रतिबिम्बित गर्ने
python3 tools/kanji_drill/kanji_bridge_client.py mark-miss 校庭 音楽
python3 tools/kanji_drill/kanji_bridge_client.py mark-correct 教室
# प्रतिबिम्बित गर्नु अघि, घर तिरको resident process जीवित छ कि जाँच गर्ने
python3 tools/kanji_drill/kanji_bridge_client.py health
यो health command लाई प्रतिबिम्बित गर्नु अघि अनिवार्य रूपमा राखिन्छ। घर तिरको process बन्द भएको थाहा नपाई mark-miss पठाइरहँदा, command सफल भएजस्तो देखिने तर वास्तवमा केही प्रतिबिम्बित नभएको दुर्घटनामा पुग्ने भएकोले।
गरेर महसुस भएको कुरा
सबैभन्दा सहयोग भएको कुरा, “कसको・कुन विषयको” जाँच्ने काम हराएको हो। एकसाथ scan गरी, बाँकी परिणाम हेर्ने मात्र भयो।
तर, AI को निर्धारणलाई पूर्ण रूपमा विश्वास गरेको होइन। “थाहा छैन” भन्ने निर्धारण आएको भाग वा, check box को निर्धारणमा अलमल भएको भाग, अनिवार्य रूपमा आफ्नो आँखाले जाँच गरिन्छ। जबर्जस्ती छनोट गराउनुभन्दा, नबुझेको कुरा नबुझेको भनाउनु, परिणाममा विश्वसनीय संरचना बन्छ जस्तो लाग्छ।
यस्ता व्यक्तिलाई उपयुक्त छ
- धेरै बच्चाको प्रिन्ट वा drill मिसिएर, छनोटमा समय लाग्ने व्यक्ति
- अंक दिने मापदण्डलाई “देखावटको सफाइ” भन्दा, यान्त्रिक नियममा एकीकृत गर्न चाहने व्यक्ति
- PyMuPDF वा सानो bridge script बनाउने जति कार्यान्वयनमा अप्ठ्यारो नमानने व्यक्ति
सारांश
धेरै बच्चाको सामग्री, मात्रा बढ्दै जाँदा छनोटको बोझ ठूलो हुन्छ। Scan र AI द्वारा छनोट मिलाएर, त्यो भाग मात्र छुट्याई स्वचालित बनाउन सकियो।
Coordinate को unit वा अंक दिने मापदण्ड स्पष्ट लेखाइ जस्ता सानो उपाय, वास्तवमा precision स्थिर बनाउनमा सबैभन्दा असर पारेको जस्तो लाग्छ। संरचना बनाउने सोच्दा, यस्तो “निर्णय मापदण्ड आफैं तय गर्ने” काम सोचेभन्दा महत्वपूर्ण होला।
संरचना बनाएर घटाउन सकिने बोझ, प्रिन्टको छनोट मात्र होइन होला। अर्को पटक mobile शुल्कको plan लाई, उहीजस्तै पुनरावलोकन गर्ने सोचिरहेको छु।
थिच्दा राकुतेनको लगइन पेज खुल्छ। लगइन गरेपछि क्याम्पेनको विवरण देखिन्छ।
यस लेखमा सम्बद्ध विज्ञापन समावेश छ। यस साइटको लिङ्क मार्फत उत्पादन वा सेवाको लागि आवेदन दिनुभयो भने, हामीले साझेदार कम्पनीबाट प्रतिफल पाउन सक्छौं। साथै, सञ्चालक राकुतेन समूहको कर्मचारी हो र कर्मचारी सिफारिस कार्यक्रम मार्फत प्रतिफल पाउन सक्छ। लेखको सामग्री र मूल्याङ्कन विज्ञापन भए वा नभएको भन्दा फरक रूपमा सञ्चालकको वास्तविक अनुभव र अनुसन्धानमा आधारित रहेर तयार गरिएको हो, तर माथिको सम्बन्ध बुझेर पढ्नुहोला। विस्तृत जानकारीका लागि अस्वीकरण र सम्बद्ध लिङ्क सूचना हेर्नुहोस्। अस्वीकरण र सम्बद्ध लिङ्क सूचना
यस लेखमा मेसिन अनुवाद समावेश छ। आधिकारिक सर्तका लागि राकुतेन मोबाइलको आधिकारिक साइटको बहुभाषी पृष्ठ हेर्नुहोस्।
राकुतेन मोबाइलको सञ्चार क्षेत्र वा सिग्नल अवस्थाको बारेमा चिन्ता भएमा, आधिकारिक सिग्नल सुधार·अनुसन्धान अनुरोध फारम मार्फत सोध्न सकिन्छ।