Exemple #1
0
        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"));
        }
Exemple #2
0
        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));
        }
Exemple #3
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();
 }