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 for Linux】Linux Web App如何安装系统未安装的包
问题描述 Linux Web App中如何安装系统默认未安装的包,如何来执行如 apt install XXX命令呢?现在遇见的问题时,通过Azure App Service门户中的SSH登录后,执行 ...
- 【Azure 应用服务】App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢?
问题描述 App Service 的.NET Version选择为.NET6,是否可以同时支持运行ASP.NET V4.8的应用呢? 问题解答 答案是可以的,Azure App Service .NE ...
- 【Azure 媒体服务】在Azure Media Service门户中使用HLS模式传输视频流,播放视频步骤
问题描述 如何在Azure Media Service门户中使用HLS模式传输视频流,播放视频步骤 问题解决 第一步:在 Media Service 这边点击资产.上传本地视频资源作为Media Se ...
- 云原生 on nLive:云上 Nebula Graph
本文首发于 Nebula Graph Community 公众号 在 #云原生# 主题分享中,来自 Nebula 云组的 Cloud 专家乔雷同大家分享云的相关知识,本文整理自该次主题直播. 云原生是 ...
- STL-unordered_hashtable模拟实现
#pragma once #include<vector> #include<string> #include<iostream> using std::cout; ...
- Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)
目录 题目链接 题意 题解 代码 题目链接 C. Digital Logarithm 题意 给两个长度位\(n\)的数组\(a\).\(b\),一个操作\(f\) 定义操作\(f\)为,\(a[i]= ...
- 实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅
在 2023 年的年底,我终于有时间下定决心把我的 UtilMeta 项目官网 进行翻新,主要的原因是之前的官网是用 Vue2 实现的一个 SPA 应用,对搜索引擎 SEO 很不友好,这对于介绍项目的 ...
- [VueJsDev] 日志 - 更新日志
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html 更新日志 ::: details 目录 目录 更新日志 Lo ...
- iOS端创建ReactNative容器第一步:打出jsbundle和资源包
react-native的打包流程是通过执行react-native bundle指令进行的. 添加构建指令 修改RN项目中的package.json文件,先其中添加构建命令build-relea ...
- PLC与上位机传递数据
1.我这里使用的是HslCommunication 假如传递的是word类型,PLC以16进制封装数组,它有预留,我扩充 PLC博图上是 word[5] 上位机接收 ushort[] Data1=ne ...