调用百度AI接口实现网络图片中的文字识别

之前也做过一些api调用的demo,一直是看API文档,向目标url发送请求,看看传哪些参数,接受哪些参数。

API平台:https://ai.baidu.com

这次使用HTTP-SDK文档。那么两者的区别是什么呢?

API 文档告诉你服务的“功能”是什么,你需要发送什么,你会得到什么。这是最根本的。

HTTP-SDK 是官方为你提供的一个“工具包”或“脚手架”。 它的目的是让你基于 API 文档进行开发时,更加方便、快速、稳定和安全。

image

首先引入依赖

<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/SK
    private 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);
        }
    }
}

结果展示

image

posted @ 2025-10-06 15:07  雨花阁  阅读(30)  评论(0)    收藏  举报