From 812c2d5b23b6aaa945747be2d3125d90e5ffe57d Mon Sep 17 00:00:00 2001 From: liuyang Date: Tue, 8 Jan 2019 16:19:05 +0800 Subject: [PATCH] =?UTF-8?q?APK=E5=9B=BE=E7=89=87=E6=8A=93=E5=8F=96?= =?UTF-8?q?=E8=AF=86=E5=88=AB=E5=8F=8A=E8=BD=AE=E6=92=AD=E6=B5=81=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E6=8A=93=E5=8F=96,=20=E4=BC=98=E5=8C=96=E8=AF=86?= =?UTF-8?q?=E5=88=AB=E7=BB=93=E6=9E=9C=E6=8F=90=E5=8F=96=20#BYLSERVER-1438?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../com/duolebo/blyrobot/tools/OcrManager.kt | 34 +++++++++++++++---- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ebd47b3..227505b 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 09383b5..db5b01f 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 { -- 2.21.0