मैं दो अलग-अलग स्रोतों से कुछ पाठ ओसीआर कर रहा हूं। वे प्रत्येक अलग-अलग जगहों पर गलतियां कर सकते हैं, जहां वे अक्षरों के एक पत्र/समूह को पहचान नहीं पाएंगे। अगर वे कुछ पहचान नहीं पाते हैं, तो इसे एक के साथ बदल दिया गया है? उदाहरण के लिए, यदि शब्द Roflcopter
है, तो एक स्रोत Ro?copter
लौटा सकता है, जबकि दूसरा, Roflcop?er
। मुझे एक ऐसा फ़ंक्शन चाहिए जो दो मैचों के समतुल्य हो, चाहे ?
एस के लिए अनुमति दे। उदाहरण:दो वाइल्डकार्ड तारों से मेल खाने के लिए सुरुचिपूर्ण तरीका
>>> def match(tn1, tn2):
tn1re = tn1.replace("?", ".{0,4}")
tn2re = tn2.replace("?", ".{0,4}")
return bool(re.match(tn1re, tn2) or re.match(tn2re, tn1))
>>> match("Roflcopter", "Roflcop?er")
True
>>> match("R??lcopter", "Roflcopter")
True
विभिन्न स्थानों में लेकिन यह वे दोनों जब काम नहीं करता है रों:
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
अब तक मैं एक ओसीआर एक आदर्श एक के साथ नियमित अभिव्यक्ति का उपयोग करके मिलान कर सकते हैं?
>>> match("R??lcopter", "Roflcop?er")
False
कृपया एक टैग के रूप में पायथन जोड़ें। आप किस संस्करण का उपयोग कर रहे हैं, बीटीडब्ल्यू? –
संस्करण 2.5.2 अतिरिक्त व्हाइटस्पेस – Claudiu