diff --git a/tcm/src/main/java/com/ccsens/tcm/service/OcrService.java b/tcm/src/main/java/com/ccsens/tcm/service/OcrService.java index 4fc2fb28..4256cd74 100644 --- a/tcm/src/main/java/com/ccsens/tcm/service/OcrService.java +++ b/tcm/src/main/java/com/ccsens/tcm/service/OcrService.java @@ -4,8 +4,6 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.ccsens.tcm.bean.dto.QuestionOcrDto; -import com.ccsens.tcm.bean.po.QuestionOcr; -import com.ccsens.tcm.bean.po.QuestionOcrExample; import com.ccsens.tcm.bean.vo.QuestionOcrVo; import com.ccsens.tcm.persist.dao.QuestionOcrDao; import com.ccsens.tcm.uitl.Constant; @@ -41,7 +39,7 @@ public class OcrService implements IOcrService { List vos = new ArrayList<>(); BaiDuDto.GeneralBasic basic = new BaiDuDto.GeneralBasic(); basic.setUrl(generalBasic.getUrl()); - BaiDuVo.GeneralBasic words = BaiDuUtil.generalBasic(Constant.BaiDu.APP_KEY, Constant.BaiDu.SECRET_KEY, basic); + BaiDuVo.GeneralBasic words = BaiDuUtil.accurateBasic(Constant.BaiDu.APP_KEY, Constant.BaiDu.SECRET_KEY, basic); log.info("文字识别:{}", words); if (words == null || words.getWordsResultNum() <= 0) { return vos; @@ -70,7 +68,7 @@ public class OcrService implements IOcrService { vo.setQuestionId(rule.getQuestionId()); vo.setCode(rule.getCode()); vo.setSort(rule.getSort()); - vo.setContent(builder == null ? "" : builder.toString()); + vo.setContent(builder.toString()); vos.add(vo); }); diff --git a/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java b/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java index 1dc4b127..3ba89e99 100644 --- a/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java +++ b/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java @@ -25,10 +25,12 @@ public class BaiDuUtil { private RedisUtil redisUtil; private static BaiDuUtil util; /**token_appKey*/ - private static final String tokenKey = "baidu_token_"; + private static final String TOKEN_KEY = "baidu_token_"; - private static final String authUrl = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}"; - private static final String generalBasicUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token={}"; + private static final String AUTH_URL = "https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={}&client_secret={}"; + private static final String GENERAL_BASIC_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token={}"; + /**通用文字识别(高精度版)*/ + private static final String ACCURATE_BASIC_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token={}"; @PostConstruct public void init(){ @@ -44,13 +46,13 @@ public class BaiDuUtil { */ public static String getToken(String appKey, String secretKey){ log.info("获取百度认证:{},{}", appKey, secretKey); - String key = tokenKey + appKey; + String key = TOKEN_KEY + appKey; String token = (String) util.redisUtil.get(key); log.info("缓存token:{}", token); if (StrUtil.isNotEmpty(token)) { return token; } - String url = StrUtil.format(authUrl, appKey, secretKey); + String url = StrUtil.format(AUTH_URL, appKey, secretKey); String result = RestTemplateUtil.postUrlEncode(url, null); log.info("获取百度认证:{}", result); JSONObject json = JSONObject.parseObject(result); @@ -67,20 +69,47 @@ public class BaiDuUtil { return token; } + /** + * 调用百度通用文字识别(高精度版) + * @param appKey appKey + * @param secretKey secretKey + * @param basic 图像 + * @return 识别结果 + */ + public static BaiDuVo.GeneralBasic accurateBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) { + return getGeneralBasic(appKey, secretKey, basic, ACCURATE_BASIC_URL); + } - public static BaiDuVo.GeneralBasic generalBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) { + /** + * 调用百度通用文字识别 + * @param appKey appKey + * @param secretKey secretKey + * @param basic 图像 + * @param accurateBasicUrl 路径 + * @return 识别结果 + */ + private static BaiDuVo.GeneralBasic getGeneralBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic, String accurateBasicUrl) { String token = getToken(appKey, secretKey); - String url = StrUtil.format(generalBasicUrl, token); -// String result = RestTemplateUtil.postBody(url, basic); + String url = StrUtil.format(accurateBasicUrl, token); String result = RestTemplateUtil.postUrlEncode(url, basic); - log.info("调用通用文字识别(标准版)结果:{}", result); + log.info("百度orc调用{}的结果是:{}", url, result); if (result.contains(Code.GENERAL_BASIC_ERROR)) { CodeEnum thirdError = CodeEnum.THIRD_ERROR; thirdError.setMsg(result); throw new BaseException(thirdError); } - BaiDuVo.GeneralBasic basicVo = JSONObject.parseObject(result, BaiDuVo.GeneralBasic.class); - return basicVo; + return JSONObject.parseObject(result, BaiDuVo.GeneralBasic.class); + } + + /** + * 调用百度通用文字识别(标准版) + * @param appKey appKey + * @param secretKey secretKey + * @param basic 图像 + * @return 识别结果 + */ + public static BaiDuVo.GeneralBasic generalBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) { + return getGeneralBasic(appKey, secretKey, basic, GENERAL_BASIC_URL); } private static class Code{