Java老版(不推荐)
本文介绍了如何使用阿里云视觉智能开放平台的Java SDK,具体包括SDK的安装方法以及SDK代码示例。
阿里云视觉智能开放平台各类目视觉AI能力SDK接入、接口使用或问题咨询等,请通过钉钉群(23109592)加入阿里云视觉智能开放平台咨询群联系我们。
本文档是老版Java SDK,最低环境要求Java6,推荐使用新版Java。
您需要引入的SDK包如下:
安装Alibaba Cloud SDK for Java:aliyun-java-sdk-core。
该SDK包为阿里云Java核心库,无论使用哪个产品的SDK,都必须先安装该核心库。
使用不同服务,就需要下载对应服务的SDK包。具体服务的SDK包名称如下:
AI类目
SDK包名称
SDK链接
Github链接
人脸人体
aliyun-java-sdk-facebody
文字识别
aliyun-java-sdk-ocr
商品理解
aliyun-java-sdk-goodstech
内容审核
aliyun-java-sdk-imageaudit
图像识别
aliyun-java-sdk-imagerecog
图像生产
aliyun-java-sdk-imageenhan
分割抠图
aliyun-java-sdk-imageseg
目标检测
aliyun-java-sdk-objectdet
视觉搜索
aliyun-java-sdk-imgsearch
图像分析处理
aliyun-java-sdk-imageprocess
视频理解
aliyun-java-sdk-videorecog
视频生产
aliyun-java-sdk-videoenhan
视频分割
aliyun-java-sdk-videoseg
3D视觉
aliyun-java-sdk-threedvision
自学习
aliyun-java-sdk-viapi-regen
准备工作
在使用阿里云SDK前,确保您已经注册阿里云账号并生成访问密钥(AccessKey)。详情请参见创建AccessKey。
已安装Java SDK核心库。 有如下两种方式:
使用依赖包工具安装(推荐)。
使用git clone或其它方法从GitHub下载aliyun-java-sdk-core并自行添加解决方案。
已安装视觉智能API相关服务Java SDK。
查看SDK版本
pom.xml文件中version的值以SDK获取地址中的最新版本为准。您可以通过https://mvnrepository.com/artifact/com.aliyun/SDK包名称
查看不同服务SDK的版本。
例如,通过https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-ocr
可以查看aliyun-java-sdk-ocr的版本。
安装方法1:使用Maven(推荐)
如果您使用Maven管理Java项目,可以通过在pom.xml文件中添加Maven依赖安装Java SDK。
<!-- 核心包,必须引入 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.6.2</version>
</dependency>
<!-- 能力包,按需引入 -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-ocr</artifactId>
<version>${aliyun.ocr.version}</version>
</dependency>
安装方法2:在集成开发环境(IDE)中导入JAR文件
无论您使用Eclipse还是IntelliJ作为集成开发环境,都可以通过导入JAR文件的方式安装Java SDK。
Eclipse安装
将下载的
aliyun-java-sdk-xxx.jar
文件复制到您的项目文件夹中。在Eclipse中打开您的项目,右键单击该项目,选择Properties。
在弹出的对话框中,单击
添加下载的JAR文件。单击Apply and Close。
IntelliJ安装
将下载的
aliyun-java-sdk-xxx.jar
文件复制到您的项目文件夹中。在IntelliJ中打开您的项目,在菜单栏中单击
。单击Apply,然后单击OK。
SDK示例
本文以RecognizeBankCard为例,SDK示例如下。该方式目前只支持同地域下OSS文件,其他场景请使用新版Java。
package com.aliyun.sample;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.ocr.model.v20191230.RecognizeBankCardRequest;
import com.aliyuncs.ocr.model.v20191230.RecognizeBankCardResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
public class Main {
public static void main(String[] args) {
DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "YOUR_ACCESS_KEY_ID", "YOUR_ACCESS_KEY_SECRET");
IAcsClient client = new DefaultAcsClient(profile);
RecognizeBankCardRequest request = new RecognizeBankCardRequest();
request.setImageURL("http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/ocr/RecognizeBankCard/yhk1.jpg");
try {
RecognizeBankCardResponse response = client.getAcsResponse(request);
// 获取整体结果
System.out.println(new Gson().toJson(response));
// 获取单个字段
System.out.println(response.getData().getCardNumber());
} catch (ServerException e) {
// 服务端异常
System.out.println(String.format("ServerException: errCode=%s, errMsg=%s, requestId=%s", e.getErrCode(), e.getErrMsg(), e.getRequestId()));
} catch (ClientException e) {
// 客户端错误
System.out.println(String.format("ClientException: errCode=%s, errMsg=%s, requestId=%s", e.getErrCode(), e.getErrMsg(), e.getRequestId()));
} catch (Exception e) {
System.out.println("Exception:" + e.getMessage());
}
}
}
常见问题
报错Caused by: java.lang.ClassNotFoundException......如何解决?
报错信息
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.NoopHostnameVerifier
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/ssl/DefaultHostnameVerifier
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.ssl.DefaultHostnameVerifier
解决方案
将HTTP Client的JAR包提升到4.5.13版本,更多信息,请参见HTTP Client的Maven仓库。
关于升级操作是否会影响原来使用该JAR包的程序,从版本升级上来说一般不会影响。HTTP Client4.3升级到HTTP Client4.5,可能会涉及到一些API的更改,因此某些代码可能需要进行调整才能与新版本兼容。为了确保在升级后不会遇到问题,建议在升级之前进行充分的测试(例如测试是否能跑通,或者在预发环境灰度测试等),并查看Apache HttpClient的发行说明,以便了解任何API变更和已知问题。
后续处理
安装后重新调用报错
报错信息
java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)Lcom/google/gson/JsonElement;
解决方案:gson包版本的问题,需升级gson版本到2.8.9。
继gson包更新安装后重新调用报错
报错信息
java.lang.NoClassDefFoundError: io/opentracing/util/GlobalTracer
解决方案:引入JAR包opentracing-util和opentracing-api。
继io/opentracing/util/GlobalTracer的问题解决后报错
报错信息
java.lang.NoClassDefFoundError: io/opentracing/noop/NoopTracerFactory
解决方案:安装JAR包opentracing-noop。