日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Android端直接調用

視覺智能開放平臺的API接口推薦使用SDK進行調用,推薦在服務端進行接入,在客戶端直接接入AccessKey ID和AccessKey Secret有泄露風險,可以使用STS授權用戶調用服務。

背景信息

使用小程序調用之前,需要使用STS服務獲取臨時訪問憑證。阿里云STS(Security Token Service)是阿里云提供的一種臨時訪問權限管理服務。您可以通過STS服務給其他用戶頒發(fā)臨時訪問憑證,該用戶可使用臨時訪問憑證,在規(guī)定時間內調用視覺智能開放平臺的各項服務。臨時訪問憑證無需透露您的長期密鑰,保障您的賬戶更加安全。獲取臨時訪問憑證,請參見獲取角色的臨時身份憑證

說明

阿里云視覺智能開放平臺提供各類目視覺AI能力API接入、接口使用或問題咨詢等,請通過釘釘群(23109592)加入阿里云視覺智能開放平臺咨詢群聯(lián)系我們。

前提條件

獲取STS臨時憑證:

  1. 授予權限

    在獲取STS臨時憑證之前,調用者(RAM用戶和RAM角色)需要被授權有調用STS接口的權限。您可以通過設置RAM權限策略來實現這一點。相關的設置步驟和權限策略可參見使用STS臨時訪問憑證訪問OSS文檔。您需要根據實際需求配置更細粒度的授權策略,防止出現權限過大的風險。關于更細粒度的授權策略配置詳情,請參見視覺智能開放平臺自定義權限策略參考

    重要

    為進行后續(xù)步驟,調用者(RAM用戶和RAM角色)需要被授權:

    • AliyunSTSAssumeRoleAccess(調用STS服務AssumeRole接口的權限)。

    • AliyunVIAPIFullAccess(這里為了下列實例,給出的是管理視覺智能API的權限,但是在實際工作中,強烈建議您根據實際需求配置更細粒度的授權策略,防止出現權限過大的風險。關于更細粒度的授權策略配置詳情,請參見視覺智能開放平臺自定義權限策略參考)。

  2. 調用AssumeRole接口

    使用已授權的RAM用戶或RAM角色調用AssumeRole接口,并按照接口文檔填寫必要參數。請參見AssumeRole文檔。

  3. 使用STS Token

    調用AssumeRole接口成功后,您會收到一個包含AccessKeyIdAccessKeySecretSecurityToken的STS Token(如下代碼)。

    在實際調用其他阿里云服務的接口時,您需要將代碼中的<ALIBABA_CLOUD_ACCESS_KEY_ID><ALIBABA_CLOUD_ACCESS_KEY_SECRET><ALIBABA_CLOUD_SECURITY_TOKEN>替換為阿里云STS Token數據中獲取的臨時AccessKeyIdAccessKeySecretSecurityToken

    {
      "RequestId": "429D9967-C809-5A30-B65E-9B742CF*****",
      "AssumedRoleUser": {
        "Arn": "acs:ram::175805416243****:role/STStokenTestRole/STSsessionName",
        "AssumedRoleId": "39779315882322****:STSsessionName"
      },
      "Credentials": {
        "SecurityToken": "exampleToken",
        "AccessKeyId": "STS.exampleAccessKeyID",
        "AccessKeySecret": "exampleAccessKeySecret",
        "Expiration": "2024-06-12T03:21:29Z"
      }
    }

SDK示例

使用Android端直接調用,可以參考Java SDK調用,支持本地文件和任意URL。

說明

由于安卓存在線程機制,不能在主線程直接發(fā)起調用,請在子線程調用。

本文以銀行卡識別(RecognizeBankCard)為例,僅展示關鍵步驟和代碼,完整的示例可下載AndroidDemo。您如果調用其他算法,請參考注釋和實際業(yè)務修改相應代碼。

在應用的build.gradle文件中添加依賴

// 1、see http://m.bestwisewords.com/document_detail/153132.html for sdk
implementation("com.aliyun:ocr20191230:1.0.23") {
    exclude group: 'xml-apis', module: 'xml-apis'
    exclude group: 'dom4j', module: 'dom4j'
}
說明

本文以銀行卡識別(RecognizeBankCard)為例,因此引入了OCR包,您需要根據自己的實際業(yè)務引入Java SDK包。Java SDK包的詳情,請參見Java SDK

