diff --git a/app/build.gradle b/app/build.gradle index ebd47b39cff91c77d51f49a906821aefe0eebbe2..227505b6df02808a606a32c8bcb4406164d97aeb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,7 +13,7 @@ android { minSdkVersion 15 targetSdkVersion 22 versionCode 20 - versionName "1.5.4" + versionName "1.6.1" } signingConfigs { diff --git a/app/src/main/java/com/duolebo/blyrobot/tools/OcrManager.kt b/app/src/main/java/com/duolebo/blyrobot/tools/OcrManager.kt index 09383b524badeb7ffa9b3441921d30045b4cafa1..db5b01f9dde4043445898d7e86f714687aebb6da 100644 --- a/app/src/main/java/com/duolebo/blyrobot/tools/OcrManager.kt +++ b/app/src/main/java/com/duolebo/blyrobot/tools/OcrManager.kt @@ -5,7 +5,7 @@ import android.content.Context import android.text.TextUtils import android.util.Log import com.baidu.aip.ocr.AipOcr -import java.io.File +import java.util.regex.Pattern class OcrManager { @@ -51,7 +51,7 @@ class OcrManager { res = getOcrWords(result) // 如果无法识别,调用高精度识别,每天500次额度 - if (!TextUtils.isDigitsOnly(res)) { + if (TextUtils.isEmpty(res)) { result = aipOcr.basicAccurateGeneral(filePath, options) res = getOcrWords(result) } @@ -69,12 +69,34 @@ class OcrManager { val wordsResult = result.getJSONArray("words_result") val num = result.getInt("words_result_num") if (wordsResult != null && num > 0) { - val wordsObject = wordsResult.getJSONObject(0) - words = wordsObject.getString("words") - words = words.replace("-", "") + val len = wordsResult.length() + for ( i in 0..len) { + val wordsObject = wordsResult.getJSONObject(i) + try { + val rawWords = wordsObject.getString("words") + // 提取数字 + val regEx = "[^0-9]" + val p = Pattern.compile(regEx) + val m = p.matcher(rawWords) + val newWords = m.replaceAll("").trim() + if (newWords.length == 11) { + words = newWords + break + } + else if (words.isEmpty()) { + words = newWords + } + else if (newWords.length > words.length) { + words = newWords + } + + } catch (e : java.lang.Exception) { + e.printStackTrace() + } + } } - return words + return words } interface OcrListener {