首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未从表单识别器预置发票模型中获取行项目

未从表单识别器预置发票模型中获取行项目
EN

Stack Overflow用户
提问于 2021-03-22 23:33:17
回答 1查看 106关注 0票数 0

我已经使用这里的代码为预构建的发票模型https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/quickstarts/client-library?tabs=preview%2Cv2-1&pivots=programming-language-csharp#analyze-invoices提取了发票字段

但是,没有关于如何提取发票行项目的文档。我在这里看到这个功能是最近推出的,在2021年3月https://docs.microsoft.com/en-us/azure/cognitive-services/form-recognizer/whats-new

谁能指导我如何使用预建模型获得发票行项目?

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 03:21:46

请将Form Recognizer SDK NuGet更新到v3.1.0-beta.4版本以查看发票行项目。调用SDK并获取行项目详细信息的示例代码如下:

代码语言:javascript
复制
            FormRecognizerClient client = new FormRecognizerClient(new Uri(YOUR_FR_URL), new Azure.AzureKeyCredential(YOUR_FR_KEY));

            using (FileStream stream = new FileStream(@"SampleInvoice.pdf", FileMode.Open))
            {
                RecognizeInvoicesOptions options = new RecognizeInvoicesOptions() { IncludeFieldElements = true };
                var oper = await client.StartRecognizeInvoices(stream, options).WaitForCompletionAsync();
                var rawResponse = oper.GetRawResponse();
                rawResponse.ContentStream.Position = 0;
                using (var reader = new StreamReader(oper.GetRawResponse().ContentStream))
                {
                    Console.WriteLine($"Raw output:");
                    Console.WriteLine(reader.ReadToEnd());
                }

                foreach (var invoice in oper.Value)
                {
                    foreach (FormField field in invoice.Fields.Values)
                    {
                        Console.WriteLine($"Field {field.Name}: ");
                        Console.WriteLine($"    Value: {field.ValueData?.Text}");

                        if (field.Name == "Items")
                        {
                            var count = 0;
                            foreach (var lineField in field.Value.AsList())
                            {
                                count++;
                                Console.WriteLine($"     LineItem {count}: ");
                                foreach (var (lineFieldName, lineFieldValue) in lineField.Value.AsDictionary())
                                {
                                    Console.WriteLine($"        LineField: {lineFieldName}");
                                    Console.WriteLine($"            Value: {lineFieldValue.ValueData?.Text}");
                                }
                            }
                        }
                    }
                }
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66749196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档