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();
我正在测试一些 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();