AnyText图文融合
支持的领域 / 任务:aigc /AnyText图文融合
通义万相-AnyText图文融合,支持图文生成和文字编辑功能,可广泛应用于电商海报、Logo设计、创意涂鸦、表情包、儿童绘本等诸多场景。
AnyText模型支持两种调用模式:
文字生成:输入一段描述,以及一张标识文字位置的图片,即可生成一张带有文字的图片。例如:
"一个儿童蜡笔画,森林里有一个可爱的蘑菇形状的房子,标题是“森林小屋”"+=
文字编辑:输入一张要编辑的原图,以及一张标识文字位置的图片,即可生成一张在指定位置做编辑的图片。例如:
+ + "精美的书法作品,上面写着“志” “存” “高” “远”" =
上述两种模式中,标识文字位置的图片要求代表位置区域的像素值为0,其余区域不为0即可。
模型概览
模型名 | 模型简介 |
wanx-anytext-v1 | AnyText图文融合 |
使用限制:模型正在公测中,免费额度300张图片。并发任务数量限制为1。
HTTP调用接口
功能描述
本模型需要相对较长的算法调用时间,所以在接口层面采用了异步调用的方式进行任务提交,在通过任务接口提交作业之后,系统会返回对应的作业ID,随后可以通过对应的异步作业查询接口获取任务的状态,并在作业到达最终完成态后取回对应的作业结果。
前提条件
已开通服务并获得API-KEY:API-KEY的获取与配置。
作业提交接口调用
https://dashscope.aliyuncs.com/api/v1/services/aigc/anytext/generation
入参描述
传参方式 | 字段 | 类型 | 必选 | 描述 | 示例值 |
Header | Content-Type | String | 是 | 请求类型:application/json | application/json |
Authorization | String | 是 | API-Key。 | Bearer d1**2a | |
X-DashScope-Async | String | 是 | 固定使用enable,表明使用异步方式提交作业。 | enable | |
Body | model | String | 是 | 指明需要调用的模型,固定值。 | wanx-anytext-v1 |
input.prompt | String | 是 | 提示词,描述图像的内容。 说明
| 一只浣熊站在黑板前,上面写着\"深度学习\" | |
input.mask_image_url | String | 是 | 一张标识文字生成位置的图片的URL地址。 说明
| http://aliyun.com/a.jpg | |
input.base_image_url | String | 否 | 一张待编辑的图片的URL地址。 说明
| http://aliyun.com/a.jpg | |
input.appended_prompt | String | 否 | 附加提示词。通常用于提升图片效果。 例如:“高清,精美的图片,没有水印”。如果不填,则采用默认值。 | best quality, extremely detailed,4k, HD, supper legible text, clear text edges, clear strokes, neat writing, no watermarks [默认值] | |
input.negative_prompt | String | 否 | 负向提示词。 | low-res, bad anatomy, extra digit, fewer digits, cropped, worst quality, low quality, watermark, unreadable text, messy words, distorted text, disorganized writing, advertising picture [默认值] | |
parameters.layout_priority | String | 否 | 需要生成或编辑多行文字时,mask_image中的每个位置按照一定规则排序后与文字行做对应,用于确定排序时优先从上到下还是从左到右。 | "vertical":从上到下 [默认值] "horizontal":从左到右 | |
parameters.text_position_revise | Bool | 否 | 是否使用渲染文字的外接矩形对mask_image中的文字位置做修正,以防止文字位置与待生成文字的尺寸偏差较大。 | false:不修正 [默认值] true:修正 | |
parameters.n | Integer | 否 | 生成图片个数,要求范围1~16。 | 1 [默认值] | |
parameters.steps | Integer | 否 | 采样步数,要求范围1~100。 | 20 [默认值] | |
parameters.image_width | Integer | 否 | 图像宽度,仅在“文字生成”模式下有效,要求范围256px~768px。 说明 必须为64px的整数倍。 | 512 [默认值] | |
parameters.image_height | Integer | 否 | 图像高度,仅在“文字生成”模式下有效,要求范围256px~768px。 说明 必须为64px的整数倍。 | 512 [默认值] | |
parameters.strength | Float | 否 | 文字控制模块的控制力度,要求范围0.0-2.0。 | 1.0 [默认值] | |
parameters.cfg_scale | Float | 否 | Classifier-Free Guidance(CFG)强度参数,要求范围0.1~30.0。 | 9.0 [默认值] | |
parameters.eta | Float | 否 | DDIM采样算法的eta参数,要求范围0~1.0。 | 0.0 [默认值] | |
parameters.seed | Integer | 否 | 种子数,范围-1~99999999。 | -1(随机) [默认值] |
出参描述
字段 | 类型 | 描述 | 示例值 |
output.task_id | String | 本次请求的异步任务的作业id,实际作业结果需要通过异步任务查询接口获取。 | 13b1848b-5493-4c0e-8c44-68d038b492af |
output.task_status | String | 提交异步任务后的作业状态。 | PENDING |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
下示例展示通过CURL命令来调用本模型的脚本。
需要使用您的API-KEY替换示例中的YOUR-DASHSCOPE-API-KEY
,代码才能正常运行。
文字生成示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/anytext/generation' \
--header 'X-DashScope-Async: enable' \
--header 'Authorization: Bearer <YOUR-DASHSCOPE-API-KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "wanx-anytext-v1",
"input": {
"prompt": "一只浣熊站在黑板前,上面写着“深度学习”",
"mask_image_url": "http://public-vigen-video.oss-cn-shanghai.aliyuncs.com/yuxiang.tyx/test_anytext/gen1.png"
},
"parameters": {
"seed": 81808278
}
}'
文字编辑示例:
curl --location 'https://dashscope.aliyuncs.com/api/v1/services/aigc/anytext/generation' \
--header 'X-DashScope-Async: enable' \
--header 'Authorization: Bearer <YOUR-DASHSCOPE-API-KEY>' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "wanx-anytext-v1",
"input": {
"prompt": "精美的书法作品,上面写着“志” “存” “高” “远”",
"mask_image_url": "http://public-vigen-video.oss-cn-shanghai.aliyuncs.com/yuxiang.tyx/test_anytext/edit10.png",
"base_image_url": "http://public-vigen-video.oss-cn-shanghai.aliyuncs.com/yuxiang.tyx/test_anytext/ref10.jpg"
},
"parameters": {
"seed": 98053044
}
}'
响应示例
{
"output": {
"task_id": "xxxxxxxx",
"task_status": "PENDING"
}
"request_id": "7574ee8f-38a3-4b1e-9280-11c33ab46e51"
}
异常响应示例
在提交作业请求出错的情况下,输出的结果中会通过 code 和 message 指明出错原因。
{
"code":"InvalidApiKey",
"message":"Invalid API-key provided.",
"request_id":"fb53c4ec-1c12-4fc4-a580-cdb7c3261fc1"
}
作业任务状态查询和结果获取接口
GET https://dashscope.aliyuncs.com/api/v1/tasks/{task_id} --header 'Authorization: <YOUR-DASHSCOPE-API-KEY>'
入参描述
传参方式 | 字段 | 类型 | 必选 | 描述 | 示例值 |
Url Path | task_id | String | 是 | 需要查询作业的 task_id | 13b1848b-5493-4c0e-8c44-68d038b492af |
Header | Authorization | String | 是 | API-Key,例如:Bearer d1**2a | Bearer d1**2a |
出参描述
字段 | 类型 | 描述 | 示例值 |
header.status_code | Integer | http返回码。 | 成功:200;客户端错误:4xx;服务端错误:5xx |
header.status_name | String | 错误码。 | "Success"代表成功,其他代表失败 |
header.status_message | String | 错误信息。 | 参见状态码说明 |
output.task_id | String | 本次请求的异步任务的作业id,实际作业结果需要通过异步任务查询接口获取。 | 13b1848b-5493-4c0e-8c44-68d038b492af |
output.task_status | String | 被查询作业的作业状态。 | 任务状态:
|
output.result_url | List | 如果作业成功,包含模型生成的结果图像的 URL的列表,可以在 24 小时之内随时下载。 | "result_url": ["http://oss.aliyuncs.com/xxx/abc.jpg"] |
output.warning | String | 算法内部的警告信息(如有)。 | "warning": "" |
usage.image_count | Integer | 本次请求生成图像计量。 | "image_count": 1 |
request_id | String | 本次请求的系统唯一码。 | 7574ee8f-38a3-4b1e-9280-11c33ab46e51 |
请求示例
以下示例展示通过CURL命令来调用本模型的脚本。
需要使用您的API-KEY替换示例中的YOUR-DASHSCOPE-API-KEY
,代码才能正常运行。
curl -X GET \
--header 'Authorization: Bearer <YOUR-DASHSCOPE-API-KEY>' \
https://dashscope.aliyuncs.com/api/v1/tasks/86ecf553-d340-4e21-af6e-a0c6a421c010
响应示例(作业执行中)
作业提交后将处于排队状态,在得到调度之后将转为运行状态,此时作业的状态为RUNNING。
{
"request_id":"e5d70b02-ebd3-98ce-9fe8-759d7d7b107d",
"output":{
"task_id":"86ecf553-d340-4e21-af6e-a0c6a421c010",
"task_status":"RUNNING"
}
}
}
响应示例(作业成功执行完毕)
如果作业执行完成并成功之后,再次查询作业状态,接口将在告知作业状态的同时,一并将作业的结果返回。对于本模型,作业在结束之后的状态会持续保留24小时以备客户随时查询,24小时之后,作业将从系统中清除,相关的结果也将一并清除;对应的,作业生成的结果为图像的URL地址,出于安全考虑,该URL的下载有效期也是24小时,需要用户在获取作业结果后根据需要及时使用或者转存。
{
"request_id":"<your request id>",
"output":{
"task_id":"<your task id>",
"task_status":"SUCCEEDED",
"submit_time":"xxx",
"scheduled_time":"xxx",
"end_time":"xxx",
"result_url":["http://oss.aliyuncs.com/xxx/abc.jpg"],
"warning": ""
},
"usage":{
"image_count":1
}
}
响应示例(作业失败)
如果因为某种原因作业失败,则作业状态会设置为FAILED,并且通过status_name和status_message字段指明错误原因。
异常1,图片下载失败
{
"header": {
"status_code": 400,
"status_name": "InvalidURL",
"status_message": "Image download fail, please check the request URL"
},
"payload": {
"output": {
"output_img": [],
"warning": ""
},
"usage": {
"image_count": 0
}
}
}
异常2, 传入图片的尺寸太大或太小
{
"header": {
"status_code": 400,
"status_name": "InvalidFile.Resolution",
"status_message": "[draw_pos] Resolution needs to be between 64 and 7000"
},
"payload": {
"output": {
"output_img": [],
"warning": ""
},
"usage": {
"image_count": 0
}
}
}
异常3, 传入的图片格式不对(非图像格式)
{
"header": {
"status_code": 400,
"status_name": "InvalidURL",
"status_message": "Image decode fail, please check the request image format is one of the following types: JPEG, JPG, PNG, BMP"
},
"payload": {
"output": {
"output_img": [],
"warning": ""
},
"usage": {
"image_count": 0
}
}
}
异常4,算法内部报错(传入的图片大小不对)
{
"header": {
"status_code": 500,
"status_name": "InternalError.Algo",
"status_message": "An internal error occurs during computation"
},
"payload": {
"output": {
"output_img": [],
"warning": ""
},
"usage": {
"image_count": 0
}
}
}
异常5,传入的图片文件超限
{
"header": {
"status_code": 400,
"status_name": "InvalidURL",
"status_message": "mask_image_url file size (7.23MB) exceeds the maximum limit: 5MB"
},
"payload": {
"output": {
"output_img": [],
"warning": ""
},
"usage": {
"image_count": 0
}
}
}
状态码说明
DashScope通用状态码请查阅:返回状态码说明
同时本模型还有如下特定错误码:
http 返回码* | 错误码(code) | 错误信息(message) | 含义说明 |
400 | InvalidParameter | Request format is illegal :XXX(具体的参数错误信息) | 请求参数的格式不合法 |
400 | InvalidURL | Image file size exceed limit: 5MB | 输入图像的文件大小超限 |
400 | InvalidURL | Image download fail, please check the request URL | 输入图像的URL下载文件失败 |
400 | InvalidURL | Image decode fail, please check the request image format is one of the following types: JPEG, JPG, PNG, BMP | 输入图像解码失败,需检查文件格式 |
400 | InvalidFile.Resolution | Resolution needs to be between 64 and 7000 | 输入图片的分辨率过大或过小 |
500 | InternalError.Algo | An internal error occurs during computation | 算法内部错误 |