public void Can_Interpret_FakeInvoice() { string script = @" InvoiceNumber: Text(Invoice Number) Right [Text]; InvoiceDate: Text(Invoice date) Right [Date]; DueDate: Text(Due date) Right [Date]; Receiver: 'Name': [Text] Down 'Address': [StreetAddress] Down 'PostalCode': [Number] 'Town': [Town] Down 'Country': [Country]; PaymentTerms: Text(Payment term) Right [Number]; InterestRate: Text(Interest) Right [Percentage]; OrganizationNumber: Text(Organization number) Right [Text]; Items: Table 'ItemNo': [Text(ItemNumber)] 'Description': [Text(Description)] 'Quantity': [Number(Quantity)] 'UnitPrice': [AmountOrNumber(Unit price)] 'VatPercentage': [Percentage(VAT)] 'Total': [AmountOrNumber(Total)]; TotalAmount: Text(Total amount) Right [Amount]; "; var documentLab = new DocumentInterpreter(); //var page = documentLab.GetAnalyzedPage((Bitmap)Image.FromFile("Data\\fakeinvoice.png")); //string csv = string.Empty; //for (int i = 0; i < page.Contents.GetLength(1); i++) //{ // for (int x = 0; x < page.Contents.GetLength(0); x++) // { // csv = csv + JsonConvert.SerializeObject(page.Contents[x, i]).Replace(",", ";") + ", "; // } // csv += "\n"; //} //csv = csv.Substring(0, csv.LastIndexOf(',') - 1); //File.WriteAllText("test.csv", csv); var result = documentLab.InterpretToJson((Bitmap)Image.FromFile("Data\\fakeinvoice.png"), script); Assert.IsNotNull(result, FileReader.GetFileContent("Data\\Expected.txt")); }
public void Can_Interpret_FromFile() { string script = @" Sender: Text(From:) Down 'SenderName': [Text] Down 'SenderApartment': [Text] Down 'SenderStreetAddress': [Text] Down 'SenderCity': [Text] Down 'SenderEmail': [Email]; Receiver: Text(To:) Down 'ReceiverName': [Text] Down 'ReceiverStreetAddress': [Text] Down 'ReceiverCity': [Text] Down 'ReceiverEmail': [Email]; TotalAmount: Text(Total Due) Right [Amount]; "; var documentLab = new DocumentInterpreter(); PdfDocument pdfDocument = PdfDocument.Load("Data\\SomeDemoInvoice.pdf"); var firstPageResults = documentLab.InterpretToJson(script, (Bitmap)pdfDocument.Render(0, 250, 250, PdfRenderFlags.CorrectFromDpi)); //Assert.AreEqual("DEMO - Sliced Invoices".ToLower(), firstPageResults["Sender"].GetResultByKey("SenderName").ToLower()); //Assert.AreEqual("Suite 5A-1204".ToLower(), firstPageResults["Sender"].GetResultByKey("SenderApartment").ToLower()); //Assert.AreEqual("123 Somewhere Street".ToLower(), firstPageResults["Sender"].GetResultByKey("SenderStreetAddress").ToLower()); //Assert.AreEqual("Your City AZ 12345".ToLower(), firstPageResults["Sender"].GetResultByKey("SenderCity").ToLower()); //Assert.AreEqual("*****@*****.**".ToLower(), firstPageResults["Sender"].GetResultByKey("SenderEmail").ToLower()); //Assert.AreEqual("Test Business".ToLower(), firstPageResults["Receiver"].GetResultByKey("ReceiverName").ToLower()); //Assert.AreEqual("123 Somewhere st".ToLower(), firstPageResults["Receiver"].GetResultByKey("ReceiverStreetAddress").ToLower()); //Assert.AreEqual("Melbourne, VIC 3000".ToLower(), firstPageResults["Receiver"].GetResultByKey("ReceiverCity").ToLower()); //Assert.AreEqual("*****@*****.**".ToLower(), firstPageResults["Receiver"].GetResultByKey("ReceiverEmail").ToLower()); //Assert.AreEqual("93.50", firstPageResults["TotalAmount"].GetResultAt(0)); }
public static void Main(string[] args) { if (args == null || args.Length < 2) { Console.WriteLine($"First argument needs to be a path to a picture, second argument needs to be a path to a text file containing queries. Third argument is optional, but specifies a file path to output the results to."); return; } var pictureFilePath = args[0]; var scriptFilePath = args[1]; var outputFilePath = string.Empty; if (args.Length == 3) { outputFilePath = args[2]; } if (!File.Exists(pictureFilePath)) { Console.WriteLine($"Specified picture file path does not exist"); } if (!File.Exists(scriptFilePath)) { Console.WriteLine($"Specified script file path does not exist"); } var script = File.ReadAllText(scriptFilePath); var patternInterpreter = new DocumentInterpreter(); var result = patternInterpreter.InterpretToJson(script, (Bitmap)Image.FromFile(pictureFilePath)); Console.WriteLine(result); if (!string.IsNullOrWhiteSpace(outputFilePath)) { File.WriteAllText(outputFilePath, result); } }
public DocumentController() { interpreter = new DocumentInterpreter(); }