क्या आपने सबसे लंबे समय तक सामान्य एल्गोरिदम का उपयोग करने का प्रयास किया है? इन्हें आमतौर पर स्रोत नियंत्रण ऐप्स और कुछ टेक्स्ट संपादकों में उपयोग किए जाने वाले "diff" टेक्स्ट तुलना टूल में देखा जाता है। एक diff एल्गोरिदम दो पाठ नमूने में बदले और अपरिवर्तित वर्णों की पहचान करने में मदद करता है। http://en.wikipedia.org/wiki/Diff
कुछ साल पहले मैंने आपके जैसे ओसीआर ऐप पर काम किया था। एक छवि में एकाधिक ओसीआर इंजन लगाने के बजाय, मैंने एक ही छवि के कई संस्करणों का विश्लेषण करने के लिए एक ओसीआर इंजन का उपयोग किया। प्रत्येक संसाधित छवियां मूल छवि के लिए अलग-अलग denoising तकनीक को लागू करने का परिणाम थी: एक तकनीक कम विपरीत के लिए बेहतर काम करती है, जब चरित्र खराब तरीके से गठित होते हैं तो एक और तकनीक बेहतर काम करती है। एक "वोटिंग" योजना जिसने प्रत्येक छवि पर ओसीआर परिणामों की तुलना की, "बीक्यूसीएम 10032" जैसे पाठ के मनमानी तारों के लिए पढ़ने की दर में सुधार किया। ओसीआर के लिए अकादमिक साहित्य में अन्य मतदान योजनाओं का वर्णन किया गया है।
अवसर पर आपको एक ऐसे शब्द से मिलान करने की आवश्यकता हो सकती है जिसके लिए ओसीआर परिणामों का कोई संयोजन सभी अक्षरों को उत्पन्न नहीं करेगा। उदाहरण के लिए, एक मध्य अक्षर गुम हो सकता है, जैसा कि "w rd" या "c tch" (संभवतः "शब्द" और "पकड़") में हो सकता है। इस मामले में यह आपके शब्दकोश को किसी भी तीन कुंजी के साथ एक्सेस करने में मदद कर सकता है: प्रारंभिक अक्षर, मध्य अक्षर, और अंतिम अक्षर (या अक्षर संयोजन)। प्रत्येक कुंजी भाषा में घटना की आवृत्ति द्वारा क्रमबद्ध शब्दों की एक सूची से जुड़ा हुआ है। (मैंने क्रॉसवर्ड पीढ़ी ऐप की गति में सुधार करने के लिए इस तरह के मल्टी-कुंजी लुकअप का उपयोग किया; वहां बेहतर तरीके से बेहतर तरीके हो सकते हैं, लेकिन यह लागू करना आसान है।)
स्मृति पर सहेजने के लिए, आप आवेदन कर सकते हैं भाषा में पहले कुछ हज़ार आम शब्दों के लिए बहु-कुंजी विधि, और फिर कम आम शब्दों के लिए केवल एक लुकअप तकनीक है।
शब्द आवृत्ति की कई ऑनलाइन सूचियां हैं। http://en.wiktionary.org/wiki/Wiktionary:Frequency_lists
यदि आप फैंसी प्राप्त करना चाहते हैं, तो आप पाठ में घटना की पूर्व आवृत्ति पर भी भरोसा कर सकते हैं। उदाहरण के लिए, यदि "बार्ड" कई बार प्रकट होता है, तो ओसीआर इंजन कम विश्वास स्कोर के साथ या तो "पक्षी" या "बार्ड" की रिपोर्ट करता है तो यह बेहतर विकल्प हो सकता है। यदि आप एक ही पृष्ठ पर चिकित्सा शर्तों की सांख्यिकीय रूप से असंभव घटना होने पर केवल मेडिकल डिक्शनरी को स्मृति में लोड कर सकते हैं - अन्यथा अपने कामकाजी शब्दकोश से चिकित्सा शर्तों को छोड़ दें, या कम से कम उन्हें उचित संभावनाएं असाइन करें। "प्रोस्थेटिक्स" एक आम शब्द है; "प्रोस्टेटाइटिस" कम इतना है।
आप इस तरह के denoising और रूपात्मक संचालन के रूप में छवि प्रसंस्करण तकनीकों के साथ अनुभव है, तो आप भी यह ओसीआर इंजन (ओं) को पार करने से पहले छवि preprocessing कोशिश कर सकते हैं। आपके सॉफ़्टवेयर उन शब्दों या क्षेत्रों की पहचान करने के बाद चुनिंदा क्षेत्रों में छवि प्रसंस्करण भी लागू किया जा सकता है जहां ओसीआर इंजन खराब प्रदर्शन करते थे।
कुछ पत्र/पत्र और पत्र/अंक प्रतिस्थापन आम हैं। अंकों 0 (शून्य) को अक्षर ओ, सी के लिए ओ, बी के लिए 8, एफ के लिए ई, पी के लिए पी, और इसी तरह से भ्रमित किया जा सकता है। यदि कोई शब्द कम आत्मविश्वास से मिलता है, या यदि दो सामान्य शब्द हैं जो एक अपूर्ण रूप से पढ़े गए शब्द से मेल खाते हैं, तो विज्ञापन आकार-मिलान नियमों की सहायता से मदद मिल सकती है। उदाहरण के लिए, "बीटीएचएच" या तो "दोनों" या "स्नान" से मेल खा सकता है, लेकिन कई फोंट (और संदर्भ) "दोनों" के लिए अधिक संभावना है क्योंकि "ओ" आकार में "सी" के समान है। एक उपन्यास या पत्रिका लेख से अनुच्छेद जैसे शब्दों की एक लंबी स्ट्रिंग में, "स्नान" "बी 8 वें" से बेहतर मिलान है।
अंत में, आप शायद एक प्लगइन या स्क्रिप्ट लिखने एक वर्तनी जाँच इंजन है कि संज्ञा-क्रिया अनुबंध और अन्य व्याकरण जांच के लिए जाँच करता है में परिणाम पारित करने के लिए कर सकता है। इसमें कुछ अतिरिक्त त्रुटियां हो सकती हैं। शायद आप वर्ड के लिए वीबीए या इन दिनों जो भी अन्य स्क्रिप्ट/एप कॉम्बो लोकप्रिय हैं, कोशिश कर सकते हैं।
तुम सच में से एक के लिए 4 संस्करणों संयोजित करना चाहते हैं चाहते हैं, या अपने लक्ष्य है एक लाइन लेने के लिए और मदद से इसे ठीक कर के आप शब्दकोश के लिए? – Flo
मैं आसानी से एक लाइन ले सकता हूं और शब्दकोश के साथ "वर्तनी जांच" कर सकता हूं। लेकिन यह मदद नहीं करेगा क्योंकि कई शब्द टूटे हुए हैं, रिक्त स्थान गलत जगहों पर हैं। यही कारण है कि मुझे अलग-अलग लाइनों की तुलना करने की ज़रूरत है, हां उन्हें एक साथ जोड़ दें। – Alasdair
आप यहां जो बात कर रहे हैं वह आर्टिफिशियल इंटेलिजेंस समस्या की तरह बहुत भयानक लगता है। यह PHP में संभव हो सकता है लेकिन यह निश्चित रूप से बहुत ही कुशल नहीं होगा। मैं एक कमांडलाइन उपकरण की तलाश करने की अनुशंसा करता हूं जो यह एक मौजूद है और इसे PHP से निष्पादित करता है। यदि ऐसा कोई उपकरण मौजूद नहीं है, तो एल्गोरिदम का काम करना नौकरी का एक बिल्ली होगा। आप अपने सभी प्रकारों की जांच कर वर्तनी से शुरू कर सकते हैं और यह मानते हुए कि सभी संस्करणों में सभी शब्द समान हैं। फिर उन रेखाओं के लिए जहां वे अलग हैं, वह शब्द चुनें जो अक्सर दिखाई देता है। उसके बाद, कौन जानता है? – GordonM