赞
踩
OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,然后用字符识别方法将形状翻译成计算机文字的过程。 —— OCR文字识别 - 百度百科
本篇功能是基于百度智能云人工智能接口的文字识别实现,数据请求以Spring Boot为框架。
首先我们进入百度智能云-管理中心(https://console.bce.baidu.com/)创建一个新应用。
创建新应用时,勾选文字识别下的“通用文字识别”系列选项。(如有其他需求,例如身份证识别等请自行勾选)
创建完毕后,我们可以查看App ID、ApI Key以及Secret Key,这些参数用于后续请求操作。
在Spring Boot的pom.xml文件引入百度云人体识别接口包:
- <!-- 百度云人体识别接口 SDK https://mvnrepository.com/artifact/com.baidu.aip/java-sdk -->
- <dependency>
- <groupId>com.baidu.aip</groupId>
- <artifactId>java-sdk</artifactId>
- <version>4.15.1</version>
- </dependency>
SystemConstants
- package com.qianlingo.ocr.constants;
-
- /**
- * 系统静态类
- * @author qianlingo
- * @date 2020/8/10
- */
- public class SystemConstants {
-
- /**
- * 百度 app_id
- */
- public static final String APP_ID = "";
-
- /**
- * 百度 api_key
- */
- public static final String API_KEY = "";
-
- /**
- * 百度 SECRET_KEY
- */
- public static final String SECRET_KEY = "";
-
- }
OcrServiceImpl
- package com.qianlingo.ocr.service.impl;
-
- import com.baidu.aip.ocr.AipOcr;
- import com.qianlingo.ocr.constants.SystemConstants;
- import com.qianlingo.ocr.service.IOcrService;
- import org.json.JSONException;
- import org.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.stereotype.Service;
- import org.springframework.web.multipart.MultipartFile;
-
- import java.io.IOException;
- import java.util.HashMap;
-
- /**
- * ORC - Service 实现类
- *
- * @author qianlingo
- * @date 2020/8/10
- */
- @Service
- public class OcrServiceImpl implements IOcrService {
-
- private static final Logger log= LoggerFactory.getLogger(OcrServiceImpl.class);
-
-
- /**
- * 请求ocr接口,返回json数据
- * @param multipartFile 文件
- * @return json 字符串数据
- */
- @Override
- public String actionOcr(MultipartFile multipartFile) {
- AipOcr client = new AipOcr(SystemConstants.APP_ID
- , SystemConstants.API_KEY, SystemConstants.SECRET_KEY);
- HashMap<String, String> options = new HashMap<String, String>(4);
- options.put("language_type", "CHN_ENG");
- options.put("detect_direction", "true");
- options.put("detect_language", "true");
- options.put("probability", "true");
-
- // 参数为二进制数组
- byte[] buf = new byte[0];
- try {
- buf = multipartFile.getBytes();
- } catch (IOException e) {
- e.printStackTrace();
- log.error("获取文件字节数据异常,{}",e.getMessage());
- }
- JSONObject res = client.basicGeneral(buf, options);
- String jsonData = "";
- try {
- jsonData = res.toString(2);
- } catch (JSONException e) {
- log.error("获取json数据异常,{}",e.getMessage());
- }
- return jsonData;
- }
- }
OcrController
- package com.qianlingo.ocr.controller;
-
- import com.qianlingo.ocr.service.IOcrService;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import org.springframework.web.bind.annotation.RestController;
- import org.springframework.web.multipart.MultipartFile;
-
- import javax.annotation.Resource;
-
- /**
- * Ocr Controller
- * @author qianlingo
- * @date 2020/8/10
- */
- @RestController
- @RequestMapping("/ocr")
- public class OcrController {
- @Resource
- private IOcrService iOrcService;
-
- /**
- * 传入图片文件,进行识别操作
- * @param file 文件数据
- */
- @RequestMapping("/actionOcr")
- @ResponseBody
- public String actionOcr(MultipartFile file){
- return this.iOrcService.actionOcr(file);
- }
-
-
-
- }
body标签,选择form-data提交类型,key框选择file类型,选择文件后点击Send请求接口。
测试图片:
代码已发布至Gitee
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。