我正在使用Levenshtein距离在OCR之后找到类似的字符串。但是,对于某些字符串,编辑距离是相同的,尽管视觉外观明显不同。
例如,字符串Co将返回以下匹配项:
Co
CY (1) CZ (1) Ca (1)
考虑到,这Co是来自OCR引擎的结果,它Ca比那些更可能匹配。因此,在计算了Levenshtein距离之后,我想通过按视觉相似性排序来优化查询结果。为了计算这种相似度,我想使用标准的无衬线字体,例如Arial。
Ca
是否可以为此目的使用一个库,或者我自己可以实现该库?另外,还有其他字符串相似度算法比Levenshtein距离更精确吗?
如果您正在寻找一张表格,该表格可让您根据视觉相似性来计算各种“更换成本”,那么我一直在寻找这样的东西,但收效甚微,因此我开始将其视为新事物。问题。我不使用OCR,但我正在寻找一种方法来限制概率输入中 错误键入 字符的搜索参数。由于由于人类在视觉上混淆了字符而导致键入错误,因此相同的原理也应适用于您。
我的方法是根据字母的笔画成分在8位字段中对字母进行分类。这些位从左到右是:
7: Left Vertical 6: Center Vertical 5: Right Vertical 4: Top Horizontal 3: Middle Horizontal 2: Bottom Horizontal 1: Top-left to bottom-right stroke 0: Bottom-left to top-right stroke
对于小写字符,左侧的降序记录在对角线中,而第1位则记录在对角线中。
通过该方案,我提出了以下值,这些值试图根据视觉相似性对字符进行排名。
m: 11110000: F0 g: 10111101: BD S,B,G,a,e,s: 10111100: BC R,p: 10111010: BA q: 10111001: B9 P: 10111000: B8 Q: 10110110: B6 D,O,o: 10110100: B4 n: 10110000: B0 b,h,d: 10101100: AC H: 10101000: A8 U,u: 10100100: A4 M,W,w: 10100011: A3 N: 10100010: A2 E: 10011100: 9C F,f: 10011000: 98 C,c: 10010100: 94 r: 10010000: 90 L: 10000100: 84 K,k: 10000011: 83 T: 01010000: 50 t: 01001000: 48 J,j: 01000100: 44 Y: 01000011: 43 I,l,i: 01000000: 40 Z,z: 00010101: 15 A: 00001011: 0B y: 00000101: 05 V,v,X,x: 00000011: 03
就目前而言,这对我而言太原始了,需要更多的工作。但是,您可以使用它,也可以对其进行调整以适合您的目的。该方案非常简单。此排名适用于等宽字体。如果使用的是Sans- Serif字体,则可能必须重新处理这些值。
该表是一个混合表,包括所有大小写字符,但是如果将其分为大写和小写,则可能会更有效,并且还可以应用特定的大写字母。
请记住,这是早期实验。如果您想方设法改进它(例如,通过更改位序列),请随时进行改进。