寫過很多關於百度雲API調用的,其實多數功能都是相通的,只要認真的看了一部分,其他的也能很快掌握。這次寫文字識別是因爲幫師兄從APP的曲線中提取數據,但是在手機裏面截圖之後還要在電腦裏面手動按照日期和地址來修改圖片名稱,因此就希望通過文字識別來自動命名,如下圖:
下面進入正題。
- 首先進入百度雲的官網註冊登錄百度雲官網
- 登陸之後進入管理控制檯,如下圖所示
- 然後進入人工智能分區中的文字識別
- 創建一個應用即可,直接選取默認
官方技術文檔可以參考
- 接着我們來看使用方法,整個流程和我們之前的人臉識別大致相同,在調用api之前我們需要獲得acess_token,這個可以通過我們的api key和secret key獲得,這個可以在應用管理裏面看到,如下圖:
- 用代碼總結起來就是
api_key = '你的 api key';
secret_key = '你的secret key';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token; % 至此,獲得了token
效果如下,但是要注意token的有效期是1個月,就是這個token在一個月內是不會變的,這段時間不用重複請求,直接用就好
- 接下來就是要將需要的圖片編碼,準備上傳。這裏需要用到一個常用的,但是matlab自身沒有的函數base64file,可以在matlab官方下載,我這裏直接貼出來。
- 這個函數真的非常有用,很多地方需要用到這種編碼。
function [base64string,base64string_len] = base64file(file)
fid = fopen(file,'rb');
bytes = fread(fid);
fclose(fid);
base64string_len = size(bytes,1);
encoder = org.apache.commons.codec.binary.Base64;
base64string = char(encoder.encode(bytes))';
end
- 我們再來看官方給出的請求參數
可以選擇兩種上傳方式,一種是網絡圖片,一種是將圖片編碼上傳,我們這裏選擇編碼上傳本地圖片,代碼如下:
jj = ['C:\Users\75549\Desktop\新建文件夾\站點日期\' num2str(i) '.jpg']; % 圖片路徑
[pp ,~] = base64file(jj); % 需要保存上面提到的函數
api_key = '你的api_key';
secret_key = '你的secret_key';
url_token = ['https://openapi.baidu.com/oauth/2.0/token?grant_type=client_credentials&client_id=',api_key,'&client_secret=',secret_key];
token = webread(url_token);
token = token.access_token; % 至此,獲得了token
webb = ['https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' token];
oo = webwrite(webb,'image',pp,'Content-Type','application/x-www-form-urlencoded');
返回參數:
識別出來的文字就在words_result 裏面。
下面是相關的文章,有興趣可以看看,有關我如何提取曲線數據和其他API的使用。
鏈接: 百度雲人臉識別.
鏈接: 有道翻譯.
鏈接: 百度地圖經緯度.
鏈接: 百度雲語音識別
鏈接: MATLAB 發送郵件 sendmail的使用.
鏈接: MATLAB 曲線數據提取工具 GUI