当前位置:   article > 正文

Spring Boot + 百度 OCR 图片文字识别功能_springboot文字识别

springboot文字识别

一、知识点简介 

OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程。 —— OCR文字识别 - 百度百科

本篇功能是基于百度智能云人工智能接口的文字识别实现,数据请求以Spring Boot为框架。

二、准备工作

首先我们进入百度智能云-管理中心(https://console.bce.baidu.com/)创建一个新应用。

创建新应用时,勾选文字识别下的“通用文字识别”系列选项。(如有其他需求,例如身份证识别等请自行勾选)

创建完毕后,我们可以查看App ID、ApI Key以及Secret Key,这些参数用于后续请求操作。

三、搭建项目

项目框架

  • Spring Boot 2.3.2.RELEASE
  • 百度云人体识别接口 Baidu AIP Java Sdk 4.15.1

在Spring Boot的pom.xml文件引入百度云人体识别接口包:

  1. <!-- 百度云人体识别接口 SDK https://mvnrepository.com/artifact/com.baidu.aip/java-sdk -->
  2. <dependency>
  3. <groupId>com.baidu.aip</groupId>
  4. <artifactId>java-sdk</artifactId>
  5. <version>4.15.1</version>
  6. </dependency>

代码编写

静态类

SystemConstants

  1. package com.qianlingo.ocr.constants;
  2. /**
  3. * 系统静态类
  4. * @author qianlingo
  5. * @date 2020/8/10
  6. */
  7. public class SystemConstants {
  8. /**
  9. * 百度 app_id
  10. */
  11. public static final String APP_ID = "";
  12. /**
  13. * 百度 api_key
  14. */
  15. public static final String API_KEY = "";
  16. /**
  17. * 百度 SECRET_KEY
  18. */
  19. public static final String SECRET_KEY = "";
  20. }

服务层 实现类

OcrServiceImpl

  1. package com.qianlingo.ocr.service.impl;
  2. import com.baidu.aip.ocr.AipOcr;
  3. import com.qianlingo.ocr.constants.SystemConstants;
  4. import com.qianlingo.ocr.service.IOcrService;
  5. import org.json.JSONException;
  6. import org.json.JSONObject;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import org.springframework.stereotype.Service;
  10. import org.springframework.web.multipart.MultipartFile;
  11. import java.io.IOException;
  12. import java.util.HashMap;
  13. /**
  14. * ORC - Service 实现类
  15. *
  16. * @author qianlingo
  17. * @date 2020/8/10
  18. */
  19. @Service
  20. public class OcrServiceImpl implements IOcrService {
  21. private static final Logger log= LoggerFactory.getLogger(OcrServiceImpl.class);
  22. /**
  23. * 请求ocr接口,返回json数据
  24. * @param multipartFile 文件
  25. * @return json 字符串数据
  26. */
  27. @Override
  28. public String actionOcr(MultipartFile multipartFile) {
  29. AipOcr client = new AipOcr(SystemConstants.APP_ID
  30. , SystemConstants.API_KEY, SystemConstants.SECRET_KEY);
  31. HashMap<String, String> options = new HashMap<String, String>(4);
  32. options.put("language_type", "CHN_ENG");
  33. options.put("detect_direction", "true");
  34. options.put("detect_language", "true");
  35. options.put("probability", "true");
  36. // 参数为二进制数组
  37. byte[] buf = new byte[0];
  38. try {
  39. buf = multipartFile.getBytes();
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. log.error("获取文件字节数据异常,{}",e.getMessage());
  43. }
  44. JSONObject res = client.basicGeneral(buf, options);
  45. String jsonData = "";
  46. try {
  47. jsonData = res.toString(2);
  48. } catch (JSONException e) {
  49. log.error("获取json数据异常,{}",e.getMessage());
  50. }
  51. return jsonData;
  52. }
  53. }

视图控制层

OcrController

  1. package com.qianlingo.ocr.controller;
  2. import com.qianlingo.ocr.service.IOcrService;
  3. import org.springframework.web.bind.annotation.RequestMapping;
  4. import org.springframework.web.bind.annotation.ResponseBody;
  5. import org.springframework.web.bind.annotation.RestController;
  6. import org.springframework.web.multipart.MultipartFile;
  7. import javax.annotation.Resource;
  8. /**
  9. * Ocr Controller
  10. * @author qianlingo
  11. * @date 2020/8/10
  12. */
  13. @RestController
  14. @RequestMapping("/ocr")
  15. public class OcrController {
  16. @Resource
  17. private IOcrService iOrcService;
  18. /**
  19. * 传入图片文件,进行识别操作
  20. * @param file 文件数据
  21. */
  22. @RequestMapping("/actionOcr")
  23. @ResponseBody
  24. public String actionOcr(MultipartFile file){
  25. return this.iOrcService.actionOcr(file);
  26. }
  27. }

Postman 接口测试

body标签,选择form-data提交类型,key框选择file类型,选择文件后点击Send请求接口。

测试图片:

 

源码

代码已发布至Gitee

Gitee: https://gitee.com/qianlingooo/study-baidu-ocr

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/620024
推荐阅读
相关标签
  

闽ICP备14008679号