diff --git a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdiparams b/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdiparams deleted file mode 100644 index 2efedca17f..0000000000 Binary files a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdiparams and /dev/null differ diff --git a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdmodel b/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdmodel deleted file mode 100644 index 0a6bf1e4ae..0000000000 Binary files a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/inference.pdmodel and /dev/null differ diff --git a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/version.txt b/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/version.txt deleted file mode 100644 index 89a056fb9c..0000000000 --- a/3rdparty/resource/global/YoStarEN/resource/PaddleOCR/det/version.txt +++ /dev/null @@ -1 +0,0 @@ -en_PP-OCRv3_det_infer diff --git a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdiparams b/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdiparams deleted file mode 100644 index 02dcef7692..0000000000 Binary files a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdiparams and /dev/null differ diff --git a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdmodel b/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdmodel deleted file mode 100644 index 9a355508fa..0000000000 Binary files a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/inference.pdmodel and /dev/null differ diff --git a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/version.txt b/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/version.txt deleted file mode 100644 index 2632971586..0000000000 --- a/3rdparty/resource/global/YoStarJP/resource/PaddleOCR/det/version.txt +++ /dev/null @@ -1 +0,0 @@ -Multilingual_PP-OCRv3_det_infer diff --git a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdiparams b/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdiparams deleted file mode 100644 index 02dcef7692..0000000000 Binary files a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdiparams and /dev/null differ diff --git a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdmodel b/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdmodel deleted file mode 100644 index 9a355508fa..0000000000 Binary files a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/inference.pdmodel and /dev/null differ diff --git a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/version.txt b/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/version.txt deleted file mode 100644 index 2632971586..0000000000 --- a/3rdparty/resource/global/YoStarKR/resource/PaddleOCR/det/version.txt +++ /dev/null @@ -1 +0,0 @@ -Multilingual_PP-OCRv3_det_infer diff --git a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdiparams b/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdiparams deleted file mode 100644 index 02dcef7692..0000000000 Binary files a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdiparams and /dev/null differ diff --git a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdmodel b/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdmodel deleted file mode 100644 index 9a355508fa..0000000000 Binary files a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/inference.pdmodel and /dev/null differ diff --git a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/version.txt b/3rdparty/resource/global/txwy/resource/PaddleOCR/det/version.txt deleted file mode 100644 index 2632971586..0000000000 --- a/3rdparty/resource/global/txwy/resource/PaddleOCR/det/version.txt +++ /dev/null @@ -1 +0,0 @@ -Multilingual_PP-OCRv3_det_infer diff --git a/src/MaaCore/Config/Miscellaneous/OcrPack.cpp b/src/MaaCore/Config/Miscellaneous/OcrPack.cpp index eeb50312f0..84e7e1fda0 100644 --- a/src/MaaCore/Config/Miscellaneous/OcrPack.cpp +++ b/src/MaaCore/Config/Miscellaneous/OcrPack.cpp @@ -43,26 +43,42 @@ bool asst::OcrPack::load(const std::filesystem::path& path) return false; } - using namespace asst::utils::path_literals; - const auto dst_model_file = paddle_dir / "det"_p / "inference.pdmodel"_p; - const auto dst_params_file = paddle_dir / "det"_p / "inference.pdiparams"_p; - const auto rec_model_file = paddle_dir / "rec"_p / "inference.pdmodel"_p; - const auto rec_params_file = paddle_dir / "rec"_p / "inference.pdiparams"_p; - const auto rec_label_file = paddle_dir / "keys.txt"_p; + do { + using namespace asst::utils::path_literals; + const auto dst_model_file = paddle_dir / "det"_p / "inference.pdmodel"_p; + const auto dst_params_file = paddle_dir / "det"_p / "inference.pdiparams"_p; + const auto rec_model_file = paddle_dir / "rec"_p / "inference.pdmodel"_p; + const auto rec_params_file = paddle_dir / "rec"_p / "inference.pdiparams"_p; + const auto rec_label_file = paddle_dir / "keys.txt"_p; - if (!std::filesystem::exists(dst_model_file) || !std::filesystem::exists(dst_params_file) || - !std::filesystem::exists(rec_model_file) || !std::filesystem::exists(rec_params_file) || - !std::filesystem::exists(rec_label_file)) { - return false; - } + if (std::filesystem::exists(dst_model_file) && std::filesystem::exists(dst_params_file)) { + m_det = std::make_unique( + asst::utils::path_to_ansi_string(dst_model_file), asst::utils::path_to_ansi_string(dst_params_file), + *m_ocr_option); + } + else if (!m_det) { + break; + } + // else 沿用原来的模型 - m_det = std::make_unique(asst::utils::path_to_ansi_string(dst_model_file), - asst::utils::path_to_ansi_string(dst_params_file), - *m_ocr_option); - m_rec = std::make_unique( - asst::utils::path_to_ansi_string(rec_model_file), asst::utils::path_to_ansi_string(rec_params_file), - asst::utils::path_to_ansi_string(rec_label_file), *m_ocr_option); - m_ocr = std::make_unique(m_det.get(), m_rec.get()); + if (std::filesystem::exists(rec_model_file) && std::filesystem::exists(rec_params_file) && + std::filesystem::exists(rec_label_file)) { + m_rec = std::make_unique( + asst::utils::path_to_ansi_string(rec_model_file), asst::utils::path_to_ansi_string(rec_params_file), + asst::utils::path_to_ansi_string(rec_label_file), *m_ocr_option); + } + else if (!m_rec) { + break; + } + // else 沿用原来的模型 + + if (m_det && m_rec) { + m_ocr = std::make_unique(m_det.get(), m_rec.get()); + } + else { + break; + } + } while (false); if (use_temp_dir) { // files can be removed after load