Forms Recognizer预览-无法加载示例文档

时间:2019-05-30 08:15:15

标签: microsoft-cognitive

我正在尝试使用Forms Recognizer预览,经过反复尝试,终于有了可以通过SAS URL读取的文档。但是,即使使用快速入门[1]中提供的示例文档,我也会得到以下响应:

{
    "modelId": "d7ba79e3-38bc-4913-bb11-82656cb08adc",
    "trainingDocuments": [
        {
            "documentName": "Invoice_1.pdf",
            "pages": 1,
            "errors": [
                "Page 1: Document is either invalid or exceeds the page/size limits."
            ],
            "status": "failure"
        },
        {
            "documentName": "Invoice_2.pdf",
            "pages": 1,
            "errors": [
                "Page 1: Document is either invalid or exceeds the page/size limits."
            ],
            "status": "failure"
        },
        {
            "documentName": "Invoice_3.pdf",
            "pages": 1,
            "errors": [
                "Page 1: Document is either invalid or exceeds the page/size limits."
            ],
            "status": "failure"
        },
        {
            "documentName": "Invoice_4.pdf",
            "pages": 1,
            "errors": [
                "Page 1: Document is either invalid or exceeds the page/size limits."
            ],
            "status": "failure"
        },
        {
            "documentName": "Invoice_5.pdf",
            "pages": 1,
            "errors": [
                "Page 1: Document is either invalid or exceeds the page/size limits."
            ],
            "status": "failure"
        }
    ],
    "errors": [
        {
            "errorMessage": "Unable to fit model. No documents clustered."
        }
    ]
}

在BLOB存储方面是否需要进行一些特殊处理才能使这些文档可用?

我甚至在我们自己的基本形式上也收到了此错误消息,这些形式非常适合大小限制。

更新: 我认为这归因于我如何生成SAS URL(根本不清楚其文档)的问题。我有一个存储帐户(SA),带有一个容器(C),其中包含该容器中的所有PDF文件。

在Azure门户中,我选择了SA刀片,然后选择“共享访问签名”,并采用所有默认选择,然后选择生成SAS和连接字符串。我尝试直接采用 Blob服务SAS URL 值并将其传递到source字段中,但这会导致错误:

{
    "error": {
        "code": "2024",
        "innerError": {
            "requestId": "77e73ba0-cbfe-4046-9730-beff8ec38be5"
        },
        "message": "Unable to list blobs on the Azure Blob storage account."
    }
}

我必须将&comp=list&restype=container添加到source,然后正确列出了文件,但存在上述错误。显然,除了Azure Potral生成的内容之外,还需要向SAS URL添加一些内容,而我添加的内容只是其中的一部分。

我很想能够在REST负载中发送文档内容本身来训练模型。 :-(

[1]-https://github.com/Azure-Samples/cognitive-services-REST-api-samples/blob/master/curl/form-recognizer/sample_data.zip

4 个答案:

答案 0 :(得分:3)

我能够通过将blob中容器的名称添加到生成的SAS URL来解决此问题。例如:“ yourblobname.blob.core.windows.net/您的容器名称/其他ss网址”。

答案 1 :(得分:3)

我也遇到了这个问题,因为我发现快速入门文档不是很清楚-公平地讲,对Microsoft来说,部分原因是我对在Azure中生成SAS URL缺乏经验,并且它已经得到了很大的改进因为@iamsop向他们提出了GitHub问题。

我做了以下笔记,描述了我是如何工作的。希望他们将来能帮助其他人:

  1. 需要一个blob存储容器来转储培训文档 在(转到“存储帐户” /“ {帐户名称}” /“ Blob” /“ +容器” (为其命名,将“公共访问权限级别”保留为“私人(否 匿名访问)”
  2. 点击进入容器并上传培训 文档-全部位于根文件夹中,没有子文件夹(可以有一个 上载说完成之前,请延迟 实际上显示在容器中)
  3. 创建共享访问 Blob容器的签名(SAS)-从存储再次开始 帐户/ {帐户名称},然后不要进入Blob,进入共享 访问签名-允许的权限仅需要读取和 列表,单击“生成SAS和连接字符串”,然后复制“ Blob 服务SAS URL”
  4. 将此URL粘贴到记事本(或其他内容)中,然后 在查询字符串之前插入容器的名称
  5. 现在您可以 使用诸如
  6. 的命令

curl -X POST“ {endpoint} /formrecognizer/v1.0-preview/custom/train” -H“ Content-Type:application / json” -H“ Ocp-Apim-Subscription-Key:{订阅密钥} “ --data-ascii” {'source':'{SAS url}'}“

  • 用提供的API端点替换“ {endpoint}”(看起来像https://region.api.cognitive.microsoft.com
  • 将{subscription key}替换为可通过Form Reognizer资源概述标签使用的密钥
  • 将{SAS url}替换为上面生成的SAS URL,该调整后的版本包括容器名称

(注意:我个人对上述命令的偏爱是在“ data-ascii”值内使用单引号而不是双引号,因为这样您就不必转义它们,从而使该命令更易于阅读并写)

答案 2 :(得分:1)

您如何致电服务?使用cURL命令?另外,请确保您的PDF文件直接位于获得共享访问签名的Azure Blob容器中(没有子文件夹)。下面的cURL命令对我有用:

curl -X POST“ https:// 端点 /formrecognizer/v1.0-preview/custom/train” -H“内容类型:application / json” -H“ Ocp-Apim -Subscription-Key: Subscription Key ” --data-ascii“ {\” source \“:\” SAS URL \“}”

最后,请确保您可以打开PDF文件(即,检查它们是否无效)。

答案 3 :(得分:0)

您好,我想问一个问题,如何标记呢? 索尼娅

PYTHON的示例代码中涉及URI以便分析URI文本的地方有些错误

https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/quickstarts/python-train-extract