一個基于 Spring Boot 的實現,用于代理百度 AI 的 OCR 接口

一個基于 Spring Boot 的實現,用于代理百度 AI 的 OCR 接口

    • BaiduAIController.java
    • BaiduAIConfig.java
    • 在 application.yml 或 application.properties 中添加配置:application.yml
    • 同時,需要在Spring Boot應用中配置RestTemplate:ApplicationConfig.java

BaiduAIController.java

package com.ranfeng.controller;import com.ranfeng.common.core.domain.AjaxResult;
import com.ranfeng.config.BaiduAIConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;import java.util.HashMap;
import java.util.Map;/*** 百度AI接口代理控制器*/
@RestController
@RequestMapping("/api/baidu")
public class BaiduAIController {@Autowiredprivate BaiduAIConfig baiduAIConfig;@Autowiredprivate RestTemplate restTemplate;/*** 獲取百度AI的access token*/@GetMapping("/token")public AjaxResult getToken() {try {String url = "https://aip.baidubce.com/oauth/2.0/token";MultiValueMap<String, String> params = new LinkedMultiValueMap<>();params.add("grant_type", "client_credentials");params.add("client_id", baiduAIConfig.getApiKey());params.add("client_secret", baiduAIConfig.getSecretKey());HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);Map<String, Object> response = restTemplate.postForObject(url, requestEntity, Map.class);return AjaxResult.success(response);} catch (Exception e) {return AjaxResult.error("獲取百度AI Token失敗: " + e.getMessage());}}/*** 調用百度OCR識別接口*/@PostMapping("/ocr")public AjaxResult ocrRecognize(@RequestBody Map<String, Object> requestData) {try {// 獲取tokenString tokenUrl = "https://aip.baidubce.com/oauth/2.0/token";MultiValueMap<String, String> tokenParams = new LinkedMultiValueMap<>();tokenParams.add("grant_type", "client_credentials");tokenParams.add("client_id", baiduAIConfig.getApiKey());tokenParams.add("client_secret", baiduAIConfig.getSecretKey());HttpHeaders tokenHeaders = new HttpHeaders();tokenHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> tokenRequestEntity = new HttpEntity<>(tokenParams, tokenHeaders);Map<String, Object> tokenResponse = restTemplate.postForObject(tokenUrl, tokenRequestEntity, Map.class);String accessToken = (String) tokenResponse.get("access_token");// 調用OCR接口String ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=" + accessToken;MultiValueMap<String, String> ocrParams = new LinkedMultiValueMap<>();ocrParams.add("image", (String) requestData.get("image"));ocrParams.add("language_type", (String) requestData.get("language_type"));ocrParams.add("detect_direction", (String) requestData.get("detect_direction"));ocrParams.add("probability", (String) requestData.get("probability"));HttpHeaders ocrHeaders = new HttpHeaders();ocrHeaders.setContentType(MediaType.APPLICATION_FORM_URLENCODED);HttpEntity<MultiValueMap<String, String>> ocrRequestEntity = new HttpEntity<>(ocrParams, ocrHeaders);Map<String, Object> ocrResponse = restTemplate.postForObject(ocrUrl, ocrRequestEntity, Map.class);return AjaxResult.success(ocrResponse);} catch (Exception e) {return AjaxResult.error("OCR識別失敗: " + e.getMessage());}}
}

BaiduAIConfig.java

package com.ranfeng.config;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** 百度AI配置類*/
@Configuration
@ConfigurationProperties(prefix = "baidu.ai")
public class BaiduAIConfig {private String apiKey;private String secretKey;public String getApiKey() {return apiKey;}public void setApiKey(String apiKey) {this.apiKey = apiKey;}public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}
}

在 application.yml 或 application.properties 中添加配置:application.yml

# 百度AI配置
baidu:ai:api-key: xxxxxsecret-key: xxxxxx

同時,需要在Spring Boot應用中配置RestTemplate:ApplicationConfig.java

