OCR 使用分類梳理
梳理日期:2026-08-21。統計專案內所有 OCR 呼叫(
src/下共 157 處,27 個檔案),按「識別結果是否被業務讀取」分為三類,供開發與 OCR 混淆補丁維護參考。
核心判斷標準
- 點選型:識別結果只當座標用(識別到就點選),不讀取
Box.name內容。 - 判斷型:讀取
box.name/ 識別文本做分支判斷、數字解析、狀態判斷,或依據 OCR 匹配結果是否存在/可見性做決策(如導航中判斷目標是否可見,即使不讀name)——識別結果本身是決策依據。 - 混合/複雜:點選 + 讀內容聯動,或同一程式碼塊多次 OCR 協同。
分類彙總
| 分類 | 數量 | 特徵 |
|---|---|---|
| 點選型 | ~70 處 | wait_click_ocr 一鍵點選;wait_ocr 結果直接 click(result[0]);座標對準 |
| 判斷型 | ~35 處 | 讀 name 做數字解析 / 狀態判斷 / 名稱決策;OCR 結果可見性判斷 |
| 混合/複雜 | ~10 處 | 點選後讀 name 決定走向;大區域全文本解析 |
| 未分類 | ~42 處 | 純除錯測試(test_ocr 等)、重複呼叫的輔助呼叫,未進入業務分類 |
三類合計約 115 處,其餘 ~42 處為除錯/輔助呼叫(如
daily_outpost_mixin.py的test_ocr),故總數 157 處。
一、點選型(識別只當座標)
形式:
wait_click_ocr(...)一步完成——領獎、換隊、使用藥劑、頁籤切換、確定/放棄按鈕。wait_ocr結果直接self.click(result[0])——定位按鈕後點擊。- 座標對準型:
src/tasks/navigation/mixin/navigation_mixin.py:413align_ocr_or_find_target_to_center,結果只取 x/y 做滑鼠對準移動,被 battle / zip_line / delivery 複用。
典型檔案:
src/tasks/daily/misc/daily_reward_mixin.py(周常/理智補給各領取入口,多為布林判斷的點選)src/tasks/daily/misc/daily_craft_mixin.py(存放/裝備/製作頁籤)src/tasks/daily/misc/daily_logistics_mixin.py(一鍵領取、各節點按鈕)src/tasks/onetime/WarehouseTransferTask.py(倉庫切換、確認、存放)src/tasks/onetime/DemoDrawTask.py、src/tasks/trigger/AutoInteractionTask.py
二、判斷型(需要識別結果做業務決策)
2.1 數字 / 價格解析
- 門票:
src/tasks/mixin/common.py:134detect_ticket_number,`re.compile(r'^[\d.]*k?/\d+k? 解析 "2k"→2000。 - 價格:
src/tasks/daily/daily_shop_mixin.py:84/91、src/tasks/daily/daily_trade_mixin.py:86/139/157。 - 時效:
src/tasks/daily/daily_battle_mixin.py:371/402,單位(天/小時)+ 數字解析排序消耗。 - 據點券數:
src/tasks/daily/misc/daily_outpost_mixin.py:10。
2.2 狀態判斷
- 等待文案出現/消失:
zip_line_mixin.py(滑索停止提示)、daily_liaison_mixin.py(艦橋/信賴彈窗)、game_flow_mixin.py、DeliveryTask.py:348(tab 文案判斷)。 - 目標/標記可見性:
navigation_mixin.py:112/185(導航中 OCR 判斷目標是否可見,不讀 name 不點選)。 - 導航回退:
runtime_mixin.py:450safe_back用 OCR 判斷目標可見性。
2.3 名稱決策
- 拾取黑/白名單:
src/tasks/trigger/AutoPickTask.py:50-53,讀texts[0].name決定是否拾取 / 按 F 次數。 - 倉庫識別:
WarehouseTransferTask.py:73-80,讀 name 判斷"武陵倉庫/谷地倉庫"。
三、混合 / 複雜
- 點選後讀 name 決定走向:
daily_credit_mixin.py:10-17:點選"收取信用/無待領取"後,"收取信用" in result[0].name決定是否wait_pop_up。daily_boat_mixin.py:231:點選後按 name 判斷"收取/培養/停工"哪種。daily_battle_mixin.py:798:讀 name 過濾"已選"後點擊。daily_logistics_mixin.py:129:點選 + 讀 name 決定後續步驟起始下標。
- 大區域全文本解析:
TakeDeliveryTask.py:188:全量文本 + 正則金額解析 + 接取判斷。
- 複雜聯動:
DeliveryTask.py:337-358to_storage_point_and_back_zip_line中 tab 文案出現/消失判斷 + 點選登上滑索架 + 多次 OCR 協同。
敏感度結論
判斷型核心鏈路(對 OCR 識別質量最敏感,配 ocr_text_fix.json 混淆補丁收益最大):
AutoPickTask(掉落物名稱決策)DeliveryTask/TakeDeliveryTask(委託行、金額、地點回填)daily_trade(價格篩選)
除上述核心鏈路外,其餘約 105 處(點選型 + 混合型 + 未分類)對識別內容不敏感,只需"能匹配到位置"即可,混淆補丁對其幫助有限。
附註
daily_outpost_mixin.py:201/208/215的test_ocr/test_ocr_full為純 OCR 識別測試(除錯用途)。- 判斷"點選型 vs 判斷型"時以是否讀取識別文本內容為準,識別後只當座標 = 點選型。 )` 解析 "2k"→2000。
- 價格:OK_TRANSLATION_SEGMENT_25、OK_TRANSLATION_SEGMENT_26。
- 時效:OK_TRANSLATION_SEGMENT_27,單位(天/小時)+ 數字解析排序消耗。
- 據點券數:OK_TRANSLATION_SEGMENT_28。
2.2 狀態判斷
- 等待文案出現/消失:OK_TRANSLATION_SEGMENT_29(滑索停止提示)、OK_TRANSLATION_SEGMENT_30(艦橋/信賴彈窗)、OK_TRANSLATION_SEGMENT_31、OK_TRANSLATION_SEGMENT_32(tab 文案判斷)。
- 目標/標記可見性:OK_TRANSLATION_SEGMENT_33(導航中 OCR 判斷目標是否可見,不讀 name 不點選)。
- 導航回退:OK_TRANSLATION_SEGMENT_34 OK_TRANSLATION_SEGMENT_35 用 OCR 判斷目標可見性。
2.3 名稱決策
- 拾取黑/白名單:OK_TRANSLATION_SEGMENT_36,讀 OK_TRANSLATION_SEGMENT_37 決定是否拾取 / 按 F 次數。
- 倉庫識別:OK_TRANSLATION_SEGMENT_38,讀 name 判斷"武陵倉庫/谷地倉庫"。
三、混合 / 複雜
- 點選後讀 name 決定走向:
- OK_TRANSLATION_SEGMENT_39:點選"收取信用/無待領取"後,OK_TRANSLATION_SEGMENT_40 決定是否 OK_TRANSLATION_SEGMENT_41。
- OK_TRANSLATION_SEGMENT_42:點選後按 name 判斷"收取/培養/停工"哪種。
- OK_TRANSLATION_SEGMENT_43:讀 name 過濾"已選"後點擊。
- OK_TRANSLATION_SEGMENT_44:點選 + 讀 name 決定後續步驟起始下標。
- 大區域全文本解析:
- OK_TRANSLATION_SEGMENT_45:全量文本 + 正則金額解析 + 接取判斷。
- 複雜聯動:OK_TRANSLATION_SEGMENT_46 OK_TRANSLATION_SEGMENT_47 中 tab 文案出現/消失判斷 + 點選登上滑索架 + 多次 OCR 協同。
敏感度結論
判斷型核心鏈路(對 OCR 識別質量最敏感,配 OK_TRANSLATION_SEGMENT_48 混淆補丁收益最大):
- OK_TRANSLATION_SEGMENT_49(掉落物名稱決策)
- OK_TRANSLATION_SEGMENT_50 / OK_TRANSLATION_SEGMENT_51(委託行、金額、地點回填)
- OK_TRANSLATION_SEGMENT_52(價格篩選)
除上述核心鏈路外,其餘約 105 處(點選型 + 混合型 + 未分類)對識別內容不敏感,只需"能匹配到位置"即可,混淆補丁對其幫助有限。
附註
- OK_TRANSLATION_SEGMENT_53 的 OK_TRANSLATION_SEGMENT_54 / OK_TRANSLATION_SEGMENT_55 為純 OCR 識別測試(除錯用途)。
- 判斷"點選型 vs 判斷型"時以是否讀取識別文本內容為準,識別後只當座標 = 點選型。