如何在 Azure 认知搜索中按页面索引 blob 文档?

How to page-wise index a blob document in Azure Cognitive Search?

我是 Azure 搜索的新手。我正在使用 this method 索引一些 pdf 文档 但是,我想按页面获取搜索结果。它目前提供整个文档的结果,但我希望从每个页面显示结果,而不是那个,我还需要具有最高分数的特定文件名和页码。

正如您所注意到的,默认情况下,文档破解会将所有文本推送到一个字段(内容)中。如果您涉及 OCR 技能(假设您的 PDF 中有包含文本的图像),它在 merged_content 中默认执行相同的操作。我不相信有一种方法可以强制这两个任务将您的数据分成几页。

我说 "believe" 是因为很难找到关于输入到您的技能集中的文档对象的形状的文档。例如,查看此合并技能集的输入。它使用 /document/content 和其他文档相关数据并将其全部推送到一个名为 merged_content 的字段中。如果您能在文档中找到所有字段的文档,它可能会分解您的页面。

{
  "@odata.type": "#Microsoft.Skills.Text.MergeSkill",
  "name": "#BookMergeSkill",
  "description": "Some description",
  "context": "/document",
  "insertPreTag": " ",
  "insertPostTag": " ",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    },
    {
      "name": "itemsToInsert",
      "source": "/document/normalized_images/*/text"
    },
    {
      "name": "offsets",
      "source": "/document/normalized_images/*/contentOffset"
    }
  ],
  "outputs": [
    {
      "name": "mergedText",
      "targetName": "merged_content"
    }
  ]
},

我知道解决这个问题的唯一方法是使用 custom skill,它将驻留在 Azure 函数中并作为文档技能集管道的一部分被调用。在该 Azure 函数中,您必须使用 PDF reader,如 iText7,并自行破解文档和 return 您将作为文本数组或自定义对象放置在索引文档中的数据.

我们打算与客户一起进行自定义破解过程(不是这样做而是出于其他原因),但由于在索引中保存大量数据的成本,该项目被取消了。