之前也做过一些api调用的demo,一直是看API文档,向目标url发送请求,看看传哪些参数,接受哪些参数。
API平台:https://ai.baidu.com
这次使用HTTP-SDK文档。那么两者的区别是什么呢?
API 文档告诉你服务的“功能”是什么,你需要发送什么,你会得到什么。这是最根本的。
HTTP-SDK 是官方为你提供的一个“工具包”或“脚手架”。 它的目的是让你基于 API 文档进行开发时,更加方便、快速、稳定和安全。
首先引入依赖
<dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.16.12</version><exclusions><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></exclusion><exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId></exclusion></exclusions></dependency>
具体代码
@RestController
@RequestMapping("/files")
public class FileUploadController {// 设置APPID/AK/SKprivate static final String APP_ID = "";private static final String API_KEY = "";private static final String SECRET_KEY = "";// 初始化一个AipOcr单例private static final AipOcr client = new AipOcr(APP_ID, API_KEY, SECRET_KEY);/*** 图片文字识别接口* @param file 上传的图片文件* @return 识别结果*/@PostMapping("/ocr")public ResponseEntity<Map<String, Object>> recognizeText(@RequestParam("file") MultipartFile file) {Map<String, Object> result = new HashMap<>();if (file.isEmpty()) {result.put("code", 400);result.put("msg", "文件不能为空");return ResponseEntity.badRequest().body(result);}try {// 使用空的HashMap作为options参数HashMap<String, String> options = new HashMap<>();// 调用百度OCR接口识别图片中的文字byte[] fileBytes = file.getBytes();JSONObject res = client.webImage(fileBytes, options);result.put("code", 200);result.put("msg", "识别成功");result.put("data", res.toMap());return ResponseEntity.ok(result);} catch (Exception e) {result.put("code", 500);result.put("msg", "识别失败: " + e.getMessage());return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(result);}}
}
结果展示