OpenSearch permet d'appeler le service d'extraction de contenu d'image via une API, d'intégrer ce service à vos flux de travail métier et d'utiliser le texte analysé pour la recherche d'images et la réponse aux questions.
Liste des services
|
Nom du service |
ID du service |
Description |
Limite QPS de l'API |
|
Image Content Understanding Service 001 |
ops-image-analyze-vlm-001 |
Analyse le contenu des images et reconnaît le texte à l'aide d'un grand modèle multimodal, permettant des applications telles que la recherche d'images et la réponse aux questions. |
10 Remarque
Pour demander une limite QPS d'API plus élevée, soumettez un ticket au support technique. |
|
Image OCR Service 001 |
ops-image-analyze-ocr-001 |
Extrait le texte des images par OCR, autorisant ainsi des cas d'usage comme la recherche visuelle et les systèmes de questions-réponses. |
-
Obtenir les identifiants d'authentification
La plateforme ouverte AI Search nécessite une clé API pour l'authentification. Pour obtenir des instructions, consultez Obtenir une clé API.
-
Récupérer l'endpoint du service
Vous pouvez appeler le service via le réseau public ou un VPC. Pour plus de détails, reportez-vous à Obtenir l'endpoint du service.
Créer une tâche d'extraction asynchrone
Méthode de requête
POST
URL
{host}/v3/openapi/workspaces/{workspace_name}/image-analyze/{service_id}/async
-
host: Endpoint du service API. Vous pouvez accéder au service API via le réseau public ou via un VPC. Pour plus d'informations, consultez Obtenir un endpoint.Dans la console AI Search Open Platform, choisissez API Keys dans le volet de navigation de gauche. Les champs Public API Domain Name et Private API Domain Name figurent ensuite dans la section Access Domain Name, en haut de la page.
workspace_name: Nom du workspace. Par exemple,default.service_id: ID du service système intégré. Par exemple,ops-image-analyze-vlm-001.
Paramètres de la requête
Paramètres d'en-tête
Authentification par clé API
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
Content-Type |
String |
Obligatoire |
Définit le type de média du corps de la requête. La valeur doit être application/json. |
application/json |
|
Authorization |
String |
Obligatoire |
Clé API servant à l'authentification, préfixée par Bearer . |
Bearer OS-d1**2a |
Paramètre du corps
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
service_id |
String |
Oui |
ID du service intégré :
|
ops-image-analyze-vlm-001 |
|
document.url |
String |
Non |
URL du fichier. Ce paramètre ou |
http://path/to/***.jpg |
|
document.content |
String |
Non |
Contenu du fichier encodé en Base64. Ce paramètre ou |
"aGVsbG8gd29ybGQ=" |
|
document.file_name |
String |
Non |
Nom du fichier. Si ce paramètre est omis, le nom est déduit de |
test.jpg |
|
document.file_type |
String |
Non |
Type de fichier (par exemple |
jpg |
Paramètres de retour
|
Paramètre |
Type |
Description |
Valeur |
|
result.task_id |
String |
ID de la tâche asynchrone d'analyse d'image. |
6177bf71-f87f-4d86-ab0c-e2b64dfe**** |
Requête cURL
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/image-analyze/ops-image-analyze-vlm-001/async"
--data '{
"document": {
"url": "https://img01.yzcdn.cn/****/2017/05/11/FoTMgBa0SvUaAeFruY7i7O_EUMhf.jpg%21middle.jpg",
"file_type": "jpg"
}
}' \
Exemple de réponse
Réponse normale
{
"request_id":"CD4E26F0-23FF-449C-83DC-20CC8FF1****",
"latency":8.0,
"http_code":200,
"result":{
"task_id":"cd4e26f0-23ff-449c-83dc-20cc8ff1****"
}
}
Exemple de réponse d'erreur
En cas d'échec d'une requête d'accès, la sortie contient un code et un message expliquant l'erreur.
{
"request_id":"0CCAC03B-D83F-432F-B6BA-C3049576****",
"latency":0.0,
"code":"InvalidParameter",
"http_code":400,
"message":"document.content or document.url required, and both cannot be present at the same time"
}
État de la tâche d'extraction asynchrone
Méthode de requête
GET
URL
{host}/v3/openapi/workspaces/{workspace_name}/image-analyze/{service_id}/async/task-status?task_id=${task_id}
host : Endpoint du service API. Vous pouvez appeler le service API via le réseau public ou via un VPC. Pour plus de détails, consultez Obtenir un endpoint de service.
workspace_name : Nom du workspace. Par exemple, default.
service_id : ID du service intégré. Par exemple, ops-image-analyze-vlm-001.
task_id : ID de tâche renvoyé dans la réponse lors de la création d'une tâche d'analyse d'image. Par exemple, cd4e26f0-23ff-449c-83dc-20cc8ff1****.
Paramètres de la requête
Paramètres d'en-tête
Authentification par clé API
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
Content-Type |
string |
Oui |
Type de la requête. Doit être |
application/json |
|
Authorization |
string |
Oui |
Clé API d'authentification, préfixée par |
Bearer OS-d1**2a |
Paramètres de réponse
|
Paramètre |
Type |
Description |
Exemple |
|
request_id |
String |
Identifiant unique de l'appel API. |
3C09570D-12DB-46B4-BF0F-A100D79B**** |
|
latency |
Float/Int |
Latence de la requête, en millisecondes. |
3.0 |
|
result.task_id |
String |
ID de la tâche asynchrone. Ce paramètre n'est pas retourné pour les appels synchrones. |
a7e4c0f6-874c-47e3-b05b-02278a96e**** |
|
result.status |
String |
État de la tâche. Valeurs possibles :
|
SUCCESS |
|
result.data |
Object |
Résultats de l'analyse d'image. |
{"content":"The image shows XXXX", "content_type":"plain"} |
|
result.data.content |
String |
Contenu extrait de l'image. |
"XXX" |
|
result.data.content_type |
String |
Type de contenu de la sortie. La valeur est toujours |
plain |
|
usage.token_count |
int |
Nombre de tokens pour la sortie. Ce paramètre s'applique au service |
1234 |
|
usage.pv_count |
int |
Nombre d'appels, fixé à 1. S'applique au service |
1 |
Exemple de requête cURL
curl -X GET \
-H"Content-Type: application/json" \
-H "Authorization: Bearer Your API-KEY" \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/image-analyze/ops-image-analyze-vlm-001/async/task-status?task_id=d9781786-20b8-4fb4-bbb5-38f82e69****"
Exemple de réponse
Réponse réussie
{
"request_id":"3C09570D-12DB-46B4-BF0F-A100D79B****",
"latency":3.0,
"http_code":200,
"result":{
"status":"SUCCESS",
"data":{
"content":"The image shows a WMF blender surrounded by fruits and vegetables. Next to it is a glass of red juice with a straw. On the table are lemon slices, strawberries, and kiwifruit. A cut pineapple and an orange sit in one corner. Chopped carrots are in the blender, ready for juicing. The scene looks healthy and appetizing.",
"content_type":"plain"
},
"task_id":"d9781786-20b8-4fb4-bbb5-38f82e69****"
},
"usage":{
"token_count":95
}
}
Exemple de réponse d'erreur
Lorsqu'une requête d'accès échoue, la sortie inclut un code et un message décrivant l'erreur.
{
"request_id":"153FC253-468D-4C46-873E-2AEB918C****",
"latency":2.0,
"code":"BadRequest.TaskNotExist",
"http_code":404,
"message":"task[d9781786-20b8-4fb4-bbb5-38f82e690b****] does not exist"
}
Création d'une tâche d'extraction synchrone
Méthode de requête
POST
URL
{host}/v3/openapi/workspaces/{workspace_name}/image-analyze/{service_id}/sync
Paramètres
host: Endpoint du service API. Vous pouvez appeler le service API via le réseau public ou via un VPC. Pour plus d'informations, consultez Obtenir un endpoint de service.workspace_name: Nom de votre workspace. Par exemple,default.service_id: ID du service intégré. Par exemple,ops-image-analyze-vlm-001.
Paramètres
Paramètres d'en-tête
Authentification par clé API
|
Paramètre |
Type |
Obligatoire |
Description |
Valeur d'exemple |
|
Content-Type |
String |
Oui |
Type de média de la requête. |
application/json |
|
Authorization |
String |
Oui |
Clé API |
Bearer OS-d1**2a |
Paramètres du corps
|
Paramètre |
Type |
Obligatoire |
Description |
Exemple |
|
service_id |
String |
Oui |
ID du service intégré. Valeurs valides :
|
ops-image-analyze-vlm-001 |
|
document.url |
String |
Non |
URL du fichier. Prend en charge HTTP et HTTPS. Vous devez spécifier soit |
http://path/to/***.jpg |
|
document.content |
String |
Non |
Contenu du fichier encodé en Base64. Vous devez spécifier soit |
"aGVsbG8gd29ybGQ=" |
|
document.file_name |
String |
Non |
Nom du fichier. Si ce paramètre est laissé vide, le nom est déduit de |
test.jpg |
|
document.file_type |
String |
Non |
Type de fichier. Si ce paramètre est vide, le type est déduit de l'extension du nom de fichier. Si le type ne peut pas être déduit, vous devez le spécifier explicitement. Exemples : |
jpg |
Paramètres de réponse
|
Paramètre |
Type |
Description |
Valeur d'exemple |
|
result.status |
String |
État de la tâche. Valeurs possibles :
|
SUCCESS |
|
result.error |
String |
Message d'erreur lorsque |
Failed to decrypt the document. |
|
result.data |
Object |
Résultats de l'analyse d'image. |
{"content":"The image shows XXXX", "content_type":"plain"} |
|
result.data.content |
String |
Contenu extrait de l'image. |
"XXX" |
|
result.data.content_type |
String |
Type du contenu de sortie. La valeur est toujours |
plain |
|
request_id |
String |
Identifiant unique de l'appel API. |
B4AB89C8-B135-xxxx-A6F8-2BAB801A2CE4 |
|
latency |
number |
Latence de la requête, en ms. |
10 |
|
usage |
Object |
Consommation pour cet appel API. |
"usage": { "token_count": 1234 } |
|
usage.token_count |
integer |
Nombre de tokens en sortie. S'applique au service |
1234 |
|
usage.pv_count |
integer |
Nombre d'invocations. La valeur est fixée à 1. S'applique au service |
1 |
cURL
This section provides a sample API call and a glossary of relevant technical terms.
API call example
The following example shows how to make a synchronous call to the image analysis API endpoint.
curl -X POST \
-H"Content-Type: application/json" \
-H "Authorization: Bearer " \
"http://***-hangzhou.opensearch.aliyuncs.com/v3/openapi/workspaces/default/image-analyze/ops-image-analyze-vlm-001/sync" \
\ -d "{
\"document\":{
\"url\":\"https://img01.yzcdn.cn/****/2017/05/11/FoTMgBa0SvUaAeFruY7i7O_EUMhf.jpg%21middle.jpg\",
\"file_type\":\"jpg\"
}
}"
Terminology
The following table lists the technical terms used in this API call, their standard formatting, and related conventions.
Term
Standard form
Type
Notes
API key
API key
Industry Standard
Standard industry term. Use lowercase in prose.
China (Hangzhou)
China (Hangzhou)
Alibaba Cloud Region
The official region name. The identifier hangzhou in the URL is for system use.
Open Search
Open Search
Alibaba Cloud Product
The official product name. The identifier opensearch in the URL is for system use.
workspace
workspace
Industry Standard
A common cloud resource concept. Use lowercase.
image analysis
image analysis
Industry Standard
A functional description. The identifier image-analyze in the URL is for system use.
sync / async
sync / async
Industry Standard
Standard terms for synchronous and asynchronous operations.
document
document
JSON Field
A standard JSON field name. Use lowercase.
url
url
JSON Field
A standard JSON field name. Use lowercase.
file_type
file_type
JSON Field
A standard JSON field name. Use lowercase.
UI elements
This API call example does not reference any user interface (UI) elements.
Exemple de réponse
Réponse réussie
{
"request_id":"BB5CD4C3-C8B6-40E7-A037-4ADAE88A****",
"latency":12525.0,
"http_code":200,
"result":{
"status":"SUCCESS",
"data":{
"content":"The image shows a WMF blender surrounded by fruit and vegetables. Next to the blender is a cup of red juice with a straw in it. Scattered on the table are a few lemon slices, several strawberries, and some kiwifruit. In one corner of the table, there is a cut pineapple and an orange. Additionally, chopped carrots are in the blender, ready to be juiced. Everything looks healthy and delicious.",
"content_type":"plain"
}
},
"usage":{
"token_count":95
}
}
Réponse d'erreur
Une requête d'accès ayant échoué retourne un code et un message expliquant l'erreur.
{
"request_id": "6F33AFB6-A35C-4DA7-AFD2-9EA16CCF****",
"latency": 2.0,
"code": "InvalidParameter",
"http_code": 400,
"message": "JSON parse error: Cannot deserialize value of type `ImageStorage` from String \\"xxx\\"
}
Codes d'état
|
Code d'état HTTP |
Code d'erreur |
Description |
|
200 |
- |
Une requête réussie ne garantit pas le succès de la tâche ; vérifiez l'état de la tâche dans |
|
404 |
BadRequest.TaskNotExist |
La tâche n'existe pas. |
|
400 |
InvalidParameter |
La requête est invalide. |
|
500 |
InternalServerError |
Une erreur interne s'est produite. |
Pour plus d'informations sur les codes d'état, consultez codes d'état.