>我正在尝试使用浏览器 API 控制台 (https://eastus.dev.cognitive.microsoft.com/docs/services/form-recognizer-api/operations/TrainCustomModel/console( 训练表单识别器。我已将转换图像上传到容器并创建了 SAS。浏览器 API 控制台生成以下 HTTP 请求:
POST https://eastus.api.cognitive.microsoft.com/formrecognizer/v1.0-preview/custom/train?source=https://pythonimages.blob.core.windows.net/?sv=2019-02-02&ss=bfqt&srt=sco&sp=rl&se=2020-01-22T00:23:33Z&st=2020-01-21T16:23:33Z&spr=https&sig=••••••••••••••••••••••••••••••••&prefix=images HTTP/1.1
Host: eastus.api.cognitive.microsoft.com
Content-Type: application/json
Ocp-Apim-Subscription-Key: ••••••••••••••••••••••••••••••••
{
"source": "string",
"sourceFilter": {
"prefix": "string",
"includeSubFolders": true
}
}
但是,我得到的答案是
Transfer-Encoding: chunked
x-envoy-upstream-service-time: 4
apim-request-id: 5ad37aa2-e251-4b61-98ae-023930b47d27
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
x-content-type-options: nosniff
Date: Tue, 21 Jan 2020 16:25:03 GMT
Content-Type: application/json; charset=utf-8
{
"error": {
"code": "1004",
"message": "Dataset path must be relative to local input mount path '/input' if local data is referenced."
}
}
我不明白为什么它似乎在本地寻找数据。我已经尝试了 SAS,例如在 blob http 地址中包含容器名称(图像(而不是作为查询参数,但到目前为止还没有成功。
我还尝试了 Python/REST 路径(在此处描述:https://learn.microsoft.com/en-gb/azure/cognitive-services/form-recognizer/quickstarts/python-train-extract-v1(,这会导致不同的错误:
Response status code: 408
Response body: {'error': {'code': '1011', 'innerError': {'requestId': 'e7f9ef9f-97bc-4b6a-86f3-0b29c9591c87'}, 'message': 'The operation exceeded allowed time limit and was canceled. The common reasons are that the data source is too large or contains unsupported content. Please check that your request conforms to service limits and retry with redacted data source.'}}
为了完整起见,我使用的代码如下(密钥/签名*ed:(
########### Python Form Recognizer Train #############
from requests import post as http_post
# Endpoint URL
base_url = r"https://markusformsrecognizer.cognitiveservices.azure.com/" + "/formrecognizer/v1.0-preview/custom"
source = r"https://pythonimages.blob.core.windows.net/images?sv=2019-02-02&ss=bfqt&srt=sco&sp=rl&se=2020-01-22T15:37:26Z&st=2020-01-22T07:37:26Z&spr=https&sig=*********************************"
headers = {
# Request headers
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': '*********************************'
}
url = base_url + "/train"
body = {"source": source}
try:
resp = http_post(url = url, json = body, headers = headers)
print("Response status code: %d" % resp.status_code)
print("Response body: %s" % resp.json())
except Exception as e:
print(str(e))
对于错误代码 1004 请按照以下操作获取包含培训文档的源路径,并将值传递给源密钥。
{
"source": "string",
"sourceFilter": {
"prefix": "string",
"includeSubFolders": true
}
}
替换为 Azure Blob 存储容器的共享访问签名 (SAS( URL。若要检索 SAS URL,请打开 Azure 存储资源管理器Microsoft,右键单击容器,然后选择"获取共享访问签名"。 确保选中"读取"和"列出"权限,然后单击"创建"。 然后复制 URL 部分中的值。它应该具有以下形式: https://.blob.core.windows.net/container name?SAS 值。
请使用新的表单识别器 v2.0 版本 它是一个异步 API,支持对大型数据集进行训练和分析大型文档。 https://aka.ms/form-recognizer/api 快速入门 - https://learn.microsoft.com/en-us/azure/cognitive-services/form-recognizer/quickstarts/python-train-extract
若要开始使用表单识别器,请使用此链接登录到 Azure 门户以创建表单识别器资源(对于 v2.0(预览版(,请使用美国西部 2 或西欧区域(。
尝试从前缀属性中删除字符串值。
{ "源": "字符串", "源过滤器":{ "前缀": ", "包含子文件夹":真 } }
2.0 版的 Python 快速入门代码似乎正在工作,至少我不再收到任何错误了。我现在觉得有点傻,因为我没有早点尝试过这个。从表单识别器的"快速启动"页链接的 API(Web 浏览器(控制台似乎自动假设我想使用 1.0 版,并且无法更改它(或者我刚刚监督了某些内容(。因此,我假设我被分配了一个 v1.0 试用版,因此这就是我第一次尝试 Python 快速入门时使用的。
不要在 API POST 调用的请求参数的"源"中仅使用 SAS URI,而是使用容器的完整字符串,后跟 SAS URI 令牌。
例如:
https://.blob.core.windows.net//