java调用线上paddleOCR接口

@PostMapping(value = "/upload")
public String uploadImage(MultipartFile file) throws IOException {
        if (file != null && !file.isEmpty()) {
            byte[] bytes = file.getBytes();
            List<Map> maps =RequestUtil.getStringStringMap(bytes);
            return JSONObject.toJSON(maps).toString();
        }
        return "No file uploaded.";
}

public static List<Map> getStringStringMap(byte[] bytes) {
        log.info("=================start invoke=========================");
        StringBuilder result = new StringBuilder();

        HttpHeaders headers = new HttpHeaders();
        //设置请求头格式
        headers.setContentType(MediaType.APPLICATION_JSON);
        //构建请求参数
        MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>();
        //添加请求参数images,并将Base64编码的图片传入
        map.add("images", ImageToBase64(bytes));
        //构建请求
        HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
        RestTemplate restTemplate = new RestTemplate();
        //发送请求, springboot内置的restTemplate
        Map json = restTemplate.postForEntity("http://127.0.0.1:8866/predict/ocr_system", request, Map.class).getBody();
        System.out.println(json);
        List<List<Map>> jsons = (List<List<Map>>) json.get("results");
//        System.out.println(jsons);

        for (int i = 0; i < jsons.get(0).size(); i++) {
            System.out.println("当前的文字是:" + jsons.get(0).get(i).get("text"));
            // 这里光靠这个trim()有些空格是去除不掉的,所以还需要使用替换这个,双重保险
            result.append(jsons.get(0).get(i).get("text").toString().trim().replace(" ", ""));
        }
        String trim = result.toString().trim();
        log.info("=================拼接后的文字是=========================");
        log.info(trim);
        log.info("=======================接下来就是使用正则表达提取文字信息了===============================");
        List<Map> maps = jsons.get(0);
        return maps;
    }

    private static String ImageToBase64(byte[] data) {
        // 直接调用springboot内置的springframework内置的犯法
        return Base64Utils.encodeToString(data);
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容