0

有没有办法创建一个正则表达式,以确保在给定的字符范围内按顺序出现八个字符中的五个(例如 20 个字符)?

我正在处理可怕的 OCR/扫描,我可以忍受误报。

有没有办法做到这一点?

更新:我想将例如“mshpeln”匹配为misspelling. 我不想做 OCR。OCR 工作已经完成,但做得很差(即最初说misspelling的是 ,但 OCR 的副本显示为“mshpeln”)。我不知道我必须匹配的文本是什么(即我不知道它是“mshpeln”,它可能是“mispel”或任何数量的其他组合)。

我不是想将它用作拼写检查器,而只是找到捕获组的结尾。顺便说一句,我目前无法获取 all.css 文件,因此暂时无法进行评论。

4

4 回答 4

3

我认为您不需要正则表达式,而是需要包含所有有效单词和创造性使用soundex()和/或等函数的数据库levenshtein()

您可以这样做:使用所有有效单词(字典word)创建表,使用和snd(计算为)等列填充它,为和列soundex(word)创建索引。例如,对于 word您将填写为。如果你使用 SQLite,它已经默认实现了wordsndmispelingsndM214soundex()

现在,当你得到新的坏词时,计算soundex()它并在你的索引表中查找它。例如,对于 wordmshpeln它将是soundex('mshpeln')= M214。好了,这样你就可以找回正确的单词。

但这看起来不像正则表达式 - 抱歉。

于 2013-06-04T03:55:52.523 回答
0

老实说,我认为像这样的项目对于真正的人来说会更好,而不是计算机。如果项目规模太大,可供 1 或 2 个人轻松完成,您可能需要研究类似 Amazon 的 Mechanical Turk 之类的东西,您可以在其中外包工作,每个解决方案只需几美分。

于 2013-06-04T04:06:28.847 回答
0

这不能用正则表达式来完成,但可以用自定义算法来完成。

例如,要在正文中查找类似于“拼写错误”的单词:

1) 预处理。创建一个Set(在数学意义上,保证是唯一元素的集合),其中包含所有拼写错误的唯一字母 -{e, i, g, l, m, n, p, s}

2) 将正文拆分为单词。

3) 对于每个单词,Set用它所有的独特字母创建一个。然后,对这个集合和你匹配的单词集合执行集合交集的操作——这将得到两个集合包含的字母。如果此集合中剩余 5 个或更多字符,则您可能在此处找到匹配项。

如果 OCR 可以添加错误的空格,则一次考虑两个单词而不是单个单词。等等根据您的要求。

于 2013-06-04T04:16:13.410 回答
0

这个问题我没有办法解决,其实这里正好相反。

由于两个原因,无法以编程方式更正 OCR 错误:

  1. 您无法量化 OCR 算法产生的错误,因为它可以在 0 到 100% 之间

  2. 要进行更正,您需要知道最大误差可能是多少,以便设置可接受的水平。

nello world成为“hello world”的第一个猜测,非常相似。然后,使用另一种用“痛苦”黄色或其他字体书写的字体,第二次猜测是noiio verio用于相同的表达。如果这个词被更好地识别,计算机应该如何知道它会是相似的?

否则,给定一个预先确定的错误,我认为 mvp 的解决方案似乎是最好的。


更新:

经过一番挖掘,我找到了一个可能相关的参考:字符串相似度度量

于 2013-06-04T04:41:54.757 回答