diff --git a/PaddleOCR4Android/src/main/cpp/ocr_crnn_process.cpp b/PaddleOCR4Android/src/main/cpp/ocr_crnn_process.cpp index 44c34a2..4a3eb28 100644 --- a/PaddleOCR4Android/src/main/cpp/ocr_crnn_process.cpp +++ b/PaddleOCR4Android/src/main/cpp/ocr_crnn_process.cpp @@ -22,7 +22,10 @@ const std::string CHARACTER_TYPE = "ch"; const int MAX_DICT_LENGTH = 6624; -const std::vector REC_IMAGE_SHAPE = {3, 32, 320}; +//ch_PP-OCRv2 +//const std::vector REC_IMAGE_SHAPE = {3, 32, 320}; +//ch_PP-OCRv3 +const std::vector REC_IMAGE_SHAPE = {3, 48, 320}; static cv::Mat crnn_resize_norm_img(cv::Mat img, float wh_ratio) { int imgC = REC_IMAGE_SHAPE[0]; @@ -30,7 +33,10 @@ static cv::Mat crnn_resize_norm_img(cv::Mat img, float wh_ratio) { int imgH = REC_IMAGE_SHAPE[1]; if (CHARACTER_TYPE == "ch") - imgW = int(32 * wh_ratio); + //ch_PP-OCRv2 + //imgW = int(32 * wh_ratio); + //ch_PP-OCRv3 + imgW = int(48 * wh_ratio); float ratio = float(img.cols) / float(img.rows); int resize_w = 0; diff --git a/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_det_opt.nb b/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_det_opt.nb new file mode 100644 index 0000000..da632c6 Binary files /dev/null and b/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_det_opt.nb differ diff --git a/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_rec_opt.nb b/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_rec_opt.nb new file mode 100644 index 0000000..e7bb0ae Binary files /dev/null and b/app/src/main/assets/models/ch_PP-OCRv3/ch_PP-OCRv3_rec_opt.nb differ diff --git a/app/src/main/java/com/equationl/paddleocr4android/app/MainActivity.kt b/app/src/main/java/com/equationl/paddleocr4android/app/MainActivity.kt index bd87405..a7df5c1 100644 --- a/app/src/main/java/com/equationl/paddleocr4android/app/MainActivity.kt +++ b/app/src/main/java/com/equationl/paddleocr4android/app/MainActivity.kt @@ -34,12 +34,20 @@ class MainActivity : AppCompatActivity() { // 配置 val config = OcrConfig() //config.labelPath = null - - config.modelPath = "models/ch_PP-OCRv2" // 不使用 "/" 开头的路径表示安装包中 assets 目录下的文件,例如当前表示 assets/models/ocr_v2_for_cpu + //ch_PP-OCRv2 + //config.modelPath = "models/ch_PP-OCRv2" // 不使用 "/" 开头的路径表示安装包中 assets 目录下的文件,例如当前表示 assets/models/ocr_v2_for_cpu + //ch_PP-OCRv3 + config.modelPath = "models/ch_PP-OCRv3" // 不使用 "/" 开头的路径表示安装包中 assets 目录下的文件,例如当前表示 assets/models/ocr_v2_for_cpu //config.modelPath = "/sdcard/Android/data/com.equationl.paddleocr4android.app/files/models" // 使用 "/" 表示手机储存路径,测试时请将下载的三个模型放置于该目录下 config.clsModelFilename = "cls.nb" // cls 模型文件名 + //ch_PP-OCRv2 config.detModelFilename = "det_db.nb" // det 模型文件名 - config.recModelFilename = "rec_crnn.nb" // rec 模型文件名 + //ch_PP-OCRv3 + config.detModelFilename = "ch_PP-OCRv3_det_opt.nb" // det 模型文件名 + //ch_PP-OCRv2 + //config.recModelFilename = "rec_crnn.nb" // rec 模型文件名 + //ch_PP-OCRv3 + config.recModelFilename = "ch_PP-OCRv3_rec_opt.nb" // rec 模型文件名 // 运行全部模型 // 请根据需要配置,三项全开识别率最高;如果只开识别几乎无法正确识别,至少需要搭配检测或分类其中之一 @@ -130,4 +138,4 @@ class MainActivity : AppCompatActivity() { // 释放 ocr.releaseModel() } -} \ No newline at end of file +}