Tôi đang OCRing một số văn bản từ hai nguồn khác nhau. Mỗi người có thể phạm sai lầm ở những nơi khác nhau, nơi họ sẽ không nhận ra một lá thư/nhóm chữ cái. Nếu họ không nhận ra một cái gì đó, nó được thay thế bằng một? Ví dụ: nếu từ là Roflcopter
, một nguồn có thể trả lại Ro?copter
, trong khi một từ khác, Roflcop?er
. Tôi muốn một hàm trả về hai kết quả trùng khớp có tương đương hay không, cho phép nhiều số ?
s. Ví dụ:cách thanh lịch để khớp với hai chuỗi ký tự đại diện
match("Ro?copter", "Roflcop?er") --> True
match("Ro?copter", "Roflcopter") --> True
match("Roflcopter", "Roflcop?er") --> True
match("Ro?co?er", "Roflcop?er") --> True
Cho đến nay tôi có thể phù hợp với một OCR với một hoàn hảo bằng cách sử dụng biểu thức thông thường:
>>> 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
Nhưng điều này không hoạt động khi cả hai đều có s ở những nơi khác nhau:?
>>> match("R??lcopter", "Roflcop?er")
False
Vui lòng thêm Python làm thẻ. Bạn đang sử dụng phiên bản nào, btw? –
phiên bản 2.5.2 với khoảng trống bổ sung – Claudiu