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:413 align_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:134 detect_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:450 safe_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-358 to_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 判斷型"時以是否讀取識別文本內容為準,識別後只當座標 = 點選型。
在 GitHub 查看來源 ↗ · 頁面產生時間: 2026年10月23日