हाल ही में,
एकीकृत राज्य रजिस्टर ऑफ साइट्स का पोर्टल खोला
गया था। सब कुछ के अलावा, मुझे एक बहुत कमजोर कैप्चा पसंद आया, और मैंने इसे दूर करने का फैसला किया।
मैं पहले ही ऐसी चीजों से निपट चुका हूं, हालांकि, इस तरह के पैमाने पर नहीं। यदि आप केवल GNU /
बैश ,
इमेजमेगिक और
टेसरेक्ट -क्रोक का उपयोग करके 57% की मान्यता दक्षता प्राप्त करने में रुचि रखते हैं, तो बिल्ली में आपका स्वागत है।
निम्नलिखित निर्देशों को आसानी से किसी भी अन्य समान कमजोर कैप्चा के लिए संशोधित किया जा सकता है।
प्रविष्टि
कैप्चा पिक्चर्स की मान्यता को स्वयं दो चरणों में विभाजित किया जा सकता है:
- चित्र की तैयारी। इसके लिए मैं इमेजमैजिक का इस्तेमाल करूंगा
- चरित्र पहचान। इस मामले में, मैंने टेसरैक्ट को चुना, लेकिन सरल कैप्चा (कोई भी मोड़ नहीं, कोई ब्रेक नहीं) पर आप उदाहरण के लिए ऑक्रेड का उपयोग कर सकते हैं।
चित्र प्राप्त करना और परिणाम भेजना आसानी से कर्ल (या विग का उपयोग करके किया जाता है, लेकिन मैंने इससे दोस्ती नहीं की)।
छवि की तैयारी
विशेष प्रभाव बनाने के लिए ImageMagick में एक अंतर्निहित Fx भाषा है। चूँकि रजिस्ट्री कैप्चा पर अक्षर हमेशा काले होते हैं, लिपि का सबसे सरल संस्करण जो हर चीज को हटाता है वह काला नहीं होता है:
convert file.png -colorspace cmyk -fx 'k * (k >= 1.0)' file.ppm
निष्पादन एक सेकंड का दसवां हिस्सा लेता है, जो स्वीकार्य है। लेकिन तस्वीर की गुणवत्ता नहीं है, इसलिए आपको इसके माध्यम से फिर से जाने की आवश्यकता है। आप इस तथ्य पर भरोसा कर सकते हैं कि यदि पत्र को एक लाइन से छुआ गया था, तो इस स्थान पर दो विपरीत पक्षों से एक बार में छायांकित पिक्सेल-पड़ोसी होना चाहिए:
convert file.ppm -colorspace cmyk -fx 'k || (p[-1].k && p[+1].k) || (p[0,-1].k && p[0,+1].k)' out.ppm
हम एक और आधे सेकंड के लिए क्या बलिदान कर रहे हैं। जैसा कि बाद में पता चला, इससे सफलता की दर 1% से 22% (100 नियंत्रण चित्रों में) बढ़ जाएगी।
चरित्र पहचान
यह अभी भी आसान है। हम तस्वीर पर जहर का विष डालते हैं, हम फ़ाइल से परिणाम लेते हैं। यदि वांछित है, तो आप इसे अलग भाषा के रूप में कैप्चा फ़ॉन्ट सिखा सकते हैं, लेकिन खेल मोमबत्ती के लायक नहीं है।
tesseract out.ppm result -psm 8 nobatch digits 2>/dev/null res=$(cat result.txt | sed -e 's/[^0-9]//g')
क्षेत्र परीक्षण
जैसा कि मैंने ऊपर कहा, इस संयोजन ने 100 परीक्षण छवियों में से 22 को सही उत्तर दिया। लेकिन परीक्षण दिलचस्प नहीं हैं, और मैंने वास्तविक परिस्थितियों में काम की गति की जांच करने का फैसला किया।
लॉन्च लाइन time bash tt.sh | tee -a log.txt
परिणाम, सांख्यिकी
स्क्रिप्ट का उपरोक्त सेट रजिस्ट्री में ya.ru की उपस्थिति के लिए 41 सफल जाँच करता है। इस पर कुछ आँकड़े:
: 41 : 218 : 5 4 (5m4.178s) : 19
सुधार करने के तरीके
- आप एक तस्वीर को कई बार प्राप्त कर सकते हैं, एक पाठ के साथ अलग-अलग कैप्चा प्राप्त कर सकते हैं। इसका उपयोग किया जा सकता है।
- सामान्य और सिद्ध तरीकों का उपयोग करके, आप बहुत अच्छी दक्षता प्राप्त कर सकते हैं।
- या बस कैप्चा फ़ॉन्ट को Tesseract सिखाएं। फ़ॉन्ट स्वयं एरियल के समान है, लेकिन टेसरैक्ट लगातार 3 और 8, 1 और 7 को भ्रमित करता है।
- सूचना पुनर्प्राप्ति का अनुकूलन करें: स्क्रिप्ट का समय का एक महत्वपूर्ण हिस्सा सर्वर से पृष्ठों और चित्रों को प्राप्त करने पर खर्च किया जाता है।