Azure 表单识别器仅分析流中的第一个文件

Azure Form Recognizer only analyzes the first file in a stream

我正在测试一些 AI 文档分析的东西,目前正在尝试允许用户将文件上传到 WebApp,然后将它们发送到 Azure Form Recognizer 并处理结果。

但是我无法在单个请求中这样做。

这是文件的表示方式:

[BindProperty] public List<IFormFile> Upload { get; set; }

我可以迭代这些并获得预期的结果,但这会使操作花费很长时间。我只想在一个请求中发送所有文件(如下所示),但它只会分析第一个文件。我正在使用 Azure.AI.FormRecognizer.DocumentAnalysis,因此客户端和 StartAnalyzeDocument 方法来自那里。

        using (var stream = new MemoryStream())
        {
            foreach (IFormFile formFile in Upload)
            {
                formFile.CopyTo(stream);
            }
            stream.Seek(0, SeekOrigin.Begin);
            AnalyzeDocumentOperation operation = client.StartAnalyzeDocument(modelId, stream);
            operation.WaitForCompletion();
            Console.WriteLine("This many documents were analysed: " + operation.Value.Documents.Count);
            result = operation.Value;
        };

“结果”是我稍后处理的。我对此感到很困惑,因为我希望附加的流能够正常工作。如果有人有解决方案或可以指出正确的方向,将不胜感激。

表单识别器尚不支持在 prebuilt-invoice 和自定义模型的单个分析操作中处理多个文档。此外,大多数文件格式不能只是附加在一起来连接内容。

加快批量分析多个文件的一种方法是并行调用分析操作。这是草图。

var results = Upload.AsParallel().ForAll(formFile => 
{
    using (var stream = formFile.OpenReadStream())
    {
        var operation = client.StartAnalyzeDocument(modelId, stream);
        operation.WaitForCompletion();
        return operation.Value;
    }
}).ToArray();