阿里云图像搜索完整对接指南:从开通到API/SDK深度集成

📅 2026/6/30 22:31:35
阿里云图像搜索完整对接指南:从开通到API/SDK深度集成
1. 图像搜索是什么能做什么图像搜索Image Search是阿里云推出的一款以深度学习和机器视觉技术为核心的平台型产品。它的工作原理并不复杂系统会对入库的每一张图片提取高维视觉特征向量并建立高效的索引结构。当用户提交一张查询图片时服务会实时计算该图片的特征向量然后在索引库中快速检索出特征最相似的若干张图片按相似度分数从高到低返回。这一技术能够支撑的业务场景非常广泛。在电商领域最常见的应用是“拍照购物”或“找同款”——用户随手拍下心仪的商品系统即可在商品库中精准匹配同款或相似款。在版权保护领域通过输入疑似侵权的图片可以在图库中快速定位被盗用的原创内容。在媒体资产管理中输入一张示例图片即可从海量素材库中检索出视觉风格相近的图片。此外商品推荐、相似图片推荐等场景也是图像搜索的典型用武之地。阿里云图像搜索目前主要提供两大服务类型商品图片搜索和通用图片搜索。商品图片搜索专注于电商场景针对商品主体进行特征提取和匹配对每个商品类目进行更精细化的特征提取使得召回更加准确通用图片搜索则适用于版权保护、相似图片推荐等更广泛的场景不需要关注具体的类目信息。需要特别注意的是服务类型在创建实例时选定后不可更改因此务必要根据实际业务需求做出正确的选择。从产品能力来看图像搜索具备搜索精度高、响应速度快毫秒级、支持百亿级数据规模、实时增删改查等突出优势。同时阿里云对客户数据采用非对称加密策略结合权限控制保障数据安全。需要先登录阿里云控制台点 击阿里云控制台2. 开通服务与创建实例2.1 前提条件在使用图像搜索服务之前需要完成以下几个准备工作注册阿里云账号如尚未注册可通过阿里云官网完成注册流程。完成实名认证个人或企业实名认证均可。获取AccessKeyAccessKey ID和AccessKey Secret是调用API和SDK时的身份凭证。建议通过RAM子账号创建AccessKey避免使用主账号密钥带来的安全风险。2.2 购买实例完成上述准备后即可进入图像搜索产品首页单击“立即购买”进入实例购买页面。购买时需要配置以下关键参数地域图像搜索服务所在的地理区域。目前国际站支持新加坡、中国香港、日本东京和德国法兰克福等地。地域一旦选定不可更改建议选择与您的应用服务器如ECS相同的地域以便后续使用内网VPC访问获得更低的延迟和更好的稳定性。服务类型选择“商品图片搜索”或“通用图片搜索”。此选项一旦选定不可更换请谨慎选择。访问频次QPS每秒允许向图像搜索服务发起的最大请求次数。例如购买QPS为5的实例意味着每秒钟最多可以进行5次图片查询操作删除图片操作的QPS固定为20。QPS越高并发处理能力越强价格也相应更高。最大容量您可以索引的最大图片数量。对于商品图片搜索此处指的是图片数量而非商品数量。可选规格包括10万、250万、500万、1000万、2000万、3000万、4000万、5000万。实例名称必填项要求以小写字母开头由小写字母和数字组成长度4~20个字符。实例名称一旦确认不可修改。购买时长购买图像搜索服务的时长可选择是否开启到期自动续费。在支付页面确认订单信息后单击“去支付”。支付成功后服务一般需要15分钟的开通时间请耐心等待。3. 控制台核心操作实例创建成功后即可登录图像搜索管理控制台开始使用。3.1 实例概览进入控制台概览页面页面会展示各服务类型商品图片搜索、布料图片搜索、商标图片搜索、版权图片搜索、商品多模态搜索等的实例总数及运行状态统计右侧提供快速入门指引。单击实例ID或操作进入实例详情页默认显示概述页签展示实例基本信息实例名称、实例ID、地域、状态、到期时间等及套餐使用情况最大容量、已用图片数量等。3.2 图片新增单击“图片新增”Tab进入图片新增页面。需要填写以下字段商品IDProductId必填最多支持256个字符。一个商品可有多张图片。图片名称PicName必填最多支持256个字符。ProductId PicName唯一确定一张图片。如果多次添加图片具有相同的ProductId PicName以最后一次添加为准前面添加的图片将被覆盖。上传图片支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式图片大小不超过4MB长宽像素须大于等于100且小于等于4096。图片主体识别开启后选择主体识别方式如系统自动识别。为true时由系统进行主体识别以识别的主体进行搜索为false时则不进行主体识别以整张图进行搜索。图片类目CategoryId选填。对于商品搜索若设置类目则以设置的为准若不设置类目将由系统进行类目预测。自定义内容CustomContent选填最多支持4096个字符查询时会返回该字段。整数属性IntAttr选填可用于查询时过滤。字符串属性StrAttr选填最多支持128个字符可用于查询时过滤。单击确认后右侧返回结果中code为0、message为success表示图片新增成功。3.3 图片搜索单击“图片搜索”页签进入图片搜索页面。搜索类型支持两种模式SearchByPic使用新图片搜索相似图片。上传待搜索的图片开启图片主体识别开关设置返回结果数和结果起始位置等参数。SearchByName使用已入库的图片进行搜索。指定已存在的图片名称系统在索引中查找相似图片。右侧“原始返回结果”区域以JSON格式展示搜索响应其中auctions数组包含匹配记录含productId和score字段head中返回docsFound命中总数、docsReturn返回条数和searchTime搜索耗时等信息。4. 新增图片的四种方式图像搜索服务提供四种新增图片的方式适用于不同的业务场景控制台图片新增适用于功能体验和小规模测试场景操作直观适合快速验证。API新增通过直接调用API接口新增图片适合需要灵活集成的场景。SDK新增适用于小规模、实时的数据增量操作代码简洁易于维护。批量操作适用于较大规模百万级、离线数据操作可通过批量导入功能从阿里云OSS中批量导入图片。5. Java SDK对接详解5.1 添加依赖通过Maven引入图像搜索SDK依赖dependency groupIdcom.aliyun/groupId artifactIdimagesearch20201214/artifactId version4.3.0/version /dependency5.2 客户端初始化创建Config对象并配置认证信息import com.aliyun.imagesearch20201214.Client; import com.aliyun.teaopenapi.models.Config; public class ImageSearchClient { public static Client createClient() throws Exception { Config config new Config(); // 从环境变量获取AccessKey强烈建议不要硬编码到代码中 config.accessKeyId System.getenv(CC_AK_ENV); config.accessKeySecret System.getenv(CC_SK_ENV); config.type access_key; // 替换为您购买实例的地域 config.regionId ap-southeast-1; config.endpoint imagesearch.ap-southeast-1.aliyuncs.com; return new Client(config); } }5.3 内网VPC访问配置如果您的ECS实例与图像搜索实例在同一地域可以通过内网VPC访问以获得更低的延迟// 内网VPC访问配置 config.endpointType internal; config.endpoint imagesearch-vpc.ap-southeast-1.aliyuncs.com;5.4 新增图片Add接口Add接口用于向图像搜索实例中添加图片import com.aliyun.imagesearch20201214.models.AddImageAdvanceRequest; import com.aliyun.imagesearch20201214.models.AddImageResponse; import com.aliyun.teautil.models.RuntimeOptions; import java.io.FileInputStream; public class AddImageExample { public static void main(String[] args) throws Exception { Client client ImageSearchClient.createClient(); AddImageAdvanceRequest request new AddImageAdvanceRequest(); // 必填实例名称注意是实例名称不是实例ID request.instanceName myimagesearch; // 必填商品ID request.productId product_001; // 必填图片名称 request.picName image_001.jpg; // 图片内容通过文件流传入 FileInputStream fileStream new FileInputStream(/path/to/image.jpg); request.picContentObject fileStream; // 选填图片类目 request.categoryId 3; // 选填自定义内容 request.customContent 夏季新款连衣裙; // 选填整数属性可用于查询时过滤 request.intAttr 100; // 选填字符串属性 request.strAttr red; // 选填是否进行主体识别默认为true request.crop true; RuntimeOptions runtime new RuntimeOptions(); AddImageResponse response client.addImageAdvance(request, runtime); System.out.println(Response: response.getBody()); } }5.5 图片搜索SearchImageByPic接口SearchImageByPic接口用于根据图片搜索相似图片import com.aliyun.imagesearch20201214.models.SearchImageByPicAdvanceRequest; import com.aliyun.imagesearch20201214.models.SearchImageByPicResponse; import java.io.FileInputStream; public class SearchByPicExample { public static void main(String[] args) throws Exception { Client client ImageSearchClient.createClient(); SearchImageByPicAdvanceRequest request new SearchImageByPicAdvanceRequest(); request.instanceName myimagesearch; FileInputStream fileStream new FileInputStream(/path/to/query.jpg); request.picContentObject fileStream; // 返回结果数量 request.num 10; // 结果起始位置 request.start 0; // 是否进行主体识别 request.crop true; // 可选按字符串属性过滤 request.strAttr red; // 可选按整数属性过滤 request.intAttr 100; RuntimeOptions runtime new RuntimeOptions(); SearchImageByPicResponse response client.searchImageByPicAdvance(request, runtime); System.out.println(Search results: response.getBody()); } }5.6 按名称搜索SearchImageByName接口SearchImageByName接口用于使用已入库的图片进行搜索import com.aliyun.imagesearch20201214.models.SearchImageByNameRequest; import com.aliyun.imagesearch20201214.models.SearchImageByNameResponse; public class SearchByNameExample { public static void main(String[] args) throws Exception { Client client ImageSearchClient.createClient(); SearchImageByNameRequest request new SearchImageByNameRequest(); request.instanceName myimagesearch; // 已入库图片的商品ID和图片名称 request.productId product_001; request.picName image_001.jpg; request.num 10; request.start 0; SearchImageByNameResponse response client.searchImageByName(request); System.out.println(Search results: response.getBody()); } }5.7 删除图片Delete接口import com.aliyun.imagesearch20201214.models.DeleteImageRequest; import com.aliyun.imagesearch20201214.models.DeleteImageResponse; public class DeleteImageExample { public static void main(String[] args) throws Exception { Client client ImageSearchClient.createClient(); DeleteImageRequest request new DeleteImageRequest(); request.instanceName myimagesearch; request.productId product_001; request.picName image_001.jpg; DeleteImageResponse response client.deleteImage(request); System.out.println(Delete result: response.getBody()); } }6. Python SDK对接详解6.1 安装SDK通过pip安装图像搜索Python SDKpip install alibabacloud_imagesearch202012146.2 客户端初始化from alibabacloud_imagesearch20201214.client import Client from alibabacloud_tea_openapi.models import Config config Config() config.access_key_id os.environ.get(CC_AK_ENV) config.access_key_secret os.environ.get(CC_SK_ENV) config.type access_key config.region_id ap-southeast-1 config.endpoint imagesearch.ap-southeast-1.aliyuncs.com client Client(config)6.3 新增图片Add接口Python SDK的Add接口使用AddImageAdvanceRequestfrom alibabacloud_imagesearch20201214.models import AddImageAdvanceRequest from alibabacloud_tea_util.models import RuntimeOptions import os def add_image(): request AddImageAdvanceRequest() # 必填实例名称 request.instance_name myimagesearch # 必填商品ID request.product_id product_001 # 必填图片名称 request.pic_name image_001.jpg # 图片内容通过打开文件传入 with open(/path/to/image.jpg, rb) as f: request.pic_content_object f # 选填图片类目 request.category_id 3 # 选填自定义内容 request.custom_content 夏季新款连衣裙 # 选填整数属性 request.int_attr 100 # 选填字符串属性 request.str_attr red # 选填是否进行主体识别 request.crop True runtime RuntimeOptions() response client.add_image_advance(request, runtime) print(response.body) if __name__ __main__: add_image()6.4 图片搜索SearchImageByPic接口from alibabacloud_imagesearch20201214.models import SearchImageByPicAdvanceRequest def search_by_pic(): request SearchImageByPicAdvanceRequest() request.instance_name myimagesearch with open(/path/to/query.jpg, rb) as f: request.pic_content_object f request.num 10 request.start 0 request.crop True request.str_attr red request.int_attr 100 runtime RuntimeOptions() response client.search_image_by_pic_advance(request, runtime) print(response.body) if __name__ __main__: search_by_pic()6.5 按名称搜索SearchImageByName接口from alibabacloud_imagesearch20201214.models import SearchImageByNameRequest def search_by_name(): request SearchImageByNameRequest() request.instance_name myimagesearch request.product_id product_001 request.pic_name image_001.jpg request.num 10 request.start 0 response client.search_image_by_name(request) print(response.body) if __name__ __main__: search_by_name()7. 高级功能与应用场景7.1 批量操作图像搜索支持通过批量操作功能批量导入阿里云OSS中的图片或批量删除已经入库的图片。使用批量操作时需要确保图像搜索实例和OSS Bucket在同一地域。具体流程包括先将图片上传到OSS然后通过批量操作功能引用OSS上的JSONL文件进行批量导入。7.2 条件过滤在图片新增和搜索时可以通过设置属性参数实现条件过滤。支持的属性字段包括IntAttr、IntAttr2、IntAttr3、IntAttr4整数类型属性以及StrAttr、StrAttr2、StrAttr3、StrAttr4字符串类型属性。例如在电商场景中可以为不同站点的图片设置不同的IntAttr查询时通过过滤来实现数据隔离。7.3 多模态搜索图像搜索还提供了商品多模态搜索能力这是一种结合了文本和图像进行多模态检索的技术。它通过融合不同模态的信息提升图像搜索的准确性和灵活性使用户能够通过自然语言描述或图片形式快速找到目标图像。7.4 典型应用场景电商“拍照购物”用户上传商品照片系统自动识别商品主体如连衣裙、鞋子在商品库中检索相似款式并支持按颜色、尺码等标签进一步筛选。版权保护通过输入疑似侵权的图片在图库中快速定位被盗用的原创内容。内容推荐输入一张示例图片从海量素材库中检索出视觉风格相近的图片用于相似内容推荐。8. 计费说明与注意事项8.1 计费模式图像搜索服务采用按月自然月预付费资源包的计费方式。计费项只包括图片最大容量和访问频次QPS其余功能均免费使用。图片最大容量用户可以索引的最大图片数量。可选规格包括10万、250万、500万、1000万、2000万、3000万、4000万、5000万。访问频次QPS每秒能向图像搜索服务发起的最大请求次数。可选规格包括1QPS仅限10万图片容量、5QPS、10QPS。删除图片操作的QPS固定为20。8.2 重要注意事项地域不可更改地域一旦选定不可更改请谨慎选择。服务类型不可更改服务类型一旦选定不可更换请根据实际业务需求选择。实例名称不可修改实例名称一旦确认不可修改。内网访问内网VPC访问仅限同区域ECS或资源的访问如果遇到调用不通请先检查您的ECS或资源与图像搜索是否在同一个区域。图片格式要求当前仅支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式图片图片长和宽的像素必须都大于等于100且小于等于4096图像中不能带有旋转信息。9. 常见问题解答问1商品图片搜索和通用图片搜索有什么区别答商品图片搜索主要针对商品类的图片进行相关的类目划分针对每个类目进行更精细化的特征提取使得每个商品类目上的召回更加准确适用的场景是电商类的应用。通用图片搜索不需要关注具体的类目信息所有的图片均属于一个通用的类目适用于版权保护、相似图片推荐等场景。问2图像搜索支持哪些图片格式图片大小有什么限制答支持PNG、JPG、JPEG、BMP、GIF、WEBP、TIFF、PPM格式图片。图片大小不超过4MB长宽像素须大于等于100且小于等于4096图像中不能带有旋转信息。问3如何通过内网VPC访问图像搜索服务答需要确保您的ECS实例与图像搜索实例在同一地域。在SDK配置中将endpointType设置为internal并将endpoint设置为对应地域的VPC地址如imagesearch-vpc.ap-southeast-1.aliyuncs.com。问4图像搜索的计费方式是什么答采用按月自然月预付费资源包的计费方式计费项只包括图片最大容量和访问频次QPS其余功能均免费使用。图片最大容量可选10万至5000万共8个规格QPS可选1、5、10三个规格。问5如果图片新增失败可能的原因有哪些答常见原因包括图片格式不支持、图片大小超过4MB、图片像素不符合要求小于100或大于4096、图像中含有旋转信息、实例名称填写错误注意是实例名称不是实例ID、AccessKey权限不足等。问6如何批量导入大量图片答可以通过批量操作功能实现。首先将图片上传到阿里云OSS需与图像搜索实例在同一地域然后通过批量操作功能引用OSS上的JSONL文件进行批量导入。如果图片没有存储在OSS可使用OSSImport工具先将图片上传到OSS。