diff --git a/src/MaaCore/Config/TaskData.cpp b/src/MaaCore/Config/TaskData.cpp index c2a10a8b48..863bab9394 100644 --- a/src/MaaCore/Config/TaskData.cpp +++ b/src/MaaCore/Config/TaskData.cpp @@ -899,7 +899,7 @@ bool asst::TaskData::syntax_check(const std::string& task_name, const json::valu { "action", "algorithm", "baseTask", "cache", "exceededNext", "fullMatch", "hash", "isAscii", "maskRange", "maxTimes", "next", "ocrReplace", - "onErrorNext", "postDelay", "preDelay", "rectMove", "reduceOtherTimes", "roi", + "onErrorNext", "postDelay", "preDelay", "rectMove", "reduceOtherTimes", "replaceFull", "roi", "specialParams", "sub", "subErrorIgnored", "templThreshold", "template", "text", "threshold", "withoutDet", } }, @@ -914,7 +914,7 @@ bool asst::TaskData::syntax_check(const std::string& task_name, const json::valu { "action", "algorithm", "baseTask", "cache", "exceededNext", "fullMatch", "isAscii", "maxTimes", "next", "ocrReplace", - "onErrorNext", "postDelay", "preDelay", "rectMove", "reduceOtherTimes", + "onErrorNext", "postDelay", "preDelay", "rectMove", "reduceOtherTimes", "replaceFull", "roi", "sub", "subErrorIgnored", "text", "withoutDet", "specialParams" } }, diff --git a/src/MaaCore/Task/BattleHelper.cpp b/src/MaaCore/Task/BattleHelper.cpp index 206278f09a..154b2b73e8 100644 --- a/src/MaaCore/Task/BattleHelper.cpp +++ b/src/MaaCore/Task/BattleHelper.cpp @@ -191,7 +191,8 @@ bool asst::BattleHelper::update_deployment(bool init, const cv::Mat& reusable) auto analyze = [&](OcrImageAnalyzer& name_analyzer) { name_analyzer.set_image(name_image); name_analyzer.set_task_info(oper_name_ocr_task_name()); - name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map); + name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map, + Task.get("CharsNameOcrReplace")->replace_full); if (!name_analyzer.analyze()) { return std::string(); } diff --git a/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp b/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp index 2be908161e..3552290b79 100644 --- a/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp +++ b/src/MaaCore/Task/Infrast/InfrastAbstractTask.cpp @@ -276,10 +276,10 @@ bool asst::InfrastAbstractTask::select_opers_review(infrast::CustomRoomConfig co return false; } - const auto& ocr_replace = Task.get("CharsNameOcrReplace")->replace_map; + const auto& ocr_replace = Task.get("CharsNameOcrReplace"); for (const auto& oper : oper_analyzer_res) { OcrWithPreprocessImageAnalyzer name_analyzer; - name_analyzer.set_replace(ocr_replace); + name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); name_analyzer.set_image(oper.name_img); name_analyzer.set_expansion(0); if (!name_analyzer.analyze()) { @@ -332,10 +332,10 @@ bool asst::InfrastAbstractTask::select_custom_opers(std::vector& pa oper_analyzer.sort_by_loc(); partial_result.clear(); - const auto& ocr_replace = Task.get("CharsNameOcrReplace")->replace_map; + const auto& ocr_replace = Task.get("CharsNameOcrReplace"); for (const auto& oper : oper_analyzer.get_result()) { OcrWithPreprocessImageAnalyzer name_analyzer; - name_analyzer.set_replace(ocr_replace); + name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); name_analyzer.set_image(oper.name_img); name_analyzer.set_expansion(0); if (!name_analyzer.analyze()) { @@ -387,12 +387,12 @@ void asst::InfrastAbstractTask::order_opers_selection(const std::vector("CharsNameOcrReplace")->replace_map; + const auto& ocr_replace = Task.get("CharsNameOcrReplace"); std::vector page_result; for (const auto& oper : oper_analyzer.get_result()) { OcrWithPreprocessImageAnalyzer name_analyzer; - name_analyzer.set_replace(ocr_replace); + name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); name_analyzer.set_image(oper.name_img); name_analyzer.set_expansion(0); if (!name_analyzer.analyze()) { diff --git a/src/MaaCore/Task/Infrast/InfrastProductionTask.cpp b/src/MaaCore/Task/Infrast/InfrastProductionTask.cpp index a5393a0a54..97e9b23525 100644 --- a/src/MaaCore/Task/Infrast/InfrastProductionTask.cpp +++ b/src/MaaCore/Task/Infrast/InfrastProductionTask.cpp @@ -447,7 +447,8 @@ bool asst::InfrastProductionTask::optimal_calc() } else { OcrWithPreprocessImageAnalyzer name_analyzer(find_iter->name_img); - name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map); + name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map, + Task.get("CharsNameOcrReplace")->replace_full); Log.trace("Analyze name filter"); if (!name_analyzer.analyze()) { continue; @@ -574,7 +575,8 @@ bool asst::InfrastProductionTask::opers_choose() } else { OcrWithPreprocessImageAnalyzer name_analyzer(lhs.name_img); - name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map); + name_analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map, + Task.get("CharsNameOcrReplace")->replace_full); Log.trace("Analyze name filter"); if (!name_analyzer.analyze()) { return false; diff --git a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp index ef9376c90f..c68ab6b29f 100644 --- a/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp +++ b/src/MaaCore/Task/Miscellaneous/BattleFormationTask.cpp @@ -129,16 +129,16 @@ std::vector asst::BattleFormationTask::analyzer_opers() { auto formation_task_ptr = Task.get("BattleQuickFormationOCR"); auto image = ctrler()->get_image(); - auto& ocr_replace = Task.get("CharsNameOcrReplace")->replace_map; + auto& ocr_replace = Task.get("CharsNameOcrReplace"); OcrWithFlagTemplImageAnalyzer name_analyzer(image); name_analyzer.set_task_info("BattleQuickFormation-OperNameFlag", "BattleQuickFormationOCR"); - name_analyzer.set_replace(ocr_replace); + name_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); name_analyzer.analyze(); OcrWithFlagTemplImageAnalyzer special_focus_analyzer(image); special_focus_analyzer.set_task_info("BattleQuickFormation-OperNameFlag-SpecialFocus", "BattleQuickFormationOCR"); - special_focus_analyzer.set_replace(ocr_replace); + special_focus_analyzer.set_replace(ocr_replace->replace_map, ocr_replace->replace_full); special_focus_analyzer.analyze(); auto opers_result = name_analyzer.get_result(); diff --git a/src/MaaCore/Vision/OcrImageAnalyzer.cpp b/src/MaaCore/Vision/OcrImageAnalyzer.cpp index 00cebbec4f..5a4f67adb8 100644 --- a/src/MaaCore/Vision/OcrImageAnalyzer.cpp +++ b/src/MaaCore/Vision/OcrImageAnalyzer.cpp @@ -116,7 +116,7 @@ void asst::OcrImageAnalyzer::set_required(std::vector required) noe m_required = std::move(required); } -void asst::OcrImageAnalyzer::set_replace(const std::unordered_map& replace) noexcept +void asst::OcrImageAnalyzer::set_replace(const std::unordered_map& replace, bool replace_full) noexcept { m_replace = {}; for (auto&& [key, val] : replace) { @@ -124,16 +124,16 @@ void asst::OcrImageAnalyzer::set_replace(const std::unordered_map required) noexcept; - void set_replace(const std::unordered_map& replace) noexcept; + void set_replace(const std::unordered_map& replace, bool replace_full = false) noexcept; virtual void set_task_info(std::shared_ptr task_ptr); virtual void set_task_info(const std::string& task_name); diff --git a/src/MaaCore/Vision/Roguelike/RoguelikeRecruitImageAnalyzer.cpp b/src/MaaCore/Vision/Roguelike/RoguelikeRecruitImageAnalyzer.cpp index d299ca5d2c..ccb6cf68af 100644 --- a/src/MaaCore/Vision/Roguelike/RoguelikeRecruitImageAnalyzer.cpp +++ b/src/MaaCore/Vision/Roguelike/RoguelikeRecruitImageAnalyzer.cpp @@ -12,7 +12,8 @@ bool asst::RoguelikeRecruitImageAnalyzer::analyze() OcrWithFlagTemplImageAnalyzer analyzer(m_image); analyzer.set_task_info("RoguelikeRecruitOcrFlag", "RoguelikeRecruitOcr"); - analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map); + analyzer.set_replace(Task.get("CharsNameOcrReplace")->replace_map, + Task.get("CharsNameOcrReplace")->replace_full); analyzer.set_threshold(Task.get("RoguelikeRecruitOcr")->specific_rect.x); if (!analyzer.analyze()) { diff --git a/src/MaaCore/Vision/Roguelike/RoguelikeSkillSelectionImageAnalyzer.cpp b/src/MaaCore/Vision/Roguelike/RoguelikeSkillSelectionImageAnalyzer.cpp index d495ef75fb..906463ea1e 100644 --- a/src/MaaCore/Vision/Roguelike/RoguelikeSkillSelectionImageAnalyzer.cpp +++ b/src/MaaCore/Vision/Roguelike/RoguelikeSkillSelectionImageAnalyzer.cpp @@ -54,7 +54,8 @@ std::string asst::RoguelikeSkillSelectionImageAnalyzer::name_analyze(const Rect& analyzer.set_task_info(name_task_ptr); analyzer.set_image(m_image); analyzer.set_roi(roi.move(name_task_ptr->roi)); - analyzer.set_replace(std::dynamic_pointer_cast(Task.get("CharsNameOcrReplace"))->replace_map); + analyzer.set_replace(std::dynamic_pointer_cast(Task.get("CharsNameOcrReplace"))->replace_map, + std::dynamic_pointer_cast(Task.get("CharsNameOcrReplace"))->replace_full); if (!analyzer.analyze()) { return {};