SpringBoot+阿里云OCR图片识别
准备条件:阿里云OCR图片识别API购买,初次购买1分钱500次接口调用
一、控制层
@GetMapping("/uploadManual")
@ApiOperation("上传药品说明书图片、扫描后返回文字信息")
@ApiImplicitParam(name="file",value="说明书图片",required=true,paramType="query",dataType = "file")
public R uploadManual(@RequestParam("file") MultipartFile file) {
return R.success(drugManualService.uploadManual(file));
}
二、业务层
@OperationLog(detail = "上传药品说明书图片、扫描后返回文字信息", level = 3, operationUnit = OperationUnit.USER, operationType = OperationType.SELECT)
public String uploadManual(MultipartFile file) {
StringBuffer imageOCRToText = new StringBuffer();
try {
byte[] bytes = file.getBytes();
String imageBase64Code = new BASE64Encoder().encode(bytes);
imageOCRToText = JSONUtil.imageOCRToText(appcode,host,path,imageBase64Code);
} catch (IOException e) {
throw new BadRequestException(e.getMessage());
}
return imageOCRToText==null?"":imageOCRToText.toString();
}
三、JSONUtil工具类,调用阿里OCR-API接口并处理返回数据
package com.cdyx.utils;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.cdyx.exception.BadRequestException;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @program: knowlage-platform
* @description
* @author: xbwen
* @create: 2021-08-02 09:19
**/
public class JSONUtil {
/**
* @Author: xbwen
* @Description: 将JSON字符串中的word拼接成StringBuffer
* @DateTime: 9:20 2021/8/2
* @Params: * @param JSONStr
* @Return
*/
public static StringBuffer JSONToString(String JSONStr) {
Map<String, String> map = JSONObject.parseObject(JSONStr, new TypeReference<Map<String, String>>() {});
String retStr = map.get("ret");
List<Map<String, String>> retList = JSONObject.parseObject(retStr, new TypeReference<List<Map<String, String>>>() {});
StringBuffer retBuffer = new StringBuffer();
retList.forEach(retMap -> {
retBuffer.append(retMap.get("word")).append("\n");
});
return retBuffer;
}
/**
* @Author: xbwen
* @Description: 调用阿里云服务器的图片识别接口,获取识别出来的文字数据
* @DateTime: 11:42 2021/8/2
* @Params: * @param null
* @Return
*/
public static StringBuffer imageOCRToText(String appcode,String host,String path,String imageBase64Code) {
String method = "POST";
Map<String, String> headers = new HashMap<String, String>();
//最后在header中的格式(中间是英文空格)为Authorization:APPCODE 3d04bb801071452bb6cf7e11396d112f
headers.put("Authorization", "APPCODE " + appcode);
//根据API的要求,定义相对应的Content-Type
headers.put("Content-Type", "application/json; charset=UTF-8");
Map<String, String> querys = new HashMap<String, String>();
String bodys = "{\"image\":\""+imageBase64Code+"\",\"configure\":{\"min_size\":16,\"output_prob\":true,\"output_keypoints\":false,\"skip_detection\":false,\"without_predicting_direction\":false}}";
StringBuffer imageOCRToText = new StringBuffer();
try {
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
//获取response的body
String JSONStr = EntityUtils.toString(response.getEntity());
imageOCRToText = JSONUtil.JSONToString(JSONStr);
} catch (Exception e) {
throw new BadRequestException(e.getMessage());
}
return imageOCRToText;
}
}
四、POST-MAN测试结果
SpringBoot+阿里云OCR图片识别的更多相关文章
- 阿里云OCR图片转换成文字识别调用
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Drawing; using S ...
- 使用阿里云的图片识别成表格ocr(将图片表格转换成excel)
为了简便财务总是要对照着别人发来的表格图片制作成自己的表格 图片识别 识别成表格 表格识别 ocr 使用阿里云api 购买(印刷文字识别-表格识别) https://market.aliyun.com ...
- 腾讯云OCR图片文字识别
一. OCR OCR (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别 ...
- 云+社区分享——腾讯云OCR文字识别
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云+社区运营团队发布在腾讯云+社区 前言 2018年3月27日腾讯云云+社区联合腾讯云智能图像团队共同在客户群举办了腾讯云OCR文字识 ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
- 阿里云OSS 图片处理api(custom)
阿里云OSS 图片处理api(custom) 阿里云对象存储服务(Object Storage Service, 简称OSS) 学习了:https://blog.csdn.net/u014559227 ...
- 华为云OCR文字识别 免费在线体验!
嘿,华为云OCR文字识别了解一下,免费在线体验! 物流行业快速提取运单信息.医疗/保险行业单据快速录入.政务办事人证检验,你知道这些都是如何实现的么? 答案就是:OCR文字识别! 作为AI时代效率倍增 ...
- JAVA OCR图片识别
今天闲来无聊,尝试了一下OCR识别,尝试了以下三种方案: 1.直接使用业界使用最广泛的Tesseract-OCR. Tesseract项目最初由惠普实验室支持,1996年被移植到Windows上,19 ...
- 王晶:华为云OCR文字识别服务技术实践、底层框架及应用场景 | AI ProCon 2019
演讲嘉宾 | 王晶(华为云人工智能高级算法工程师王晶) 出品 | AI科技大本营(ID:rgznai100) 近期,由 CSDN 主办的 2019 中国AI 开发者大会(AI ProCon 2019) ...
- WindowsAPI调用和OCR图片识别
傻了吧唧的装双系统.成功的干崩了原本的系统.现在重装VS.闲的没事胡扯几句. WindowsAPI在每一台Windows系统上开放标准API供开发人员调用.功能齐全.在这里只介绍三个部分. 1.利用A ...
随机推荐
- 【Azure 应用服务】访问App Service突然出现 ERR_SSL_PROTOCOL_ERROR错误的解答
问题描述 在中国区的Azure App Service服务中,新创建的站点突然访问出现 " This site can't provide a secure connection,xxxx ...
- C++ //vector容器嵌套容器
1 //vector容器嵌套容器 2 #include <iostream> 3 #include <string> 4 #include<fstream> 5 # ...
- C++ //类模板与继承 //类模板与继承 //注意: //1.当子类继承父类是一个类模板时,子类在声名的时候,要指定出父类中T的类型 //2.如果不指定,编译器无法给子类分配内存 //3.如果想灵活指定出父类中的T的类型,子类也需要变为类模板
1 #include <iostream> 2 #include <string> 3 #include<fstream> 4 using namespace st ...
- Landsat 7的热红外波段有2个该如何选择?
本文介绍Landsat 7遥感影像数据中B61.B62两个热红外波段的区别,以及研究应用时二者选择的依据. Landsat 7遥感影像数据具有2个热红外波段,分别是Band 61与Band 6 ...
- Nacos服务跨分组调用
一. 问题背景 nacos有两种服务隔离的机制,一个是空间namespace,一般我们用namespace区分环境,另外一个是分组group,nacos的默认调用机制是同namespace下的同gro ...
- 3D模型+BI分析,打造全新的交互式3D可视化大屏开发方案
背景介绍 在数字经济建设和数字化转型的浪潮中,数据可视化大屏已成为各行各业的必备工具.然而,传统的数据大屏往往以图表和指标为主,无法真实地反映复杂的物理世界和数据关系.为了解决这个问题,3D模型可视化 ...
- nest.sh 脚本 发布服务
每次发布后端nest 直接执行一个脚本即可 给脚本赋值权限 chomd 777 nest.sh nest.sh 脚本 #!/bin/bash cd /root/gateway-study git pu ...
- Prometheus四种指标及PromQL实例
Prometheus四种主要的指标类型包括Counter.Gauge.Histogram和Summary,以及相应的PromQL实例如下: Counter(计数器) 作用:只增不减的计数器,常用于记录 ...
- Handler屏障消息
Handler 屏障消息 Handler Message 种类 Handler的Message种类分为3种: 普通消息 屏障消息 异步消息 同步消息 我们默认用的都是同步消息,即前面讲Handler里 ...
- python高级技术(IO模型)
一 IO模型介绍 Linux环境下的network IO * blocking IO 阻塞IO * nonblocking IO 非阻塞IO * IO mul ...