वक्र और झुके पाठ पर OCR के अटकने का छिपा हुआ कारण
Based on: 2D Rotary Position Embedding for Scene Text Recognition with Transformers — Zobeir Raisi
अपने फोन को एक शैंपू की बोतल की ओर इशारा करें और वक्र के चारों ओर लिपटी हुई सामग्री सूची पढ़ने का प्रयास करें। आपकी आँखें इसे बिना सोचे कर लेती हैं: वे अक्षरों का पीछा करती हैं जैसे वे मुड़ते हैं, झुकते हैं और किनारे की ओर सिकुड़ते हैं। अधिकांश OCR मॉडल यह काम इतनी अच्छी तरह नहीं करते हैं, और एक नई प्रीप्रिंट इसके कारण का एक काफी विशिष्ट स्पष्टीकरण देती है: मॉडलों को कभी नहीं बताया गया था कि छवियों में दो आयाम होते हैं।
यह एक ऐसे सिस्टम के लिए अजीब लग सकता है जो तस्वीरों को प्रोसेस करने के लिए बनाया गया है। लेकिन एक बार जब आप इस स्पष्टीकरण को देख लेते हैं, तो यह उन "बिल्कुल सही" पलों में से एक है जिससे आपको आश्चर्य होता है कि यह इतनी देर तक अनदेखा कैसे रहा।

