我正在对来自两个不同来源的一些文本进行 OCR。他们每个人都可能在不同的地方犯错,他们无法识别一个字母/一组字母。如果他们无法识别某些内容,则将其替换为 ?。例如,如果单词是Roflcopter
,则一个来源可能会返回Ro?copter
,而另一个来源可能会返回Roflcop?er
。我想要一个函数来返回两个匹配项是否相等,允许多个?
s. 例子:
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
到目前为止,我可以使用正则表达式将一个 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