初始化Client

重要

在實際調用其他阿里云服務的接口時,您需要將代碼中的<ALIBABA_CLOUD_ACCESS_KEY_ID><ALIBABA_CLOUD_ACCESS_KEY_SECRET><ALIBABA_CLOUD_SECURITY_TOKEN>替換為阿里云STS Token數據中獲取的臨時AccessKeyIdAccessKeySecretSecurityToken

// 代碼中的<ALIBABA_CLOUD_ACCESS_KEY_ID>、<ALIBABA_CLOUD_ACCESS_KEY_SECRET>、<ALIBABA_CLOUD_SECURITY_TOKEN>
// 需替換為阿里云STS Token數據中獲取的臨時AccessKeyId、AccessKeySecret、SecurityToken
String accessKeyId = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String accessKeySecret = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
String securityToken = "<ALIBABA_CLOUD_SECURITY_TOKEN>";

Config config = new Config()
        //AccessKeyID
        .setAccessKeyId(accessKeyId)
        //AccessKeySecret
        .setAccessKeySecret(accessKeySecret)
        //SecurityToken
        .setSecurityToken(securityToken); 

// 3、訪問的域名。注意:這個地方需要求改為相應類目的域名,參考:http://m.bestwisewords.com/document_detail/143103.html
config.endpoint = "ocr.cn-shanghai.aliyuncs.com";
client = new Client(config);

調用API

場景一:文件在上海地域OSS

/**
 * 文件在上海地域OSS,調用API,以RecognizeBankCard為例。
 * @param view
 */
public void callApiShanghaiOss(View view) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Log.d(TAG, String.format("begin callApi: %s %s", "RecognizeBankCard", "http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg"));
                // 4、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,具體入參設置需要參考具體能力的文檔
                com.aliyun.ocr20191230.models.RecognizeBankCardRequest recognizeBankCardRequest = new com.aliyun.ocr20191230.models.RecognizeBankCardRequest()
                        .setImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg");
                com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
                // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,注意,recognizeBankCardWithOptions方法名也需要改成對應能力的方法名
                RecognizeBankCardResponse resp = client.recognizeBankCardWithOptions(recognizeBankCardRequest, runtime);
                // 獲取整體結果。部分能力會輸出url鏈接,通過toJSONString轉換后可能有編碼問題,但是通過單個字段獲取是沒問題的。
                Log.d(TAG, String.format("%s", com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp))));
                // 獲取單個字段,這里只是一個例子,具體能力下的字段需要看具體能力的文檔
                Log.d(TAG, String.format("%s", resp.getBody().getData().getCardNumber()));
                showToastMsg("調用成功,銀行卡號:" + resp.getBody().getData().getCardNumber());
            } catch (com.aliyun.tea.TeaException teaException) {
                Log.d(TAG, "teaException.getCode(): " + teaException.getCode());
                // 請?zhí)幚鞥xception
            } catch (Exception e) {
                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }
        }
    }).start();
說明

此場景需要APP訪問網絡的權限,請確保已配置APP訪問網絡的權限。

場景二:文件在本地

/**
 * 文件在本地,調用API,以RecognizeBankCard為例。
 * @param view
 */
public void callApiLocal(View view) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                // filePath請改成您的真實文件路徑
                String filePath = "resource/test_images/yhk1.jpg";
                Log.d(TAG, String.format("begin callApi: %s %s", "RecognizeBankCard", filePath));
                // 使用文件,文件通過inputStream傳入接口。這里只是演示了assets下的文件如何轉為stream,如果文件來自其他地方,如sdcard或者攝像頭,請自行查看android開發(fā)文檔或教程將文件轉為stream之后傳入。
                InputStream inputStream = MainActivity.this.getAssets().open(filePath);
                // 4、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,具體入參設置需要參考具體能力的文檔
                com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest recognizeBankCardAdvanceRequest = new com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest()
                        .setImageURLObject(inputStream);
                com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
                // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,注意,recognizeBankCardAdvance方法名也需要改成對應能力的方法名
                RecognizeBankCardResponse resp = client.recognizeBankCardAdvance(recognizeBankCardAdvanceRequest, runtime);
                // 獲取整體結果。部分能力會輸出url鏈接,通過toJSONString轉換后可能有編碼問題,但是通過單個字段獲取是沒問題的。
                Log.d(TAG, String.format("%s", com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp))));
                // 獲取單個字段,這里只是一個例子,具體能力下的字段需要看具體能力的文檔
                Log.d(TAG, String.format("%s", resp.getBody().getData().getCardNumber()));
                showToastMsg("調用成功,銀行卡號:" + resp.getBody().getData().getCardNumber());
            } catch (com.aliyun.tea.TeaException teaException) {
                Log.d(TAG, "teaException.getCode(): " + teaException.getCode());
                // 請?zhí)幚鞥xception
            } catch (java.io.FileNotFoundException e) {
                showToastMsg("文件找不到,請檢查代碼中的filePath路徑是否正確");
                Log.e(TAG, e.getMessage());
            } catch (Exception e) {
                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }
        }
    }).start();

}
說明

