From 2f065453231012cf8a561e5bd7801a124bd347a2 Mon Sep 17 00:00:00 2001 From: Hanquan Liang Date: Fri, 8 May 2020 23:39:38 -0500 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=AF=86=E5=88=AB=E6=97=B6?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E9=81=87=E5=88=B0=E7=9A=84=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 遇到错误或得到空的结果会自动尝试另一接口 --- .../java/com/luooqi/ocr/utils/OcrUtils.java | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/luooqi/ocr/utils/OcrUtils.java b/src/main/java/com/luooqi/ocr/utils/OcrUtils.java index 969c02a..6ebc504 100644 --- a/src/main/java/com/luooqi/ocr/utils/OcrUtils.java +++ b/src/main/java/com/luooqi/ocr/utils/OcrUtils.java @@ -26,18 +26,35 @@ public class OcrUtils { public static String ocrImg(byte[] imgData) { - int i = Math.abs(UUID.randomUUID().hashCode()) % 4; - StaticLog.info("OCR Engine: " + i); - switch (i){ - case 0: - return bdGeneralOcr(imgData); - case 1: - return bdAccurateOcr(imgData); - case 2: - return sogouMobileOcr(imgData); - default: - return sogouWebOcr(imgData); + List lst = Arrays.asList(0, 1, 2, 3); + Collections.shuffle(lst); // order randomly + String ret = null; + for (int i : lst) { + StaticLog.info("OCR Engine: " + i); + try { + switch (i){ + case 0: + ret = bdGeneralOcr(imgData); + break; + case 1: + ret = bdAccurateOcr(imgData); + break; + case 2: + ret = sogouMobileOcr(imgData); + break; + case 3: + ret = sogouWebOcr(imgData); + break; + } + if (ret != null && ret.length() > 0) { + break; // break the for-loop + } + } catch (Exception exc) { + StaticLog.warn(exc.toString()); + StaticLog.warn("error encounterd, will try another OCR Engine"); + } } + return ret; } private static String bdGeneralOcr(byte[] imgData){