mik*_*wn2 3 php regex ocr fuzzy-search fuzzy-comparison
我想知道是否有某种方法可以在PHP中进行模糊字符串匹配.寻找一个长字符串中的单词,找到一个潜在的匹配,即使它拼写错误; 如果由于OCR错误而被一个字符关闭的东西会找到它.
我在想一个正则表达式生成器可能能够做到这一点.因此,如果输入"疯狂",它将生成此正则表达式:
.*((crazy)|(.+razy)|(c.+azy)|cr.+zy)|(cra.+y)|(craz.+)).*
Run Code Online (Sandbox Code Playgroud)
然后它将返回该单词的所有匹配或该单词的变体.
如何构建生成器: 我可能会将搜索字符串/单词拆分为一个字符数组,并构建正则表达式,将新创建的数组替换为键值(字符串中字母的位置). +".
这是进行模糊文本搜索的好方法还是有更好的方法?怎么样的字符串比较,根据它的接近程度给我一个分数?我试图看看一些转换不良的OCR文本是否包含一个单词.
当您不知道正确的单词是什么时,字符串距离函数是无用的.我建议使用pspell函数:
$p = pspell_new("en");
print_r(pspell_suggest($p, "crazzy"));
Run Code Online (Sandbox Code Playgroud)
http://www.php.net/manual/en/function.pspell-suggest.php