package com.ltkj.web.controller.Idcard; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.web.config.IdcardUtil.IdcardUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.io.FileUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.net.URLEncoder; import java.util.Objects; import static com.ltkj.web.config.IdcardUtil.IdcardUtil.readImageFile; /** * @Company: 西安路泰科技有限公司 * @Author: zjh * @Date: 2023/3/17 13:41 */ @RestController @RequestMapping("/idCard") @Api(tags = "身份证识别") public class IdcardaController { @PostMapping @ApiOperation(value = "身份证识别接口") public AjaxResult list(@RequestPart("file") MultipartFile files){ File file = new File(Objects.requireNonNull(files.getOriginalFilename())); // 请求url String url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"; try { FileUtils.copyInputStreamToFile(files.getInputStream(), file); // 本地文件路径 //String filePath = "C:\\Users\\w\\Pictures\\Saved Pictures\\微信图片_20230317105940.jpg"; byte[] imgData = readImageFile(file); String imgStr = IdcardUtil.encode(imgData); String imgParam = URLEncoder.encode(imgStr, "UTF-8"); String param = "id_card_side=" + "front" + "&image=" + imgParam; // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。 String accessToken = IdcardUtil.getAccessToken(); String result = IdcardUtil.post(url, accessToken,param); System.out.println(result); return AjaxResult.success(result); } catch (Exception e) { e.printStackTrace(); }finally { // 会在本地产生临时文件,用完后需要删除 if (file.exists()) { file.delete(); } } return AjaxResult.success(); } }