package com.ranfeng.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;@Configuration
public class ApplicationConfig {@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905684.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905684.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905684.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GPT-4o 遇強敵?英偉達 Eagle 2.5 視覺 AI 王者登場

前言&#xff1a; 在人工智能領域&#xff0c;視覺語言模型的競爭愈發激烈。GPT-4o 一直是該領域的佼佼者&#xff0c;但英偉達的 Eagle 2.5 橫空出世&#xff0c;憑借其 80 億參數的精簡架構&#xff0c;在長上下文多模態任務中表現出色&#xff0c;尤其是在視頻和高分辨率圖像…

將語言融入醫學視覺識別與推理:一項綜述|文獻速遞-深度學習醫療AI最新文獻

Title 題目 Integrating language into medical visual recognition and reasoning: A survey 將語言融入醫學視覺識別與推理&#xff1a;一項綜述 01 文獻速遞介紹 檢測以及語義分割&#xff09;是無數定量疾病評估和治療規劃的基石&#xff08;利特延斯等人&#xff0c…

Ubuntu24.04版本解決RK3568編譯器 libmpfr.so.4: cannot open shared object

問題描述 在Ubuntu24.04版本上編譯RK3568應用程序關于libmpfr.so.4: cannot open shared object問題&#xff0c;如下所示&#xff1a; /tools/ToolsChain/rockchip/rockchip_rk3568/host/bin/../libexec/gcc/aarch64-buildroot-linux-gnu/9.3.0/cc1plus: error while loadin…

產線視覺檢測設備技術方案:基于EFISH-SCB-RK3588/SAIL-RK3588的國產化替代賽揚N100/N150全場景技術解析

一、核心硬件選型與替代優勢? ?1. 算力與AI加速能力? ?異構八核架構?&#xff1a;采用4Cortex-A76&#xff08;2.4GHz&#xff09;4Cortex-A55&#xff08;1.8GHz&#xff09;設計&#xff0c;支持視覺算法并行處理&#xff08;如模板匹配、缺陷分類&#xff09; 相機采…

python如何合并excel單元格

在Python中合并Excel單元格&#xff0c;常用openpyxl庫實現。以下是詳細步驟和示例代碼&#xff1a; 方法一&#xff1a;使用 openpyxl 庫 步驟說明&#xff1a; 安裝庫&#xff1a; pip install openpyxl導入庫并加載文件&#xff1a; from openpyxl import load_workbook# …

高考備考1-集合

高考數學知識點總結—快手視頻講解 高考數學集合—快手視頻講解

Rust 數據結構:Vector

Rust 數據結構&#xff1a;Vector Rust 數據結構&#xff1a;Vector創建數組更新數組插入元素刪除元素 獲取數組中的元素迭代數組中的值使用枚舉存儲多個類型刪除一個數組會刪除它的元素 Rust 數據結構&#xff1a;Vector vector 來自標準庫&#xff0c;在內存中連續存儲相同類…

深度學習入門:深度學習(完結)

目錄 1、加深網絡1.1 向更深的網絡出發1.2 進一步提高識別精度1.3 加深層的動機 2、深度學習的小歷史2.1 ImageNet2.2 VGG2.3 GoogleNet2.4 ResNet 3、深度學習的高速化3.1 需要努力解決的問題3.2 基于GPU的高速化3.3 分布式學習3.4 運算精度的位數縮減 4、深度學習的應用案例4…

如何利用 Python 爬蟲按關鍵字搜索京東商品:實戰指南

在電商領域&#xff0c;京東作為國內知名的電商平臺&#xff0c;擁有海量的商品數據。通過 Python 爬蟲技術&#xff0c;我們可以高效地按關鍵字搜索京東商品&#xff0c;并獲取其詳細信息。這些信息對于市場分析、選品上架、庫存管理和價格策略制定等方面具有重要價值。本文將…

?JMeter聚合報告中的任務數和并發數區別

?JMeter聚合報告中的任務數和并發數有本質的區別。? 任務數&#xff08;樣本數&#xff09; 任務數或樣本數是指在性能測試中發出的請求數量。例如&#xff0c;如果模擬20個用戶&#xff0c;每個用戶發送100次請求&#xff0c;那么總的任務數或樣本數就是2000次請求? 并發…

Java 框架配置自動化:告別冗長的 XML 與 YAML 文件

在 Java 開發領域&#xff0c;框架的使用極大地提升了開發效率和系統的穩定性。然而&#xff0c;傳統框架配置中冗長的 XML 與 YAML 文件&#xff0c;卻成為開發者的一大困擾。這些配置文件不僅書寫繁瑣&#xff0c;容易出現語法錯誤&#xff0c;而且在項目規模擴大時&#xff…

OpenShift AI - 用 ModelCar 構建容器化模型,提升模型彈性擴展速度

《OpenShift / RHEL / DevSecOps 匯總目錄》 說明&#xff1a;本文已經在 OpenShift 4.18 OpenShift AI 2.19 的環境中驗證 文章目錄 什么是 ModelCar構建模型鏡像在 OpenShift AI 使用模型鏡像部署模型擴展速度對比 參考 什么是 ModelCar KServe 典型的模型初始化方法是從 S…

C#+WPF+prism+materialdesign創建工具主界面框架

代碼使用C#WPFprismmaterialdesign創建工具主界面框架 主界面截圖&#xff1a;

在選擇合適的實驗室鐵地板和鑄鐵試驗平板,幫分析?

鑄鐵測試底板是一種采用鑄鐵材料經過加工制成的基準測量工具&#xff0c;主要用于工業檢測、機械加工和實驗室等高精度要求的場合。其核心功能是為各類測量、檢驗、裝配工作提供穩定的水平基準面&#xff0c;確保測量數據的準確性和一致性。 一、鑄鐵測試底板的基本特性 1.材質…

C++匿名函數

C 中的匿名函數&#xff08;Lambda 表達式&#xff09;是 C11 引入的一項重要特性&#xff0c;它允許你在需要的地方定義一個臨時的、無名的函數對象&#xff0c;使代碼更加簡潔和靈活。 1. 基本語法 Lambda 表達式的基本結構&#xff1a; [capture list](parameter list) -…

LabVIEW機械振動信號分析與故障診斷

利用 LabVIEW 開發機械振動信號分析與故障診斷系統&#xff0c;融合小波變換、時頻分布、高階統計量&#xff08;雙譜&#xff09;等先進信號處理技術&#xff0c;實現對齒輪、發動機等機械部件的非平穩非高斯振動信號的特征提取與故障診斷。系統通過虛擬儀器技術將理論算法轉化…

湖北理元理律師事務所:債務優化如何實現“減負不降質”?

在債務壓力普遍加劇的背景下&#xff0c;如何平衡債務清償與生活質量&#xff0c;成為個人及企業關注的焦點。湖北理元理律師事務所基于多年實務經驗&#xff0c;總結出一套“法律財務”雙軌制債務優化模型&#xff0c;其核心在于通過科學規劃&#xff0c;幫助債務人在法律框架…

多鏈互操作性標準解析:構建下一代區塊鏈互聯生態

引言 在區塊鏈技術快速演進的今天&#xff0c;“多鏈宇宙”已成為不可逆的趨勢。然而&#xff0c;鏈與鏈之間的孤立性導致流動性割裂、開發成本高昂和用戶體驗碎片化。互操作性標準的制定&#xff0c;正是打破這一僵局的核心鑰匙。本文將深入探討主流互操作性協議的技術架構、…

電腦開機提示按f1原因分析及解決方法(6種解決方法)

經常有網友問到一個問題,我電腦開機后提示按f1怎么解決?不管理是臺式電腦,還是筆記本,都有可能會遇到開機需要按F1,才能進入系統的問題,引起這個問題的原因比較多,今天小編在這里給大家列舉了比較常見的幾種電腦開機提示按f1的解決方法。 電腦開機提示按f1原因分析及解決…

講講git 和svn

講講git 和svn 目錄Git到底是什么&#xff1f;它該怎末用&#xff1f;核心概念基礎操作1. 倉庫的創建2. 文件的提交工作流程3. 分支管理4. 遠程倉庫操作 進階操作實際應用建議**基本用法****常用命令的幫助示例****幫助文檔的結構****替代方法****練習建議****核心概念****與Gi…