package com.iplatform.openocr; import com.walker.infrastructure.utils.JsonUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.openocr.TextBlock; import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import java.util.ArrayList; import java.util.List; import java.util.Map; public abstract class RestTemplateOcrEngine extends AbstractOcrEngine{ // @Override // protected List loadTableConfigs() { // return null; // } private RestTemplate restTemplate = new RestTemplate(); @Override public List recognize(String id, String imgBase64) { if(StringUtils.isEmpty(id) || StringUtils.isEmpty(imgBase64)){ logger.error("调用ocr服务,请求数据为空: id | img"); return null; } Request request = new Request(); request.setId(id); request.setImg(imgBase64); ResponseEntity entity = restTemplate.postForEntity(this.getRemoteUrl(), request, String.class); if(entity != null){ // List list = entity.getBody(); String jsonData = entity.getBody(); logger.debug(jsonData); if(StringUtils.isEmpty(jsonData)){ return null; } List data = new ArrayList<>(); try { // logger.debug(jsonData); List list = JsonUtils.jsonStringToObject(jsonData, List.class); for(Object obj : list){ data.add(this.transferToTextBlock((Map) obj)); } logger.debug("++++++ 请求返回 TextBlock: " + data.size()); return data; } catch (Exception e) { logger.error("解析json结果错误:" + jsonData, e); return data; } } return null; } private TextBlock transferToTextBlock(Map map){ TextBlock textBlock = new TextBlock(); textBlock.setText(map.get("name").toString()); textBlock.setScore(Float.parseFloat(map.get("score").toString())); textBlock.setStartPosition(new float[]{Float.parseFloat(map.get("x1").toString()), Float.parseFloat(map.get("y1").toString())}); textBlock.setEndPosition(new float[]{Float.parseFloat(map.get("x2").toString()), Float.parseFloat(map.get("y2").toString())}); return textBlock; } }