此場景需要APP訪問網絡和本地文件的權限,請在確保已配置APP訪問網絡和本地文件的權限。

場景三:文件在任意可訪問的URL

/**
 * 文件在任意URL,調用API,以RecognizeBankCard為例。
 * @param view
 */
public void callApiAnyUrl(View view) {

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Log.d(TAG, String.format("begin callApi: %s %s", "RecognizeBankCard", "https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg"));
                // 使用任意URL
                URL url = new URL("https://viapi-test-bj.oss-cn-beijing.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg");
                InputStream inputStream = url.openConnection().getInputStream();
                // 4、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,具體入參設置需要參考具體能力的文檔
                com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest recognizeBankCardAdvanceRequest = new com.aliyun.ocr20191230.models.RecognizeBankCardAdvanceRequest()
                        .setImageURLObject(inputStream);
                com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
                // 5、這里只是以ocr下的RecognizeBankCard為例,其他能力請使用相應類目的包和類,注意,recognizeBankCardAdvance方法名也需要改成對應能力的方法名
                RecognizeBankCardResponse resp = client.recognizeBankCardAdvance(recognizeBankCardAdvanceRequest, runtime);
                // 獲取整體結果。部分能力會輸出url鏈接,通過toJSONString轉換后可能有編碼問題,但是通過單個字段獲取是沒問題的。
                Log.d(TAG, String.format("%s", com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp))));
                // 獲取單個字段,這里只是一個例子,具體能力下的字段需要看具體能力的文檔
                Log.d(TAG, String.format("%s", resp.getBody().getData().getCardNumber()));
                showToastMsg("調用成功,銀行卡號:" + resp.getBody().getData().getCardNumber());
            } catch (com.aliyun.tea.TeaException teaException) {
                Log.d(TAG, "teaException.getCode(): " + teaException.getCode());
                // 請?zhí)幚鞥xception
            } catch (Exception e) {
                e.printStackTrace();
                Log.e(TAG, e.getMessage());
            }
        }
    }).start();

}
說明

此場景需要APP訪問網絡并且需要支持訪問HTTP鏈接的權限,請確保已配置APP訪問網絡的權限并支持訪問HTTP鏈接。

完整工程僅以銀行卡識別(RecognizeBankCard)為例,如果調用其他算法,請參考注釋進行相應代碼修改。

修改點可參見Java SDK,總結如下:

  1. 引入包的時候,需要引入相應類目的包和相關類。包括build.gradle中的com.aliyun:ocr20191230:1.0.23和MainActivity.java中import。包名可參考Java SDK包名稱,能力名稱可參考對應API文檔中的Action參數。

    例如,您想使用通用分割能力,通過通用分割API文檔可知該能力屬于分割摳圖類目(imageseg20191230),能力名稱為SegmentCommonImage,您需要將代碼中的ocr20191230改為imageseg20191230,將RecognizeBankCard改為SegmentCommonImage。

  2. 訪問的域名一定要修改為相應類目的域名,如果域名類目不匹配會報錯InvalidAction.NotFound。關于域名詳情,請參見訪問域名

  3. Request和Response需要使用相應類目的包和類。

  4. 調用Client的方法時,方法名需要改成對應能力的方法名。方法名是根據能力名稱按照一定規(guī)范形成的。例如,能力名稱為SegmentCommonImage,文件在上海地域OSS對應方法名應該為segmentCommonImageWithOptions,文件在本地或可訪問的URL對應方法名應該為segmentCommonImageAdvance。