वास्तविक दुनिया के पाठ के लिए सीधी रेखाएँ एक खराब धारणा क्यों हैं
सीन टेक्स्ट रिकग्निशन (STR) वह विशिष्ट कार्य है जो साफ़ स्कैन के बजाय वास्तविक दुनिया की तस्वीर में मौजूद पाठ को पढ़ता है। स्ट्रीट साइन, प्रोडक्ट लेबल, लाइसेंस प्लेट, खराब रोशनी में ली गई रेस्तरां के मेनू की तस्वीरें। यह PDF या Word डॉक्यूमेंट पढ़ने से अलग समस्या है, क्योंकि पाठ स्वयं दुनिया के भौतिकी नियमों के कारण विकृत होता है: यह बोतलों के चारों ओर मुड़ता है, कोण से लिया जाता है, जब कोई कैमरे को संरेखित किए बिना साइन की तस्वीर लेता है तो यह झुक जाता है, और पर्सपेक्टिव के कारण लेंस से दूर वाले अक्षर खिंच जाते हैं।
आधुनिक STR सिस्टम ज्यादातर ट्रांसफॉर्मर (Transformers) पर आधारित हैं, जो बड़े भाषा मॉडल (large language models) के पीछे की वही आर्किटेक्चर है। एक एन्कोडर इमेज को देखता है और उसे छोटे पैचों की ग्रिड में तोड़ता है, फिर एक डिकोडर एक-एक करके अक्षरों को पढ़ता है, ठीक वैसे ही जैसे एक भाषा मॉडल अगले शब्द की भविष्यवाणी करता है। यह नियमित, सामने की ओर मुड़े पाठ के लिए अच्छी तरह काम करता है। लेकिन जैसे ही पाठ सीधी रेखा की तरह व्यवहार करना बंद कर देता है, यह अस्थिर हो जाता है।
यह वह हिस्सा है जो आसानी से छूट जाता है: ट्रांसफॉर्मर में स्थिति (position) का कोई अंतर्निहित अहसास नहीं होता। यदि आप ट्रांसफॉर्मर को स्थान की जानकारी के बिना इमेज पैचों का एक अव्यवस्थित समूह देते हैं, तो वह ऊपर-नीचे या बाएं-दाएं में अंतर नहीं कर सकता। हर ट्रांसफॉर्मर को किसी न किसी प्रकार की पोजीशनल एन्कोडिंग की आवश्यकता होती है, और यह पता चलता है कि उस एन्कोडिंग का चयन ज्यादातर लोगों के अनुमान से अधिक महत्वपूर्ण होता है।
ट्रांसफॉर्मर्स को यह कैसे पता चलता है कि चीज़ें कहाँ हैं, और शॉर्टकट कहाँ टूट जाता है
भाषा मॉडलों से उधार लिया गया स्थिति एन्कोडिंग (positional encoding) स्कीम RoPE कहलाता है, जो Rotary Position Embedding का संक्षिप्त रूप है। इसका उपयोग अधिकांश आधुनिक ओपन भाषा मॉडलों, जिसमें LLaMA भी शामिल है, में किया जाता है। इसका विचार यह है कि अनुक्रम में अपनी स्थिति से जुड़ी मात्रा के अनुसार प्रत्येक टोकन के वेक्टर को घुमाया जाए, ताकि जब ध्यान (attention) के दौरान दो टोकनों की तुलना की जाती है, तो परिणाम स्वाभाविक रूप से यह दर्शाता है कि वे एक-दूसरे से कितनी दूर हैं। इसे एक घड़ी की सुई की तरह सोचें: प्रति कदम एक निश्चित मात्रा द्वारा इसे घुमाएं, और किसी भी दो सुइयों के बीच का कोण आपको उस दूरी को बताता है बिना उस दूरी को स्पष्ट रूप से संग्रहीत किए।
RoPE को 1D अनुक्रमों के लिए डिज़ाइन किया गया था: वाक्य में शब्द, एक के बाद एक। छवियाँ 2D होती हैं, इसलिए शोधकर्ताओं ने विज़न ट्रांसफॉर्मर्स के लिए axial 2D-RoPE नामक विस्तार बनाया, जो घूर्णन को दो स्वतंत्र भागों में विभाजित करता है: एक पंक्ति स्थिति का ट्रैक रखता है, और एक स्तंभ स्थिति का।
उस विस्तार में शुरू से ही दो धारणाएँ अंतर्निहित हैं, और यह पेपर तर्क देता है कि दृश्य पाठ (scene text) के लिए दोनों टूट जाती हैं।
पहली धारणा यह है कि छवियाँ लगभग वर्गाकार होती हैं। अपनी घूर्णन बजट को पंक्तियों और स्तंभों के बीच समान रूप से विभाजित करें, और यह चेहरे या परिदृश्य की तस्वीर के लिए ठीक है। लेकिन "STOP" जैसे काटे गए शब्द की चौड़ाई उसकी ऊंचाई से चार गुना अधिक हो सकती है। ऊंचाई पर अपनी स्थितिगत रिज़ॉल्यूशन का आधा हिस्सा खर्च करें जबकि ऊर्ध्वाधर रूप से लगभग कुछ भी विशिष्ट नहीं होता है, और आप उस आयाम को भूखा छोड़ देते हैं जो वास्तव में मायने रखता है: वह जो अक्षरों के बाएं-से-दाएं क्रम को वहन करता है।
दूसरी धारणा यह है कि एन्कोडिंग कहाँ लागू होती है। पिछले 2D-RoPE कार्य ने केवल एन्कोडर के भीतर वेक्टर को घुमाया, जहाँ छवि पैच एक-दूसरे का ध्यान देते हैं। लेकिन STR मॉडल एन्कोडर-डिकोडर हैं: डिकोडर एक बार में एक वर्ण उत्पन्न करता है और, प्रत्येक चरण पर, क्रॉस-एटेंशन (cross-attention) के माध्यम से एन्कोडर की छवि पैच ग्रिड पर वापस देखता है। वह क्षण है जब मॉडल तय करता है "जो अक्षर मैंने पहले ही पढ़ लिए हैं, उसके आधार पर मुझे छवि में अगला कहाँ देखना चाहिए?" यदि स्थितिगत गणित उस चरण को कभी नहीं छूता है, तो डिकोडर बिना किसी कंपास के 2D छवि में नेविगेट कर रहा है। उसे उन सामान्य सीखी गई स्थिति टैग्स पर वापस लौटना पड़ता है जिनमें "ऊपर," "नीचे," "बाएं," या "दाएं" की कोई वास्तविक अवधारणा नहीं होती है।
दो सुधार, कोई नया पैरामीटर नहीं
पेपर का सुधार दोनों खालियों को सीधे तौर पर संबोधित करता है, और जो हिस्सा मुझे वास्तव में आकर्षक लगता है, वह यह है कि न तो कोई बदलाव मॉडल में कोई नए वेट्स जोड़ता है। यह कोई बड़ा नेटवर्क या कोई नया मॉड्यूल नहीं है जो बाहर से जोड़ा गया हो। यह मौजूदा रोटेशन गणित को कॉन्फ़िगर करने के तरीके में बदलाव है।
पहला सुधार रोटरी आयामों को असमान रूप से आवंटित करता है, जो वास्तविक टेक्स्ट क्रॉप के एस्पेक्ट रेशो से मेल खाता है, बजाय इसके कि इसे 50/50 में बांटा जाए। एक चौड़ा, छोटा क्रॉप अपनी चौड़ाई के अनुदिश अधिक पोजीशनल रिज़ॉल्यूशन प्राप्त करता है और ऊंचाई के अनुदिश कम, जो जानकारी वास्तव में कहाँ मौजूद है, उससे मेल खाता है।
दूसरा सुधार उसी रोटेशनल कपलिंग को क्रॉस-एटेंशन में विस्तारित करता है, जिससे डिकोडर के क्वेरीज़ और एन्कोडर के 2D ग्रिड को एक साझा ज्यामितीय फ्रेम ऑफ रेफरेंस मिलता है। व्यावहारिक रूप से, इसका मतलब है कि एक डिकोडिंग स्टेप "अगला किराक्टर जिसकी भविष्यवाणी मैं करने वाला हूँ" को "पिछले किराक्टर के ठीक बाद की इमेज की पैच, टेक्स्ट की वक्रता का पालन करते हुए" से जोड़ सकता है, बजाय इसके कि पूरी इमेज को टोकन का एक अविभेद्य ढेर माना जाए।
मशीन लर्निंग में इस विशिष्ट प्रकार के फ्री लंच्स दुर्लभ हैं, इसलिए मैं इसे पूरी तरह से मानने से पहले लेखक की अपनी रन के बाहर इस सुधार की पुनरुत्पादन देखना चाहूंगा। लेकिन सिद्धांत एक साथ टिकता है, और यह एक विफलता मोड पर मैप होता है जिसे कोई भी व्यक्ति जो वास्तविक उत्पाद फोटो की OCR करने की कोशिश कर चुका है, तुरंत पहचान लेगा।

