字符串字体比较算法

时间:2010-05-19 13:21:37

标签: algorithm ocr computer-vision

我相信,有一种算法可以使两个字符串具有相似的字体字体,但不同的符号(数字,西里尔字母,拉丁字母或其他字母)。例如:

  • "hello"(拉丁符号)等于"he11o"(数字和拉丁符号)
  • "HELLO"(拉丁符号)等于"НЕLLО"(西里尔和拉丁符号)
  • "really"(拉丁符号)等于"геа11у"(数字和西里尔符号)

2 个答案:

答案 0 :(得分:1)

我不确定你要求的是什么。

如果你想知道给定字体下两个字符是否相同,那么你需要将所选字体中的每个字符渲染成位图并比较它们以查看它们是否接近相同。

如果您只想将小写拉丁语'l'与数字'1'相同而不管使用的字体是什么,那么您只需定义一个字符映射表即可。可能最简单的方法是为每组看起来相同的字符选择一个规范值,并将该集合的所有成员映射到该字符。比较字符串时,请比较表中每个字符的规范实例。

答案 1 :(得分:1)

您可能正在考虑Paul E. Black为ICANN制定的算法,该算法确定两个TLD是否“混淆相似”,尽管它目前不适用于混合脚本输入(例如拉丁语和西里尔语)。请参阅“Algorithm Helps ICANN Manage Top-level Domains”和ICANN Similarity Assessment Tool

此外,如果您有兴趣扩展此算法,那么您可能希望合并来自Unicode code charts的信息,这些信息通常列出了类似的字形和代码点序列,这些代码点的渲染方式类似。