簡體   English   中英

Firebase ML Vision TextRecogniser 修改結果以獲得更好的搜索

[英]Firebase ML Vision TextRecogniser modify results for a better search

我在我的 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”。

我不確定顫振/飛鏢中是否有一些烘焙函數可以幫助解決這個問題。 我唯一擁有的是一堆非常討厭的嵌套 for 循環。 我覺得必須有一些優雅的方式來實現這一點。 這種算法甚至有一個術語嗎?

到過那里。

不幸的是,沒有“在 Flutter 中的 function 中烘焙”,因為正如您猜測的那樣,Flutter 是一個移動應用程序框架。 而這些東西(OCR/ML-Vision)屬於其他領域。

您可以做的是通過一個簡單的 REST API。 您將從 Firebase ML-Vision 收到的文本發送到 API,然后獲取響應文本。 您可以使用您選擇的編程語言。 以下是您可以在 API 中執行的操作。

使用Levenshtein 距離 這給出了兩個詞之間的“距離”。 例如:

  1. 單詞“slob”和“slob”之間的距離為0。
  2. 單詞“slob”和“5lob”之間的距離是 1。
  3. “slob”和“Flutter”這兩個詞之間的距離是 6。
  4. “slob”和“market”這兩個詞之間的距離是 6。

您可以在這里嘗試單詞對。 你可能會用你選擇的編程語言搜索 Levenshtein distance 的代碼。

另一種可能是在 Python 中使用 FuzzyWuzzy。 Fuzzywuzzy 是一個 Python 庫,它使用 Levenshtein 距離來計算簡單易用的 package 中的序列之間的差異。 此處查找有關 FuzzyWuzzy 的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM