私は2つの異なるソースからいくつかのテキストをOCRしています。彼らはそれぞれ、文字/文字のグループを認識しないさまざまな場所で間違いを犯す可能性があります。彼らが何かを認識しない場合、それは?に置き換えられます。たとえば、単語がである場合、Roflcopter
あるソースはを返しRo?copter
、別のソースはを返す可能性がありRoflcop?er
ます。2つの一致が同等であるかどうかを返し、複数?
のを許可する関数が必要です。例:
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
これまでのところ、正規表現を使用して、1つのOCRを完全なOCRと一致させることができます。
>>> 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
しかし、両方が異なる場所に?sを持っている場合、これは機能しません。
>>> match("R??lcopter", "Roflcop?er")
False