【问题标题】:v2 to v3 Transition for Form Recognizer表单识别器的 v2 到 v3 转换
【发布时间】:2021-11-29 20:03:33
【问题描述】:

因为 FR v3.0 仍然是预览模式,所以我去了 v2.1 Quickstarts,“Analyze using a Prebuilt model”,导航到 @987654322 @。 使用 Form Type = "Invoice" 测试了很多大小和文字,包括手写,结果很满意,尤其是返回的 JSON 文件结构:

...
"analyzeResult":
  {
    ...
    readResults:[...],
    pageResults:[...]
    ...
  }

对于大/复杂的图像/文档,使用基于rowIndexcolumnIndexpageResults.tables[0].cells,我可以轻松地将每一行文本拼凑成整个文档。对于小/简单的图像/文档或pageResults.tables.length==0,使用readResults.lines 实现相同的 OCR 结果,如一刀切,完美!

接下来是我自己动手操作的相同图像,示例JavaScript。因为我一直只使用 Invoice,所以我选择了 identifyInvoice.js,很好的示例,简单易懂。即使它是 v3 并且缺少 readResultspageResutls,我仍然可以使用 invoice.pages[0].tables[0].cells 为大型/复杂图像/文档实现相同的结果。对于小/简单的图像发现 2 个问题:

  1. invoice.pages[0].tables.length = 0,所以没有文本值。
  2. 只有文本值是NRT LLC.invoice.fields.VendorName.value,其他所有v2.1 返回的打印文本和手写都没有了!

我相信上述变化在MS方面一定有一些原因,对我们来说这意味着v3不向后兼容。更重要的是,我们无法知道图像是否适合模型和/或在提交之前是否会返回某些内容,即使我们提供了模型选择列表,用户可能会因额外的手动工作而感到沮丧。目前我们所能做的就是切换回谷歌。所以,

  • v2.x 示例代码在哪里,MS 何时停止使用 v2.x?
  • v2.x 如何过渡到 v3?

下面是我的导航路线。谢谢您,非常感谢您的出色工作!

【问题讨论】:

    标签: form-recognizer


    【解决方案1】:

    这有点令人困惑,但 NPM 上的 @azure/ai-form-recognizer 包的版本是表单识别器 API 版本之前的一个主要版本。预览 API 版本“2021-09-30-preview”(REST API “v3”)可以与表单识别器 SDK 版本 4.0.0-beta.2 一起使用。 REST API 版本 v2.1 (GA) 与 SDK 版本 3.2.0 一起使用。在README for @azure/ai-form-recognizer 3.2.0 上,它解释了这一点:

    注意:此包面向 Azure 表单识别器服务 API 版本 2.x。

    根据您所说的,我猜测您使用的是 SDK 的最新稳定版本 3.2.0。在此版本中使用预构建或自定义模型提取数据时,tables 附加到 pagespages 附加到表单,因此您可以通过查看表单来访问表格:

    const poller = await client.beginRecognizeInvoices(inputs);
    const invoices = await poller.pollUntilDone();
    
    const table = invoices[0].pages[0].tables[0];
    

    如果表格出现在未与任何表单关联的页面上(该页面上未出现任何表单),则无法使用此方法访问它。该功能在新的预览版 API 的新 beta SDK 中提供,但在当前 SDK 中要获取所有页面(无论它们是否包含表单),您可以考虑使用 beginRecognizeContent 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2021-09-22
      • 2013-12-18
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多