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
Create Custom Template | C#
Program.cs:
C#
using System; using ByteScout.DocumentParser; // This example demonstrates data parsing from an invoice using the custom template. namespace CustomTemplate { class Program { static void Main(string[] args) { string customTemplate = @".\SampleTemplate.yml"; string inputDocument = @".\SampleInvoice.pdf"; // Create DocumentParser instance using (DocumentParser documentParser = new DocumentParser("demo", "demo")) { Console.WriteLine($"Loading template \"{customTemplate}\"..."); Console.WriteLine(); documentParser.AddTemplate(customTemplate); Console.WriteLine($"Parsing \"{inputDocument}\"..."); Console.WriteLine(); // Parse invoice data in JSON format string jsonString = documentParser.ParseDocument(inputDocument, OutputFormat.JSON); // Display parsed data in console Console.WriteLine("Parsing results in JSON format:"); Console.WriteLine(); Console.WriteLine(jsonString); } Console.WriteLine(); Console.WriteLine("Press any key to continue..."); Console.ReadLine(); } } }
SampleTemplate.yml:
templateName: My Custom Template
templateVersion: 4
templatePriority: 0
detectionRules:
keywords:
- Your Company Name
- Invoice No\.
- TOTAL
objects:
- name: total
objectType: field
fieldProperties:
fieldType: macros
expression: TOTAL{{Spaces}}{{Number}}
dataType: decimal
pageIndex: 0
- name: dateIssued
objectType: field
fieldProperties:
fieldType: macros
expression: Invoice Date {{SmartDate}}
dataType: date
dateFormat: auto-mdy
pageIndex: 0
- name: invoiceId
objectType: field
fieldProperties:
fieldType: macros
expression: Invoice No. {{Digits}}
pageIndex: 0
- name: companyName
objectType: field
fieldProperties:
fieldType: static
expression: Vendor Company
pageIndex: 0
- name: billTo
objectType: field
fieldProperties:
fieldType: rectangle
rectangle:
- 32.25
- 150
- 348
- 70.5
pageIndex: 0
- name: notes
objectType: field
fieldProperties:
fieldType: rectangle
rectangle:
- 32.25
- 227.25
- 531
- 47.25
pageIndex: 0
- name: table1
objectType: table
tableProperties:
start:
expression: Item\s+Quantity\s+Price\s+Total
regex: true
end:
expression: TOTAL
regex: true
row:
expression: ^\s*(?<description>\w+.*)(?<quantity>\d+)\s+(?<unitPrice>\d+\.\d{2})\s+(?<itemTotal>\d+\.\d{2})\s*$
regex: true