【问题标题】:Firebase ML Vision TextRecogniser modify results for a better searchFirebase ML Vision TextRecogniser 修改结果以获得更好的搜索
【发布时间】:2020-08-25 22:50:53
【问题描述】:

我在 Flutter 应用程序中不断遇到 Firebase Ml-Vision 的问题,该问题的结果不准确。现在我明白,总会有一些平衡的准确性会丢失,但我正在尝试找出一种方法,至少可以尝试规避一些更明显的问题。

由于我需要搜索标牌文本以查看它是否与特定的预定义字符串列表匹配,因此我试图找出一种方法来获取特定单词(例如下面提到的单词)并创建所有列表包含以下字母和数字的排列:-

  • 0=O 和 O=0
  • 1=l 和 l=1
  • 2=z 和 z=2
  • 5=s 和 s=5
  • 6=b 和 b=6
  • 7=T 和 T=7

问题是一些字母或数字被它们看起来相反的字母或数字所取代。例如:单词“slob”可以被 OCR 读取为“5lob”、“s1ob”、“sl0b”、“slo6”甚至“5106”。

我不确定 Flutter/dart 中是否有一些烘焙函数可以帮助解决这个问题。我唯一拥有的是一堆非常讨厌的嵌套 for 循环。我觉得必须有一些优雅的方式来实现这一点。这种算法还有术语吗?

【问题讨论】:

  • Levenshtein distance 的答案有帮助吗?

标签: flutter ocr firebase-mlkit google-mlkit mlvision


【解决方案1】:

去过那里。

不幸的是,Flutter 没有“内置功能”,因为正如您猜想的那样,Flutter 是一个移动应用程序框架。而这些东西(OCR/ML-Vision)属于其他领域。

您可以做的是通过一个简单的 REST API。您将从 Firebase ML-Vision 收到的文本发送到 API,然后获取响应文本。您可以使用您选择的编程语言。以下是您可以在 API 中执行的操作。

使用Levenshtein distance。这给出了两个词之间的“距离”。例如:

  1. 单词“slob”和“slob”之间的距离为 0。
  2. 单词“slob”和“5lob”之间的距离是 1。
  3. 单词“slob”和“Flutter”之间的距离是 6。
  4. 单词“slob”和“market”之间的距离是 6。

你可以试试here这个词对。你可能会用你选择的编程语言搜索 Levenshtein distance 的代码。

另一种可能是在 Python 中使用 FuzzyWuzzy。 Fuzzywuzzy 是一个 Python 库,使用 Levenshtein Distance 来计算序列之间的差异,使用简单的包。查找有关 FuzzyWuzzy here 的更多详细信息。

【讨论】:

  • 这非常有用,正是我所追求的。感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-02
  • 2011-03-03
  • 2014-11-27
  • 1970-01-01
  • 2019-05-30
  • 2019-11-17
  • 1970-01-01
相关资源
最近更新 更多