模糊字串比對與去重
當文字來自 OCR 或時常變動的 UI 文案時,精確字串比對很脆弱。這些輔助函式為相似度評分、 從清單中挑出最佳候選,並收合近似重複項 —— 讓流程可以針對「看起來像 Submit 的按鈕」 動作,而非精確標籤。
預設後端為標準函式庫 difflib,因此本功能**無需任何額外相依**即可運作。若安裝了
選用的 rapidfuzz 套件(pip install je_auto_control[fuzzy])則改用其以加速;無論
何者,分數皆正規化為 0.0..1.0,故呼叫端永不依賴實際執行的後端。BACKEND 標示目
前作用中的後端。不匯入 PySide6。
無頭 API
from je_auto_control import (
fuzzy_ratio, fuzzy_best_match, fuzzy_matches, fuzzy_dedupe)
fuzzy_ratio("Sumbit", "Submit") # ~0.83(預設不分大小寫)
fuzzy_best_match("Sve", ["Cancel", "Save", "Submit"])
# -> ("Save", 0.86, 1) (choice, score, index) —— 低於 score_cutoff 則為 None
fuzzy_matches("login", ["login", "logon", "logout"], limit=2)
# -> [("login", 1.0, 0), ("logon", 0.8, 1)] 由高分至低分排序
fuzzy_dedupe(["Invoice", "invoice ", "Receipt"], threshold=0.85)
# -> ["Invoice", "Receipt"] 近似重複收合,保留第一個
所有函式皆接受 ignore_case``(預設 ``True);``fuzzy_best_match`` /
fuzzy_matches 接受 score_cutoff 以濾除弱候選。
執行器指令
指令 |
效果 |
|---|---|
|
兩字串相似度的 |
|
從候選中取 ``{match, score, index}``(或 null)。 |
|
收合近似重複後的 |
choices / items 接受清單或 JSON 字串清單(因此視覺化建構器可用)。相同操作亦提供
為 MCP 工具(ac_fuzzy_ratio / ac_fuzzy_best_match / ac_fuzzy_dedupe),以及
Script Builder 中 Data 分類下的指令。