使用 Microsoft 认知服务自定义视觉训练 API 的“CreateImagesFromUrls”端点时,我收到每个图像返回的错误“ErrorSource”。
我可以使用 API 创建标签,因此我认为这不是身份验证问题,尽管 API 可能无法加载存储在 SharePoint 中的图像 URL。
我尝试在 REST 调用中为 HTTP 正文使用几种不同的 JSON 格式。
这是一个使用 React 和 TypeScript 构建的 SPFX Web 部件。目标是从 SharePoint 库加载图像并将它们发布到培训 API。这是我的上传功能:
private async uploadImages(tag: string, imageUrls: Array<any>): Promise<String> {
const imageBatch: any = {images:[], tagIds: [tag]};
imageUrls.map(iUrl => {
imageBatch.images.push({url: iUrl, tagIds: [tag], regions: [
{
tagId: tag,
left: 0.0,
top: 0.0,
width: 0.0,
height: 0.0
}
]});
});
console.log('ImageBatch:');
console.log(imageBatch);
//Add images
const keyPostUrl: string = this.endPoint + 'projects/' + this.pRID + '/images/urls';
const requestHeaders: Headers = new Headers();
requestHeaders.append('Content-type', 'application/json');
requestHeaders.append('Cache-Control', 'no-cache');
requestHeaders.append('Training-key', this.trainingKey);
const httpClientOptions: IHttpClientOptions = {
body: JSON.stringify(imageBatch),
headers: requestHeaders
};
return this.context.post(
keyPostUrl,
HttpClient.configurations.v1,
httpClientOptions)
.then((response: Response): Promise<HttpClientResponse> => {
console.log("Sending Images.");
return response.json();
}).then(data => {
console.log(data);
console.log("Is batch successful: " + data.isBatchSuccessful);
});
}
预计会看到 isBatchSuccessful = true 和上传的图像。但是我得到 isBatchSuccessful = false,“ErrorSource”的错误。
从 API 返回的响应示例:
{
"isBatchSuccessful":false,
"images":[
{
"sourceUrl":"https://myserver.sharepoint.com/sites/dev/Vision%20Training%20List/1234/image_example_752%20-%20Copy%20(2).jpg",
"status":"ErrorSource",
"image":null
},
{
"sourceUrl":"https://myserver.sharepoint.com/sites/dev/Vision%20Training%20List/1234/basic-image-template%20-%20Copy%20(3).png",
"status":"ErrorSource",
"image":null
},
]
}