public async Task RecognizeInvoicesOperationCreatesDiagnosticScopeOnUpdate() { using var testListener = new ClientDiagnosticListener(DiagnosticNamespace); using var stream = new MemoryStream(Encoding.UTF8.GetBytes("{}")); var mockResponse = new MockResponse(200); mockResponse.ContentStream = stream; var mockTransport = new MockTransport(new[] { mockResponse, mockResponse }); var options = new FormRecognizerClientOptions() { Transport = mockTransport }; var client = CreateFormRecognizerClient(options); var operation = new RecognizeInvoicesOperation("00000000-0000-0000-0000-000000000000", client); if (IsAsync) { await operation.UpdateStatusAsync(); } else { operation.UpdateStatus(); } testListener.AssertScope($"{nameof(RecognizeInvoicesOperation)}.{nameof(RecognizeInvoicesOperation.UpdateStatus)}"); }
public async Task RecognizeInvoicesFromFile() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; FormRecognizerClient client = new FormRecognizerClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); string invoicePath = FormRecognizerTestEnvironment.CreatePath("Invoice_1.pdf"); #region Snippet:FormRecognizerSampleRecognizeInvoicesFileStream //@@ string invoicePath = "<invoicePath>"; using var stream = new FileStream(invoicePath, FileMode.Open); var options = new RecognizeInvoicesOptions() { Locale = "en-US" }; RecognizeInvoicesOperation operation = await client.StartRecognizeInvoicesAsync(stream, options); Response <RecognizedFormCollection> operationResponse = await operation.WaitForCompletionAsync(); RecognizedFormCollection invoices = operationResponse.Value; // To see the list of the supported fields returned by service and its corresponding types, consult: // https://aka.ms/formrecognizer/invoicefields RecognizedForm invoice = invoices.Single(); if (invoice.Fields.TryGetValue("VendorName", out FormField vendorNameField)) { if (vendorNameField.Value.ValueType == FieldValueType.String) { string vendorName = vendorNameField.Value.AsString(); Console.WriteLine($"Vendor Name: '{vendorName}', with confidence {vendorNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("CustomerName", out FormField customerNameField)) { if (customerNameField.Value.ValueType == FieldValueType.String) { string customerName = customerNameField.Value.AsString(); Console.WriteLine($"Customer Name: '{customerName}', with confidence {customerNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("InvoiceTotal", out FormField invoiceTotalField)) { if (invoiceTotalField.Value.ValueType == FieldValueType.Float) { float invoiceTotal = invoiceTotalField.Value.AsFloat(); Console.WriteLine($"Invoice Total: '{invoiceTotal}', with confidence {invoiceTotalField.Confidence}"); } } #endregion }
public async Task <RecognizedForm> Analyze(Uri invoiceUri) { RecognizeInvoicesOperation operation = await GetClient().StartRecognizeInvoicesFromUriAsync(invoiceUri, OperationOptions); Response <RecognizedFormCollection> operationResponse = await operation.WaitForCompletionAsync(); RecognizedFormCollection invoices = operationResponse.Value; return(ProcessResults(invoices)); }
public async Task RecognizeInvoicesOperationCanPollFromNewObject() { var client = CreateFormRecognizerClient(out var nonInstrumentedClient); var uri = FormRecognizerTestEnvironment.CreateUri(TestFile.Blank); var operation = await client.StartRecognizeInvoicesFromUriAsync(uri); var sameOperation = new RecognizeInvoicesOperation(operation.Id, nonInstrumentedClient); await sameOperation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(sameOperation.HasValue); Assert.AreEqual(1, sameOperation.Value.Count); }
public async Task <RecognizedForm> Analyze(Stream fileStream) { var options = new RecognizeInvoicesOptions() { Locale = "en-US" }; RecognizeInvoicesOperation operation = await GetClient().StartRecognizeInvoicesAsync(fileStream, options); Response <RecognizedFormCollection> operationResponse = await operation.WaitForCompletionAsync(); RecognizedFormCollection invoices = operationResponse.Value; return(ProcessResults(invoices)); }
public async Task RecognizeInvoicesOperationCanPollFromNewObject() { // Skip instrumenting here because the internal service client passed to the operation object would be made null otherwise, // making the test fail. var client = CreateFormRecognizerClient(skipInstrumenting: true); var uri = FormRecognizerTestEnvironment.CreateUri(TestFile.Blank); var operation = await client.StartRecognizeInvoicesFromUriAsync(uri); var sameOperation = new RecognizeInvoicesOperation(operation.Id, client); await sameOperation.WaitForCompletionAsync(PollingInterval); Assert.IsTrue(sameOperation.HasValue); Assert.AreEqual(1, sameOperation.Value.Count); }
public async Task RecognizeInvoicesFromFile() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; FormRecognizerClient client = new FormRecognizerClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); #region Snippet:FormRecognizerSampleRecognizeInvoicesFileStream #if SNIPPET string invoicePath = "<invoicePath>"; #else string invoicePath = FormRecognizerTestEnvironment.CreatePath("recommended_invoice.jpg"); #endif using var stream = new FileStream(invoicePath, FileMode.Open); var options = new RecognizeInvoicesOptions() { Locale = "en-US" }; RecognizeInvoicesOperation operation = await client.StartRecognizeInvoicesAsync(stream, options); Response <RecognizedFormCollection> operationResponse = await operation.WaitForCompletionAsync(); RecognizedFormCollection invoices = operationResponse.Value; // To see the list of all the supported fields returned by service and its corresponding types, consult: // https://aka.ms/formrecognizer/invoicefields RecognizedForm invoice = invoices.Single(); if (invoice.Fields.TryGetValue("VendorName", out FormField vendorNameField)) { if (vendorNameField.Value.ValueType == FieldValueType.String) { string vendorName = vendorNameField.Value.AsString(); Console.WriteLine($"Vendor Name: '{vendorName}', with confidence {vendorNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("CustomerName", out FormField customerNameField)) { if (customerNameField.Value.ValueType == FieldValueType.String) { string customerName = customerNameField.Value.AsString(); Console.WriteLine($"Customer Name: '{customerName}', with confidence {customerNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("Items", out FormField itemsField)) { if (itemsField.Value.ValueType == FieldValueType.List) { foreach (FormField itemField in itemsField.Value.AsList()) { Console.WriteLine("Item:"); if (itemField.Value.ValueType == FieldValueType.Dictionary) { IReadOnlyDictionary <string, FormField> itemFields = itemField.Value.AsDictionary(); if (itemFields.TryGetValue("Description", out FormField itemDescriptionField)) { if (itemDescriptionField.Value.ValueType == FieldValueType.String) { string itemDescription = itemDescriptionField.Value.AsString(); Console.WriteLine($" Description: '{itemDescription}', with confidence {itemDescriptionField.Confidence}"); } } if (itemFields.TryGetValue("Quantity", out FormField itemQuantityField)) { if (itemQuantityField.Value.ValueType == FieldValueType.Float) { float quantityAmount = itemQuantityField.Value.AsFloat(); Console.WriteLine($" Quantity: '{quantityAmount}', with confidence {itemQuantityField.Confidence}"); } } if (itemFields.TryGetValue("UnitPrice", out FormField itemUnitPriceField)) { if (itemUnitPriceField.Value.ValueType == FieldValueType.Float) { float itemUnitPrice = itemUnitPriceField.Value.AsFloat(); Console.WriteLine($" UnitPrice: '{itemUnitPrice}', with confidence {itemUnitPriceField.Confidence}"); } } if (itemFields.TryGetValue("Tax", out FormField itemTaxPriceField)) { if (itemTaxPriceField.Value.ValueType == FieldValueType.Float) { try { float itemTax = itemTaxPriceField.Value.AsFloat(); Console.WriteLine($" Tax: '{itemTax}', with confidence {itemTaxPriceField.Confidence}"); } catch { string itemTaxText = itemTaxPriceField.ValueData.Text; Console.WriteLine($" Tax: '{itemTaxText}', with confidence {itemTaxPriceField.Confidence}"); } } } if (itemFields.TryGetValue("Amount", out FormField itemAmountField)) { if (itemAmountField.Value.ValueType == FieldValueType.Float) { float itemAmount = itemAmountField.Value.AsFloat(); Console.WriteLine($" Amount: '{itemAmount}', with confidence {itemAmountField.Confidence}"); } } } } } } if (invoice.Fields.TryGetValue("SubTotal", out FormField subTotalField)) { if (subTotalField.Value.ValueType == FieldValueType.Float) { float subTotal = subTotalField.Value.AsFloat(); Console.WriteLine($"Sub Total: '{subTotal}', with confidence {subTotalField.Confidence}"); } } if (invoice.Fields.TryGetValue("TotalTax", out FormField totalTaxField)) { if (totalTaxField.Value.ValueType == FieldValueType.Float) { float totalTax = totalTaxField.Value.AsFloat(); Console.WriteLine($"Total Tax: '{totalTax}', with confidence {totalTaxField.Confidence}"); } } if (invoice.Fields.TryGetValue("InvoiceTotal", out FormField invoiceTotalField)) { if (invoiceTotalField.Value.ValueType == FieldValueType.Float) { float invoiceTotal = invoiceTotalField.Value.AsFloat(); Console.WriteLine($"Invoice Total: '{invoiceTotal}', with confidence {invoiceTotalField.Confidence}"); } } #endregion }
public async Task RecognizeInvoicesFromUri() { string endpoint = TestEnvironment.Endpoint; string apiKey = TestEnvironment.ApiKey; FormRecognizerClient client = new FormRecognizerClient(new Uri(endpoint), new AzureKeyCredential(apiKey)); Uri invoiceUri = FormRecognizerTestEnvironment.CreateUri("Invoice_1.pdf"); #region Snippet:FormRecognizerSampleRecognizeInvoicesUri //@@ Uri invoiceUri = <invoiceUri>; var options = new RecognizeInvoicesOptions() { Locale = "en-US" }; RecognizeInvoicesOperation operation = await client.StartRecognizeInvoicesFromUriAsync(invoiceUri, options); Response <RecognizedFormCollection> operationResponse = await operation.WaitForCompletionAsync(); RecognizedFormCollection invoices = operationResponse.Value; // To see the list of the supported fields returned by service and its corresponding types, consult: // https://aka.ms/formrecognizer/invoicefields RecognizedForm invoice = invoices.Single(); if (invoice.Fields.TryGetValue("InvoiceId", out FormField invoiceIdField)) { if (invoiceIdField.Value.ValueType == FieldValueType.String) { string invoiceId = invoiceIdField.Value.AsString(); Console.WriteLine($"Invoice Id: '{invoiceId}', with confidence {invoiceIdField.Confidence}"); } } if (invoice.Fields.TryGetValue("InvoiceDate", out FormField invoiceDateField)) { if (invoiceDateField.Value.ValueType == FieldValueType.Date) { DateTime invoiceDate = invoiceDateField.Value.AsDate(); Console.WriteLine($"Invoice Date: '{invoiceDate}', with confidence {invoiceDateField.Confidence}"); } } if (invoice.Fields.TryGetValue("DueDate", out FormField dueDateField)) { if (dueDateField.Value.ValueType == FieldValueType.Date) { DateTime dueDate = dueDateField.Value.AsDate(); Console.WriteLine($"Due Date: '{dueDate}', with confidence {dueDateField.Confidence}"); } } if (invoice.Fields.TryGetValue("VendorName", out FormField vendorNameField)) { if (vendorNameField.Value.ValueType == FieldValueType.String) { string vendorName = vendorNameField.Value.AsString(); Console.WriteLine($"Vendor Name: '{vendorName}', with confidence {vendorNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("VendorAddress", out FormField vendorAddressField)) { if (vendorAddressField.Value.ValueType == FieldValueType.String) { string vendorAddress = vendorAddressField.Value.AsString(); Console.WriteLine($"Vendor Address: '{vendorAddress}', with confidence {vendorAddressField.Confidence}"); } } if (invoice.Fields.TryGetValue("CustomerName", out FormField customerNameField)) { if (customerNameField.Value.ValueType == FieldValueType.String) { string customerName = customerNameField.Value.AsString(); Console.WriteLine($"Customer Name: '{customerName}', with confidence {customerNameField.Confidence}"); } } if (invoice.Fields.TryGetValue("CustomerAddress", out FormField customerAddressField)) { if (customerAddressField.Value.ValueType == FieldValueType.String) { string customerAddress = customerAddressField.Value.AsString(); Console.WriteLine($"Customer Address: '{customerAddress}', with confidence {customerAddressField.Confidence}"); } } if (invoice.Fields.TryGetValue("CustomerAddressRecipient", out FormField customerAddressRecipientField)) { if (customerAddressRecipientField.Value.ValueType == FieldValueType.String) { string customerAddressRecipient = customerAddressRecipientField.Value.AsString(); Console.WriteLine($"Customer address recipient: '{customerAddressRecipient}', with confidence {customerAddressRecipientField.Confidence}"); } } if (invoice.Fields.TryGetValue("InvoiceTotal", out FormField invoiceTotalField)) { if (invoiceTotalField.Value.ValueType == FieldValueType.Float) { float invoiceTotal = invoiceTotalField.Value.AsFloat(); Console.WriteLine($"Invoice Total: '{invoiceTotal}', with confidence {invoiceTotalField.Confidence}"); } } }