我正在开发一个进行 OCR 后处理的引擎,目前我在数据库中有一组组织,包括商会编号。
同样从 OCR 输出中,我有一个可能的商会 (COC) 号码列表。
搜索最相似的最佳方法是什么?目前我正在使用 Levenshtein Distance,但结果范围太大了,在大型数据库上我真的怀疑它的可行性。目前它是用Java实现的,数据库是MySQL数据库。
旁注:荷兰的商会编号被定义为每个公司的 8 位数字,该系统的早期版本使用另外 4 位数字(0000、0001 等)表示组织的成立,如今,正在为这些人提供全新的 COC 编号。
COCNumber 示例:
- 30209227
- 02045251
- 04087614
- 01155720
- 20081288
- 020179310000
- 09053023
- 09103292
- 30039925
- 13041611
- 01133910
- 09063023
- 34182B01
- 27124701
通过后处理确定的可能的 COCNumber 列表:
- 102537177
- 000450093333
- 465111338098
- NL90223l30416l
- NLFL0737D447B01
- 2013 年 6 月 12 日
- IBANNL32ABNA0242244777
- lncassantNL90223l30416l10000
- KvK13041611
- 顺便说一句,NLFL0737D447B01
一些额外的注意事项:
- 后处理从发票中提取单词和单词组,并将这些单词组连接成一个字符串。(一个词组就是说,一组词,通常用它们之间的空格来表示)。
- 后处理为COC编号的条件如下:长度8位以上,内容一半为数字,字母数字。
- 通过后处理确定的可能的 COCNumber 数量相对较少。
- 数据库本身可以变得非常大,多达 10.000 条记录。
一般来说,我将如何继续找到最佳匹配?(在这种情况下 (13041611, KvK13041611) 是最好的(而且是正确的)匹配)