我正在尝试使用Azure认知服务的C#FormRecognizer SDK。我在Azure Blob中存储了pdf,我需要使用C#SDK从这些pdf文件中提取文本/表。
我看到"AnalyzeWithCustomModelAsync"方法将"Stream"作为输入参数,其中它只接受"FileStream"类型。如果我通过"MemoryStream"作为输入参数类型,我会得到以下错误:
{"value":{"error":{
有没有什么地方我可以直接使用我的blob文件,而不需要在本地保存这些文件?
谨致问候,Madhu
以下代码片段的工作原理是获取blob的一个实例(到CloudBlockBlob类中(,然后将其加载到MemoryStream中。一旦您有了它,您就可以将它传递到Form Recognizer中进行分析。
List<string> blobsToAnalyze = new List<string>();
// Get latest Form Recognizer training model ID
Guid aiTrainModelId = Guid.Empty;
ModelResult latestModel = await FormRecognizer.GetModelAsync(config, log);
if (latestModel != null)
aiTrainModelId = latestModel.ModelId;
// Iterate through all blobs
foreach (string strBlob in blobsToAnalyze)
{
CloudBlockBlob blob = blobContainer.GetBlockBlobReference(strBlob);
using (MemoryStream ms = new MemoryStream())
{
// Load blob into a MemoryStream object
await blob.DownloadToStreamAsync(ms);
// Send to Form Recognizer to analyze
AnalyzeResult results = await FormRecognizer.AnalyzeFormAsync(config, aiTrainModelId, ms, log);
searchResults = FormRecognizer.AnalyzeResults(config, tableClient, results, log);
}
}