Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Mindee/Parsing/Common/AmountField.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class AmountField : BaseField
/// </summary>
public override string ToString()
{
return Value?.ToString("0.00");
return Value?.ToString(".00###");
}
}
}
26 changes: 25 additions & 1 deletion src/Mindee/Parsing/Common/Locale.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ namespace Mindee.Parsing.Common
/// </summary>
public class Locale
{
private string _language;

/// <summary>
/// The confidence about the zone of the value extracted.
/// A value from 0 to 1.
Expand All @@ -28,7 +30,18 @@ public class Locale
/// </summary>
/// <example>fr</example>
[JsonPropertyName("language")]
public string Language { get; set; }
public string Language
{
get
{
return _language;
}
set
{
_language = value;
Value = value;
}
}

/// <summary>
/// The country which has been detected.
Expand All @@ -37,6 +50,13 @@ public class Locale
[JsonPropertyName("country")]
public string Country { get; set; }

/// <summary>
/// Concatenation of lang and country codes.
/// </summary>
/// <example>en-GB</example>
[JsonPropertyName("value")]
public string Value { get; set; }

/// <summary>
///
/// </summary>
Expand All @@ -45,6 +65,10 @@ public override string ToString()
{
StringBuilder result = new StringBuilder();

if (!string.IsNullOrWhiteSpace(Value))
{
result.Append($"{Value}; ");
}
if (!string.IsNullOrWhiteSpace(Language))
{
result.Append($"{Language}; ");
Expand Down
14 changes: 14 additions & 0 deletions src/Mindee/Parsing/Common/SummaryHelper.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using System.Text.RegularExpressions;

namespace Mindee.Parsing.Common
{
internal static class SummaryHelper
{
public static string Clean(string summary)
{
Regex cleanSpace = new Regex(" \n", RegexOptions.Multiline);

return cleanSpace.Replace(summary, "\n");
}
}
}
2 changes: 1 addition & 1 deletion src/Mindee/Parsing/Common/Tax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public override string ToString()

if (Rate != null)
{
result.Append($" {Rate}%");
result.Append($" {Rate?.ToString("0.00")}%");
}

if (Code != null)
Expand Down
4 changes: 1 addition & 3 deletions src/Mindee/Parsing/Cropper/CropperV1Prediction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ public override string ToString()
result.Append($"Cropping: {string.Join("\n ", Cropping?.Select(c => c))}\n");
result.Append("------------------------\n");

Regex cleanSpace = new Regex(" \n", RegexOptions.Multiline);

return cleanSpace.Replace(result.ToString(), "\n");
return SummaryHelper.Clean(result.ToString());
}
}
}
13 changes: 6 additions & 7 deletions src/Mindee/Parsing/Invoice/InvoiceLineItem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System.Collections.Generic;
using System.Text;
using System.Text.Json.Serialization;
using Mindee.Parsing.Common;

Expand Down Expand Up @@ -77,11 +76,11 @@ public sealed class InvoiceLineItem : FinancialPredictionBase
public override string ToString()
{
string productCode = ProductCode?.ToString() ?? "";
string quantity = Quantity?.ToString() ?? "";
string unitPrice = UnitPrice?.ToString() ?? "";
string totalAmount = TotalAmount?.ToString() ?? "";
string tax = TotalAmount?.ToString() ?? "";
tax += TaxRate != null ? $" ({TaxRate} %)" : "";
string quantity = Quantity?.ToString(".00###") ?? "";
string unitPrice = UnitPrice?.ToString(".00###") ?? "";
string totalAmount = TotalAmount?.ToString(".00###") ?? "";
string tax = TaxAmount?.ToString(".00###") ?? "";
tax += TaxRate != null ? $" ({TaxRate?.ToString(".00")}%)" : "";
string description = Description ?? "";
if (description.Length > 32)
{
Expand All @@ -93,7 +92,7 @@ public override string ToString()
quantity.PadRight(6),
unitPrice.PadRight(7),
totalAmount.PadRight(8),
tax.PadRight(14),
tax.PadRight(16),
description
);
}
Expand Down
6 changes: 3 additions & 3 deletions src/Mindee/Parsing/Invoice/InvoiceV3Prediction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,15 @@ public override string ToString()
result.Append($"Customer name: {Customer.Value}\n");
result.Append($"Customer company registration: {string.Join("; ", CustomerCompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Customer address: {string.Join("; ", CustomerAddress.Value)}\n");
result.Append($"Payment details: {string.Join("\n ", PaymentDetails.Select(p => p))}\n");
result.Append($"Company numbers: {string.Join("\n ", CompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Payment details: {string.Join("; ", PaymentDetails.Select(p => p))}\n");
result.Append($"Company numbers: {string.Join("; ", CompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Taxes: {string.Join("\n ", Taxes.Select(t => t))}\n");
result.Append($"Total taxes: {TotalTaxes}\n");
result.Append($"Locale: {Locale}\n");

