mirror of
https://github.com/MaaAssistantArknights/MaaAssistantArknights.git
synced 2026-07-18 18:20:39 +08:00
80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
#include "OCRerConfig.h"
|
|
|
|
#include "Config/Miscellaneous/OcrConfig.h"
|
|
#include "Config/TaskData.h"
|
|
|
|
using namespace asst;
|
|
|
|
void OCRerConfig::set_params(Params params)
|
|
{
|
|
m_params = std::move(params);
|
|
}
|
|
|
|
void OCRerConfig::set_required(std::vector<std::string> required) noexcept
|
|
{
|
|
ranges::transform(required, required.begin(),
|
|
[](const std::string& str) { return OcrConfig::get_instance().process_equivalence_class(str); });
|
|
m_params.required = std::move(required);
|
|
}
|
|
|
|
void OCRerConfig::set_replace(const std::unordered_map<std::string, std::string>& replace, bool replace_full) noexcept
|
|
{
|
|
m_params.replace.clear();
|
|
m_params.replace.reserve(replace.size());
|
|
|
|
for (auto&& [key, val] : replace) {
|
|
auto new_key = OcrConfig::get_instance().process_equivalence_class(key);
|
|
// do not create new_val as val is user-provided, and can avoid issues like 夕 and katakana タ
|
|
m_params.replace.emplace(std::move(new_key), val);
|
|
}
|
|
m_params.replace_full = replace_full;
|
|
}
|
|
|
|
void OCRerConfig::set_task_info(std::shared_ptr<TaskInfo> task_ptr)
|
|
{
|
|
_set_task_info(*std::dynamic_pointer_cast<OcrTaskInfo>(task_ptr));
|
|
}
|
|
|
|
void OCRerConfig::set_task_info(const std::string& task_name)
|
|
{
|
|
set_task_info(Task.get(task_name));
|
|
}
|
|
|
|
void asst::OCRerConfig::set_without_det(bool without_det) noexcept
|
|
{
|
|
m_params.without_det = without_det;
|
|
}
|
|
|
|
void OCRerConfig::set_use_char_model(bool enable) noexcept
|
|
{
|
|
m_params.use_char_model = enable;
|
|
}
|
|
|
|
void OCRerConfig::set_bin_threshold(int lower, int upper)
|
|
{
|
|
m_params.bin_threshold_lower = lower;
|
|
m_params.bin_threshold_upper = upper;
|
|
}
|
|
|
|
void OCRerConfig::set_bin_expansion(int expansion)
|
|
{
|
|
m_params.bin_expansion = expansion;
|
|
}
|
|
|
|
void asst::OCRerConfig::set_bin_trim_threshold(int left, int right)
|
|
{
|
|
m_params.bin_left_trim_threshold = left;
|
|
m_params.bin_right_trim_threshold = right;
|
|
}
|
|
|
|
void OCRerConfig::_set_task_info(OcrTaskInfo task_info)
|
|
{
|
|
set_required(std::move(task_info.text));
|
|
m_params.full_match = task_info.full_match;
|
|
set_replace(task_info.replace_map, task_info.replace_full);
|
|
m_params.use_char_model = task_info.is_ascii;
|
|
m_params.without_det = task_info.without_det;
|
|
|
|
_set_roi(task_info.roi);
|
|
}
|