python中常见多字符OCR错误的模糊字符串匹配
我正在尝试对一些OCR结果进行模糊匹配,我希望能够考虑常见的OCR错误。特别是,我正在将街道与街道数据库进行匹配。我发现了如何使用加权levenshtein包来降低常见的单字符替换错误的权重,但它似乎只适用于单字符,而许多最常见的错误是像“li”到“h”这样的 现在,“Mam”和“MAY ST”最接近,而我真的希望它和“MAIN ST”匹配。我希望能够在中构建一些知道“in”和“M”经常对应的东西,因为“in”被OCR读作“M” 这是我正在使用的当前代码(我正在降低插入的权重,因为我正在使用的一些街道缩写或缺少“St”、“Ave”等): 我不认为有一种方法可以修改多字符替换的加权levenshtein。但如果有,那就太好了。我敢打赌,有一个软件包具有这种能力——可能是一个已经内置了常见错误库的软件包 有什么想法吗python中常见多字符OCR错误的模糊字符串匹配,python,ocr,levenshtein-distance,fuzzy-comparison,Python,Ocr,Levenshtein Distance,Fuzzy Comparison,我正在尝试对一些OCR结果进行模糊匹配,我希望能够考虑常见的OCR错误。特别是,我正在将街道与街道数据库进行匹配。我发现了如何使用加权levenshtein包来降低常见的单字符替换错误的权重,但它似乎只适用于单字符,而许多最常见的错误是像“li”到“h”这样的 现在,“Mam”和“MAY ST”最接近,而我真的希望它和“MAIN ST”匹配。我希望能够在中构建一些知道“in”和“M”经常对应的东西,因为“in”被OCR读作“M” 这是我正在使用的当前代码(我正在降低插入的权重,因为我正在使用的一
import numpy as np
from weighted_levenshtein import lev, osa, dam_lev
def lratio(str1,str2):
insert_costs = 0.5*np.ones(128, dtype=np.float64)
delete_costs = np.ones(128, dtype=np.float64)
substitute_costs = np.ones((128, 128), dtype=np.float64)
substitute_costs[ord('O'), ord('0')] = 0.25
substitute_costs[ord('0'), ord('O')] = 0.25
substitute_costs[ord('I'), ord('T')] = 0.5
substitute_costs[ord('T'), ord('I')] = 0.5
ldistance = lev(str1, str2, insert_costs=insert_costs, delete_costs=delete_costs, substitute_costs=substitute_costs)
return (1.0 - float(ldistance) / float(len(str1) + len(str2))) * 100.0