result.Append("----------------------\n");

return result.ToString();
return SummaryHelper.Clean(result.ToString());
}
}
}
18 changes: 9 additions & 9 deletions src/Mindee/Parsing/Invoice/InvoiceV4Prediction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,30 +98,30 @@ public override string ToString()
if (LineItems.Any())
{
lineItems =
"\n Code | QTY | Price | Amount | Tax (Rate) | Description\n ";
"\n Code | QTY | Price | Amount | Tax (Rate) | Description\n ";
lineItems += string.Join("\n ", LineItems.Select(item => item.ToString()));
}

StringBuilder result = new StringBuilder("----- Invoice v4 -----\n");
result.Append($"Invoice number: {InvoiceNumber.Value}\n");
StringBuilder result = new StringBuilder("----- Invoice V4 -----\n");
result.Append($"Locale: {Locale}\n");
result.Append($"Invoice number: {InvoiceNumber.Value}\n");
result.Append($"Invoice date: {Date.Value}\n");
result.Append($"Invoice due date: {DueDate.Value}\n");
result.Append($"Supplier name: {SupplierName.Value}\n");
result.Append($"Supplier address: {SupplierAddress.Value}\n");
result.Append($"Supplier company registrations: {string.Join("\n ", SupplierCompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Supplier payment details: {string.Join("\n ", SupplierPaymentDetails.Select(p => p))}\n");
result.Append($"Supplier company registrations: {string.Join("; ", SupplierCompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Supplier payment details: {string.Join("; ", SupplierPaymentDetails.Select(p => p))}\n");
result.Append($"Customer name: {CustomerName.Value}\n");
result.Append($"Customer company registrations: {string.Join("; ", CustomerCompanyRegistrations.Select(c => c.Value))}\n");
result.Append($"Customer address: {string.Join("; ", CustomerAddress.Value)}\n");
result.Append($"Line Items: {lineItems}\n");
result.Append($"Taxes: {string.Join("\n ", Taxes.Select(t => t))}\n");
result.Append($"Line items: {lineItems}\n");
result.Append($"Total taxes: {TotalTaxes}\n");
result.Append($"Total amount including taxes: {TotalAmount.Value}\n");
result.Append($"Total amount excluding taxes: {TotalNet.Value}\n");
result.Append("----------------------");
result.Append($"Total amount including taxes: {TotalAmount.Value}\n");
result.Append("----------------------\n");

