我正在尝试做一个 preg_replace 考虑到模式中的类似文本。我的目标是从 OCR 软件输出的文本中删除给定的字符串(某些字母可能会混淆)。
让我们举一个代码示例:
$ocr = 'Appartamento sito in Vioolo San Vincenzo, n.4 e censito al ;
preg_replace('#\bVicolo San Vincenzo[, ]+([0-9]+|n[\.]? ?[0-9]+)?\b#', '<removed text>', $ocr);
注意: OCR 将第三个字母 a与 an混淆了c
o
。
在这里改进 OCR 不是一种选择或可能。
输入字符串:
Appartamento sito in Vioolo San Vincenzo, n.4 e censito al
上述调用 preg_replace 后的预期结果:
Appartamento sito in e censito al
实际结果:
Appartamento sito in Vioolo San Vincenzo, n.4 e censito al
在 PHP 函数的含义中,文本应该被认为是相似的,例如levenshtein()
, similar_texts()
(虽然我没有考虑soundex()
或者metaphone()
文本不是英文的)。
使用preg_replace
不是强制性的,但我至少需要能够根据与该模式等效的东西来评估字符串。