| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| #pragma once |
|
|
| #include <algorithm> |
| #include <fstream> |
| #include <map> |
| #include <opencv2/opencv.hpp> |
| #include <string> |
| #include <unordered_set> |
| #include <vector> |
|
|
| #include "absl/status/status.h" |
| #include "absl/status/statusor.h" |
| #ifdef _WIN32 |
| #include <direct.h> |
| #include <io.h> |
| #define mkdir _mkdir |
| static const char PATH_SEPARATOR = '\\'; |
| #else |
| #include <sys/stat.h> |
| #include <sys/types.h> |
| static const char PATH_SEPARATOR = '/'; |
| #endif |
|
|
| #include <errno.h> |
|
|
| class Utility { |
| public: |
| struct PaddleXConfigVariant { |
| enum class Type { NONE, STR, MAP }; |
| Type type; |
| std::string str_val; |
| std::unordered_map<std::string, std::string> map_val; |
| PaddleXConfigVariant() : type(Type::NONE) {} |
| PaddleXConfigVariant(const std::string &val) |
| : type(Type::STR), str_val(val) {} |
| PaddleXConfigVariant(const char *val) |
| : type(Type::STR), str_val(val ? val : "") {} |
| PaddleXConfigVariant( |
| const std::unordered_map<std::string, std::string> &val) |
| : type(Type::MAP), map_val(val) {} |
| bool IsStr() const { return type == Type::STR; } |
| bool IsMap() const { return type == Type::MAP; } |
| const std::string &GetStr() const { |
| assert(IsStr()); |
| return str_val; |
| } |
| const std::unordered_map<std::string, std::string> &GetMap() const { |
| assert(IsMap()); |
| return map_val; |
| } |
| }; |
| static constexpr const char *MODEL_FILE_PREFIX = "inference"; |
| static const std::set<std::string> kImgSuffixes; |
|
|
| static absl::StatusOr< |
| std::map<std::string, std::pair<std::string, std::string>>> |
| GetModelPaths(const std::string &model_dir, |
| const std::string &model_file_prefix = MODEL_FILE_PREFIX); |
|
|
| static absl::StatusOr<std::string> |
| FindModelPath(const std::string &model_dir, const std::string &model_name); |
| static absl::StatusOr<std::string> |
| GetConfigPaths(const std::string &model_dir, |
| const std::string &model_file_prefix = MODEL_FILE_PREFIX); |
|
|
| static absl::StatusOr<std::string> |
| GetDefaultConfig(std::string pipeline_name); |
|
|
| static absl::Status FileExists(const std::string &path); |
|
|
| |
| static bool IsMkldnnAvailable(); |
|
|
| static void PrintShape(const cv::Mat &img); |
|
|
| static absl::Status MyCreateDirectory(const std::string &path); |
| static absl::Status MyCreatePath(const std::string &path); |
| static absl::Status MyCreateFile(const std::string &filepath); |
|
|
| static absl::StatusOr<std::vector<cv::Mat>> SplitBatch(const cv::Mat &batch); |
|
|
| static absl::StatusOr<cv::Mat> MyLoadImage(const std::string &file_path); |
| static bool IsDirectory(const std::string &path); |
| static std::string GetFileExtension(const std::string &file_path); |
| static void GetFilesRecursive(const std::string &dir_path, |
| std::vector<std::string> &file_list); |
| static std::string ToLower(const std::string &str); |
| static bool IsImageFile(const std::string &file_path); |
| static int MakeDir(const std::string &path); |
| static absl::Status CreateDirectoryRecursive(const std::string &path); |
| static absl::Status CreateDirectoryForFile(const std::string &filePath); |
| static absl::StatusOr<std::string> |
| SmartCreateDirectoryForImage(std::string save_path, |
| const std::string &input_path, |
| const std::string &suffix = "_res"); |
| static absl::StatusOr<std::string> |
| SmartCreateDirectoryForJson(const std::string &save_path, |
| const std::string &input_path, |
| const std::string &suffix = "_res"); |
|
|
| static absl::StatusOr<int> StringToInt(std::string s); |
| static bool StringToBool(const std::string &str); |
| static std::string VecToString(const std::vector<int> &input); |
|
|
| static absl::StatusOr<std::tuple<std::string, std::string, std::string>> |
| GetOcrModelInfo(std::string lang, std::string ppocr_version); |
| }; |
|
|