एक ऐसा प्रोटोकॉल जो आशावादी सोच के प्रति प्रतिरोधी है
इस पेपर को एक सामान्य "हमारा पोजिशनल एन्कोडिंग बेहतर नंबर देता है" परिणाम से अलग करने वाली बात यह है कि इसमें यह साबित करने के लिए विशेष सावधानी बरती गई है कि सुधार वास्तव में उन स्रोतों से आ रहा है जहाँ लेखक दावा कर रहे हैं, न कि पुनः प्रशिक्षण के किसी अनसुलझे पार्श्व प्रभाव से।
इस काम को तीन जाँचें करती हैं। पहला, एक नियंत्रित एब्लेशन जोड़ा: पूरे मॉडल को समान रखें और केवल पोजिशनल एन्कोडिंग मॉड्यूल को बदलें, 1D RoPE, 2D साइनसॉइडल एन्कोडिंग, 2D लर्नेबल एन्कोडिंग और उनके नए 2D-RoPE-STR की तुलना एक-दूसरे के साथ करें। यह उस एक चर को अलग करता है जिसमें बदलाव आया था।
दूसरा, इमेज-लेवल असहमति विश्लेषण। एकल एग्रीगेट सटीकता संख्या रिपोर्ट करने के बजाय (जो उतना ही छुपा सकती है जितना प्रकट करती है, क्योंकि एक समान औसत कुछ छवियों पर बड़ी जीत को अन्य छवियों पर होने वाले नुकसान से रद्द कर सकता है), लेखक यह देखते हैं कि बेसलाइन और नए विधि के बीच कौन सी विशिष्ट छवियाँ गलत से सही में बदलती हैं, और कौन सी उल्टी दिशा में बदलती हैं। यह गेम करने के लिए एक बहुत कठिन परीक्षण है, क्योंकि यह लेखकों को यह दिखाने के लिए मजबूर करता है कि उनके लाभ किसी विशिष्ट जगह पर केंद्रित हैं, न कि पतले और असमान रूप से फैले हुए हैं।
तीसरा, एटेंशन विजुअलाइजेशन: डिकोडिंग के दौरान एन्कोडर के एटेंशन वेट कहाँ पड़ते हैं, इसका शाब्दिक रूप से प्लॉट करना, यह जाँचने के लिए कि मॉडल टेक्स्ट की वक्रता को उस तरह से दृश्य रूप से ट्रैक कर रहा है जैसा आप उम्मीद करेंगे, न कि किसी बेनचमार्क पर भाग्यशाली हो रहा है।
लाभ वास्तव में कहाँ दिखते हैं
यहाँ उपयोग किए गए छह बेंचमार्क — IIIT5K, SVT, ICDAR 2013, ICDAR 2015, CUTE80 और SVTP — इस उपक्षेत्र के लिए मानक परीक्षण सेट हैं। पहले तीन मुख्य रूप से सीधे, सामने की ओर और क्षैतिज पाठ पर आधारित हैं। अंतिम तीन वे हैं जिन्हें शोधकर्ता विशेष रूप से असमान पाठ के लिए तनाव परीक्षण (stress-test) के लिए उपयोग करते हैं: ICDAR 2015 में बहुत सारा झुका हुआ और कम गुणवत्ता वाला साइनबोर्ड पाठ है, CUTE80 में वक्र पाठ से भरा हुआ है, और SVTP दृष्टिकोण विकृति (perspective distortion) पर बहुत अधिक निर्भर करता है।
सारांश के अनुसार, सुधार लगभग पूरी तरह से उस दूसरे, कठिन समूह पर केंद्रित हैं: वक्र, घुमाए गए और दृष्टिकोण-विकृत लेआउट जहाँ पढ़ने का क्रम सीधी क्षैतिज रेखा से विचलित होता है। यह एक सुसंगत कहानी है, बिखरी हुई नहीं। इसका तात्पर्य यह है कि सुधार ठीक वही कर रहा है जो इसके पीछे के तर्क ने भविष्यवाणी की थी, बजाय इसके कि वह "बेहतर स्थिति एन्कोडिंग" (better position encoding) वाले कई पेपरों की तरह हर बेंचमार्क को एक समान छोटे मार्जिन से ऊपर उठा रहा हो।
मैं स्पष्ट चेतावनी को उजागर करूँगा: arXiv सारांश वास्तविक सटीकता तालिकाएँ प्रकाशित नहीं करता है, और मुझे सूची से विशिष्ट प्रतिशत लाभ निकालने में असमर्थ रहा। यह पेपर वर्तमान में International Journal on Document Analysis and Recognition में समीक्षाधीन है, इसलिए जब तक पूर्ण संख्याएँ सार्वजनिक नहीं हो जातीं और मूल टीम के बाहर कोई उन्हें पुनरुत्पादित नहीं करता, तब तक इसे एक वादा करने वाला, तंत्रिक रूप से अच्छी तरह तर्क दिया गया परिणाम मानें, न कि एक निश्चित परिणाम।
अभी भी क्या अनसुलझा है
जल्दबाजी में उत्साहित होने से पहले कुछ बातों पर विचार करना उचित है।
यह एकल लेखक द्वारा लिखित एक पेपर है जो अभी भी समीक्षा (peer review) की प्रक्रिया में है और इसे स्वीकार नहीं किया गया है। इसका मतलब यह नहीं है कि यह गलत है, लेकिन इसका मतलब यह है कि सामान्य समुदाय की जांच-पड़ताल (पुनरुत्पादन, विरोधी समीक्षा, या किसी का अलग डेटासेट पर इसे तोड़ने का प्रयास) अभी तक नहीं हुई है।
छह बेंचमार्क सभी शैक्षणिक हैं, अंग्रेजी-केंद्रित हैं, और लगभग 2003 से 2016 के बीच एकत्र किए गए थे। ये "फोटो में पाठ" के लिए एक उचित प्रतिनिधि हैं, लेकिन ये उत्पादन OCR पाइपलाइन द्वारा देखे जाने वाले विविध दस्तावेजों के समान नहीं हैं: मिश्रित लिपि, फोन कैमरा शोर, कम प्रकाश, मोशन ब्लर, और खराब फोन पर रात के 2 बजे ली गई रसीदों की तस्वीरें। क्या यह स्थिति-एन्कोडिंग (positional-encoding) सुधार उस अव्यवस्था में सामान्यीकृत होता है, यह एक खुला सवाल है जिसका उत्तर पेपर दावा नहीं करता है।
विषय-वस्तु (scope) के बारे में सटीक होने की भी आवश्यकता है। यह पहचान चरण (recognition step) को लक्षित करता है, जो किसी उपस्ट्रीम डिटेक्टर द्वारा पहले से ही पाठ युक्त माने गए क्रॉप के अंदर के वर्णों को पढ़ता है। यह दस्तावेज़ लेआउट, तालिका संरचना, या पूर्ण-पृष्ठ पढ़ने के क्रम को नहीं छूता है। यदि आपका OCR समस्या स्कैन की गई इनवॉइस और अनुबंधों से संबंधित है, तो यह सुधार उन विफलता मोड (failure mode) की ओर निर्देशित है जो आमतौर पर वहां आपको प्रभावित नहीं करते हैं।
यह किसी के लिए क्यों मायने रखता है जो OCR बना रहा है या चुन रहा है
अगर आप ज्यादातर OCR को साफ, सामने से ली गई डॉक्यूमेंट्स (इनवॉइस, स्कैन किए गए कॉन्ट्रैक्ट, फॉर्म्स) फीड कर रहे हैं, तो इस खास फिक्स से अपनी एक््युरेसी में ज्यादा बदलाव की उम्मीद न करें। पेपर के अपने रिजल्ट्स कहते हैं कि गेन्स अनियमित लेआउट्स पर क्लस्टर होते हैं, और साफ डॉक्यूमेंट्स, लगभग परिभाषा के अनुसार, अनियमित नहीं होते।
लेकिन अगर आपका प्रोडक्ट फिजिकल वर्ल्ड की फोटोज, प्रोडक्ट लेबल्स, स्ट्रीट साइनिंग, पैकेजिंग, या फोन पर कोण से ली गई रसीदों को टच करता है, तो यह उस फेल्योर मोड को टारगेट करता है जो डेमो में OCR सिस्टम को अक्सर शर्मिंदा करता है: टेक्स्ट जो मुड़ा हुआ, झुका हुआ, या पर्सपेक्टिव से स्ट्रेच हो जाता है। यह इनपुट की एक असली और आम कैटेगरी है, और "मॉडल का स्थिति का 2D सेंस बिल्कुल नहीं है" यह एक संतोषजनक और ठीक किया जा सकने वाला कारण है कि यह वहां क्यों बार-बार फेल हो रहा है। यहाँ एक महत्वपूर्ण बात यह है कि अंग्रेजी OCR की मजबूती का मतलब यह नहीं है कि देवनागरी लिपि (जिसमें जटिल संयुक्त अक्षर, मात्राएं और शिरोरेखा होती हैं) की ओसीआर भी उतनी ही अच्छी होगी; इसलिए अपनी विशिष्ट भाषाई जरूरतों के लिए अलग से वैलिडेशन करना जरूरी है।
इंजन इवैल्यूएट करने वालों के लिए सबसे ज्यादा मायने रखने वाला हिस्सा "कोई नए पैरामीटर्स नहीं" वाला दावा है। अगर यह इंडिपेंडेंट टेस्टिंग में खड़ा रहता है, तो इसका मतलब है कि डिस्टॉर्टेड टेक्स्ट का बेहतर हैंडलिंग बड़े, धीमे, महंगे मॉडल को ऊपर जोड़ने के बिना भी हो सकता है। अगर आप मैसेड रियल-वर्ल्ड इमेजेज पर एक््युरेसी के पीछे भागते हुए इनफरेंस कॉस्ट को सही रखने की कोशिश कर रहे हैं, तो यह एक वास्तव में उपयोगी प्रॉपर्टी है। अभी के लिए, समझदारी भरा कदम इस काम की लाइन पर नजर रखना है, न कि उस पर एक्ट करना: फुल पेपर की टेबल्स के लिए देखें, इंडिपेंडेंट रिप्रोडक्शन्स के लिए देखें, और OCR इंजिन्स को मुख्य रूप से इस आधार पर जज करें कि वे आपके अपने यूजर्स की असली अपलोड्स पर कैसे परफॉर्म करते हैं। बेंचमार्क्स आपको बताते हैं कि कहाँ देखना है। वे आपके ग्राहकों द्वारा भेजी जाने वाली अजीब, मुड़ी हुई, बुरी तरह रोशनी वाली फोटोज के खिलाफ टेस्टिंग को नहीं बदलते।