From cac9b1480785802135c3db488609d107f5b7cb96 Mon Sep 17 00:00:00 2001 From: lucky Date: Wed, 26 Jan 2022 12:10:25 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BE=E5=BA=A6Util?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ccsens/util/baidu/BaiDuUtil.java | 32 +++++++++++++++++++ .../java/com/ccsens/util/baidu/BaiDuVo.java | 20 ++++++++++++ 2 files changed, 52 insertions(+) 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 3ba89e99..64cd7b5b 100644 --- a/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java +++ b/util/src/main/java/com/ccsens/util/baidu/BaiDuUtil.java @@ -31,6 +31,7 @@ public class BaiDuUtil { 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={}"; + private static final String VAT_INVOICE = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice?access_token={}"; @PostConstruct public void init(){ @@ -112,6 +113,37 @@ public class BaiDuUtil { return getGeneralBasic(appKey, secretKey, basic, GENERAL_BASIC_URL); } + /** + * 调用百度增值税发票识别 + * @param appKey appKey + * @param secretKey secretKey + * @param basic 图像 + * @return 识别结果 + */ + public static BaiDuVo.BillBasic billBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic) { + return getBillBasic(appKey, secretKey, basic, VAT_INVOICE); + } + /** + * 增值税发票识别 + * @param appKey appKey + * @param secretKey secretKey + * @param basic 图像 + * @param accurateBasicUrl 路径 + * @return 识别结果 + */ + private static BaiDuVo.BillBasic getBillBasic(String appKey, String secretKey, BaiDuDto.GeneralBasic basic, String accurateBasicUrl) { + String token = getToken(appKey, secretKey); + String url = StrUtil.format(accurateBasicUrl, token); + String result = RestTemplateUtil.postUrlEncode(url, basic); + log.info("百度orc调用{}的结果是:{}", url, result); + if (result.contains(Code.GENERAL_BASIC_ERROR)) { + CodeEnum thirdError = CodeEnum.THIRD_ERROR; + thirdError.setMsg(result); + throw new BaseException(thirdError); + } + return JSONObject.parseObject(result, BaiDuVo.BillBasic.class); + } + private static class Code{ private final static String ERROR = "error"; private final static String GENERAL_BASIC_ERROR = "error_code"; diff --git a/util/src/main/java/com/ccsens/util/baidu/BaiDuVo.java b/util/src/main/java/com/ccsens/util/baidu/BaiDuVo.java index 4c722df6..5e8c2209 100644 --- a/util/src/main/java/com/ccsens/util/baidu/BaiDuVo.java +++ b/util/src/main/java/com/ccsens/util/baidu/BaiDuVo.java @@ -30,4 +30,24 @@ public class BaiDuVo { public static class GeneralWord{ private String words; } + + @ApiModel("增值税发票识别(标准版)") + @Data + public static class BillBasic{ + @JSONField(name="log_id") + private String logId; + @JSONField(name="words_result") + private List wordsResult; + @JSONField(name="words_result_num") + private int wordsResultNum; + } + @Data + @ApiModel("发票识别-结果") + public static class BillInfo{ + private String invoiceCode; + private String invoiceNum; + private String totalAmount; + private String totalTax; + private String invoiceDate; + } }