Springboot文件上传 百度ocr文字识别提取

前言

  • 在学习过程中突然发现我以前用的文件上传真的好傻。以前的博客记录中还沾沾自喜文件上传模板可以套用,不接收新事物,却发现原来Springboot的文件上传如此简单。
    首先,文件上传的三种方式,普通文件上传,多文件上传,base64码上传,但是百度得知base64码的文件比原文件耗用的资源多意见,这里直接采用普通文件上传。

步骤

前提:百度ocr需要自行免费申请,在百度云里面自己申请,获得APP-ID,key和secret的一些必要参数。

项目环境:springboot2.0,如果首次使用springboot,请参考以前博客。下面介绍详细步骤。

  1. 需要在pom.xml中添加:(添加使用百度ocr接口的环境)
 <dependency>
<groupId> com.baidu.aipgroupId>
 <artifactId>java-sdkartifactId>
 <version>4.4.1version>
 dependency>
  1. 在application.properties.里面或者yml里面添加关于文件上传的支持:
spring.servlet.multipart.enabled=true
# 上传文件的临时目录 (一般情况下不用特意修改)
#spring.servlet.multipart.location=
# 上传文件最大为 1M (默认值 1M 根据自身业务自行控制即可)
spring.servlet.multipart.max-file-size=104857600
# 上传请求最大为 10M(默认值10M 根据自身业务自行控制即可)
spring.servlet.multipart.max-request-size=104857600
# 文件大小阈值,当大于这个阈值时将写入到磁盘,否则存在内存中,(默认值0 一般情况下不用特意修改)
spring.servlet.multipart.file-size-threshold=0
# 判断是否要延迟解析文件(相当于懒加载,一般情况下不用特意修改)
spring.servlet.multipart.resolve-lazily=false

  1. 编写后台controller:OCRcontroller:
import com.baidu.aip.ocr.AipOcr;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

@Controller
public class OCRController {
 //接口申请免费,请自行申请使用,如果学习使用可以用下
 public static final String APP_ID = "15742445";
 public static final String API_KEY = "LXrztEOzQxfef66DLIDQYpIG";
 public static final String SECRET_KEY = "gbDodnochc8jYjlAHADDgyyas9mrlmkF";

 @ResponseBody
 @PostMapping("ocrimg")
 public String ocrimg(MultipartFile file) throws IOException {

 HashMap options = new HashMap();
 options.put("language_type", "CHN_ENG");
 //高精度识别一些参数在api文档可以参考
// options.put("detect_direction", "true");
// options.put("detect_language", "true");
// options.put("probability", "true");
 AipOcr client=new AipOcr(APP_ID,API_KEY,SECRET_KEY);
 byte [] bite=file.getBytes();
 System.out.println(file.getName());
 System.out.println(file.getOriginalFilename() " " file.getResource());
 JSONObject jsonObject=client.basicGeneral(bite,options);
 System.out.println(jsonObject.toString());
 return jsonObject.toString();
 }
}

你会发现文件收传如此简单,比用jar包,或者servlet3.0的方法都要简洁很多,查看代码是他把东西都优化封装好了,开箱即用。

  1. 编写前端代码:(static下index,html)
<form name="myupload"  action="ocrimg" method="post" enctype='multipart/form-data'>
<input type="file" name="file" >
<input type="submit" value="提交">
form>
  1. 进行测试。
    随意拍一张上一篇
    Springboot文件上传 百度ocr文字识别提取_第1张图片
    Springboot文件上传 百度ocr文字识别提取_第2张图片
    Springboot文件上传 百度ocr文字识别提取_第3张图片
  • 看看控制台的打印:
    Springboot文件上传 百度ocr文字识别提取_第4张图片

  • 程序已经完成,对于返回的数据json格式的数组,springboot既然支持json格式返回出去,哪就有相关的jar包可以直接用。如果需要细化,提取json中的数据,那么就研究下封装好json对象的基本语法提取,这里就不做过多详述。

  • 如果对后端、爬虫、数据结构算法等感性趣欢迎关注我的个人公众号交流:bigsai

你可能感兴趣的:(#,javaWeb,#,Springboot)