return result.ToString();
return SummaryHelper.Clean(result.ToString());
}
}
}
12 changes: 6 additions & 6 deletions src/Mindee/Parsing/Receipt/ReceiptV4Prediction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,21 +58,21 @@ public sealed class ReceiptV4Prediction : FinancialPredictionBase
/// </summary>
public override string ToString()
{
StringBuilder result = new StringBuilder("-----Receipt data-----\n");
result.Append($"Total amount including taxes: {TotalAmount}\n");
result.Append($"Total amount excluding taxes: {TotalNet}\n");
StringBuilder result = new StringBuilder("----- Receipt V4 -----\n");
result.Append($"Total amount: {TotalAmount}\n");
result.Append($"Total net: {TotalNet}\n");
result.Append($"Tip: {Tip}\n");
result.Append($"Date: {Date.Value}\n");
result.Append($"Category: {Category.Value}\n");
result.Append($"Time: {Time.Value}\n");
result.Append($"Merchant name: {Supplier.Value}\n");
result.Append($"Supplier name: {Supplier.Value}\n");
result.Append($"Taxes: {string.Join("\n ", Taxes.Select(t => t))}\n");
result.Append($"Total taxes: {TotalTax}\n");
result.Append($"Locale: {Locale}\n");

result.Append("----------------------");
result.Append("----------------------\n");

return result.ToString();
return SummaryHelper.Clean(result.ToString());
}
}
}
32 changes: 32 additions & 0 deletions tests/Mindee.UnitTests/Parsing/Invoice/InvoiceV3Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,38 @@ namespace Mindee.UnitTests.Parsing.Invoice
[Trait("Category", "Invoice V3")]
public class InvoiceV3Test
{
[Fact]
public async Task Predict_CheckSummary()
{
var mindeeAPi = GetMindeeApiForInvoice();
var prediction = await mindeeAPi.PredictAsync<InvoiceV3Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/invoice/response_v3/doc_to_string.txt");

var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Prediction.ToString());
}

[Fact]
public async Task Predict_CheckSummary_WithMultiplePages()
{
var mindeeAPi = GetMindeeApiForInvoice();
var prediction = await mindeeAPi.PredictAsync<InvoiceV3Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/invoice/response_v3/page0_to_string.txt");

var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Pages.First().Prediction.ToString());
}

[Fact]
public async Task Predict_MustSuccessForCustomer()
{
Expand Down
32 changes: 32 additions & 0 deletions tests/Mindee.UnitTests/Parsing/Invoice/InvoiceV4Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,38 @@ namespace Mindee.UnitTests.Parsing.Invoice
[Trait("Category", "Invoice V4")]
public class InvoiceV4Test
{
[Fact]
public async Task Predict_CheckSummary()
{
var mindeeAPi = GetMindeeApiForInvoice();
var prediction = await mindeeAPi.PredictAsync<InvoiceV4Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/invoice/response_v4/doc_to_string.txt");

var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Prediction.ToString());
}

[Fact]
public async Task Predict_CheckSummary_WithMultiplePages()
{
var mindeeAPi = GetMindeeApiForInvoice();
var prediction = await mindeeAPi.PredictAsync<InvoiceV4Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/invoice/response_v4/page0_to_string.txt");

var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Pages.First().Prediction.ToString());
}

[Fact]
public async Task Predict_MustSuccessForInvoiceNumber()
{
Expand Down
27 changes: 24 additions & 3 deletions tests/Mindee.UnitTests/Parsing/Receipt/ReceiptV4Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,36 @@ namespace Mindee.UnitTests.Parsing.Receipt
[Trait("Category", "Receipt V4")]
public class ReceiptV4Test
{
[Fact(Skip = "Waiting for the summary format update.")]
public async Task Predict_MustSuccess()
[Fact]
public async Task Predict_CheckSummary()
{
var mindeeAPi = GetMindeeApiForReceipt();
var prediction = await mindeeAPi.PredictAsync<ReceiptV4Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/receipt/response_v4/doc_to_string.txt");

Assert.Equal(expected, prediction.ToString());
var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Prediction.ToString());
}

[Fact]
public async Task Predict_CheckSummary_WithMultiplePages()
{
var mindeeAPi = GetMindeeApiForReceipt();
var prediction = await mindeeAPi.PredictAsync<ReceiptV4Prediction>(ParsingTestBase.GetFakePredictParameter());

var expected = File.ReadAllText("Resources/receipt/response_v4/page0_to_string.txt");

var indexFilename = expected.IndexOf("Filename");
var indexEOL = expected.IndexOf("\n", indexFilename);

Assert.Equal(
expected.Remove(indexFilename, indexEOL - indexFilename + 1),
prediction.Inference.Pages.First().Prediction.ToString());
}

[Fact]
Expand Down