Free Trial
Web API version
Licensing
Request A Quote
HAVE QUESTIONS OR NEED HELP? SUBMIT THE SUPPORT REQUEST FORM or write email to SUPPORT@BYTESCOUT.COM
Parse with OCR | C#
Program.cs:
C#
using System; using ByteScout.DocumentParser; // This example demonstrates parsing of scanned documents // using the Optical Character Recognition (OCR). namespace GeneralExample { class Program { static void Main(string[] args) { string template = @".\DigitalOcean.yml"; string inputDocument = @".\DigitalOcean-scanned.jpg"; // Create and activate DocumentParser instance using (DocumentParser documentParser = new DocumentParser("demo", "demo")) { // Enable Optical Character Recognition (OCR) in Auto mode // (DocumentParser automatically detects if OCR is required). documentParser.OCRMode = OCRMode.Auto; // Set PDF document rendering resolution documentParser.OCRResolution = 300; // Set the location of OCR language data files documentParser.OCRLanguageDataFolder = @"c:\Program Files\ByteScout Document Parser SDK\ocrdata"; // Set OCR language // "eng" for english, "deu" for German, "fra" for French, etc. - according to files in "ocrdata" folder documentParser.OCRLanguage = "eng"; // Find more language files at https://github.com/bytescout/ocrdata // Note: The OCRLanguage can be overridden in a template. // See the Template Creation Guide. // You can also apply various preprocessing filters // to improve the recognition on low-quality scans. // Automatically deskew skewed scans //documentParser.OCRImagePreprocessingFilters.AddDeskew(); // Remove vertical or horizontal lines (sometimes helps to avoid OCR engine's page segmentation errors) //documentParser.OCRImagePreprocessingFilters.AddVerticalLinesRemover(); //documentParser.OCRImagePreprocessingFilters.AddHorizontalLinesRemover(); // Repair broken letters //documentParser.OCRImagePreprocessingFilters.AddDilate(); // Remove noise //documentParser.OCRImagePreprocessingFilters.AddMedian(); // Apply Gamma Correction //documentParser.OCRImagePreprocessingFilters.AddGammaCorrection(1.4); // Add Contrast //documentParser.OCRImagePreprocessingFilters.AddContrast(20); // Load template documentParser.AddTemplate(template); Console.WriteLine("Template loaded."); Console.WriteLine(); Console.WriteLine($"Parsing \"{inputDocument}\" with OCR..."); Console.WriteLine(); // Parse document data to JSON format string jsonString = documentParser.ParseDocument(inputDocument, OutputFormat.JSON); // Display parsed data in console Console.WriteLine("Parsed data in JSON format:"); Console.WriteLine(); Console.WriteLine(jsonString); } Console.WriteLine(); Console.WriteLine("Press any key to continue..."); Console.ReadLine(); } } }
DigitalOcean.yml:
templateName: DigitalOcean Invoice templateVersion: 4 templatePriority: 0 detectionRules: keywords: - DigitalOcean - 101 Avenue of the Americas - Invoice Number objects: - name: companyName objectType: field fieldProperties: fieldType: static expression: DigitalOcean regex: true - name: invoiceId objectType: field fieldProperties: fieldType: macros expression: 'Invoice Number: ({{Digits}})' regex: true - name: dateIssued objectType: field fieldProperties: fieldType: macros expression: 'Date Issued: ({{SmartDate}})' regex: true dataType: date dateFormat: auto-mdy - name: total objectType: field fieldProperties: fieldType: macros expression: 'Total: ({{Money}})' regex: true dataType: decimal - name: currency objectType: field fieldProperties: fieldType: static expression: USD regex: true - name: table1 objectType: table tableProperties: start: expression: Description{{Spaces}}Hours regex: true end: expression: 'Total:' regex: true row: expression: '{{LineStart}}{{Spaces}}(?<description>{{SentenceWithSingleSpaces}}){{Spaces}}(?<hours>{{Digits}}){{Spaces}}(?<start>{{2Digits}}{{Minus}}{{2Digits}}{{Space}}{{2Digits}}{{Colon}}{{2Digits}}){{Spaces}}(?<end>{{2Digits}}{{Minus}}{{2Digits}}{{Space}}{{2Digits}}{{Colon}}{{2Digits}}){{Spaces}}{{Dollar}}(?<unitPrice>{{Number}})' regex: true columns: - name: hours dataType: integer - name: unitPrice dataType: decimal