GetText Method (original) (raw)

Summary

Gets the recognition OCR data for a zone in this IOcrPage as a string.

Syntax

C#

Objective-C

C++/CLI

Java

Python

- (nullable NSString *)textForZoneAtIndex:(NSInteger)index error:(NSError **)error NS_SWIFT_NAME(zoneText(at:)); 

Parameters

zoneIndex
0-based index of the zone. Pass -1 for this parameter to get the text for all page zones at once.

Return Value

A String containing the recognized characters found (or an empty string if zones on the page contains no recognition data).

Example

This example gets the values of particular fields from a document.

using Leadtools; using Leadtools.Codecs; using Leadtools.Ocr; using Leadtools.Forms.Common; using Leadtools.WinForms; using Leadtools.Drawing; public void RecognizeTextExample() { // Get the form file name Console.WriteLine("Setting up the form..."); string formFileName = GetMyForm(); // Assume we get the field information from an external source such as a database or an XML file string[] fieldNames = { "Name", "Address", "SSN" }; LeadRect[] fieldBounds = { new LeadRect(800, 160, 1500, 220), new LeadRect(800, 560, 1500, 220), new LeadRect(800, 960, 1500, 220) }; int fieldCount = fieldNames.Length; string[] fieldValues = new string[fieldCount]; // Create an instance of the engine using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD)) { // Start the engine using default parameters Console.WriteLine("Starting up the engine..."); ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir); // Create a page from the image file Console.WriteLine("Creating a page..."); using (IOcrPage ocrPage = ocrEngine.CreatePage(ocrEngine.RasterCodecsInstance.Load(formFileName, 1), OcrImageSharingMode.AutoDispose)) { // Get our fields for (int i = 0; i < fieldCount; i++) { // Clear all the zones in the page ocrPage.Zones.Clear(); // Add our field zone OcrZone ocrZone = new OcrZone(); ocrZone.ZoneType = OcrZoneType.Text; ocrZone.Bounds = fieldBounds[i]; ocrZone.Name = fieldNames[i]; // Optional Console.WriteLine("Adding the zone for field {0} to the page...", ocrZone.Name); ocrPage.Zones.Add(ocrZone); // Recognize the page. This will only recognize the zone we added Console.WriteLine("Recognizing the page..."); ocrPage.Recognize(null); fieldValues[i] = ocrPage.GetText(0); } } // Shutdown the engine // Note: calling Dispose will also automatically shutdown the engine if it has been started Console.WriteLine("Shutting down..."); ocrEngine.Shutdown(); } // We are done, show the fields Console.WriteLine("-------------------------------------"); Console.WriteLine("Done, values extracted from the form:"); Console.WriteLine("-------------------------------------"); for (int i = 0; i < fieldCount; i++) Console.WriteLine("{0} : {1}", fieldNames[i], fieldValues[i]); } private string GetMyForm() { string formFileName = LEAD_VARS.ImagesDir + "MyForm.tif"; // In this example we will create the form every time // This will be a TIF file 11 by 8.5 inches in size containing a name, address and social security fields using (RasterImage image = new RasterImage( RasterMemoryFlags.Conventional, 2544, 3294, 24, RasterByteOrder.Bgr, RasterViewPerspective.BottomLeft, null, IntPtr.Zero, 0)) { image.XResolution = 300; image.YResolution = 300; // Draw our fields into this image IntPtr hdc = RasterImagePainter.CreateLeadDC(image); try { using (Graphics g = Graphics.FromHdc(hdc)) { g.FillRectangle(Brushes.White, 0, 0, image.ImageWidth - 1, image.ImageHeight - 1); using (Font f = new Font("Times New Roman", 80, FontStyle.Regular)) { using (Pen p = new Pen(Color.Black, 4)) { using (StringFormat sf = new StringFormat()) { sf.LineAlignment = StringAlignment.Center; // Draw the fields // Name g.DrawString("Name:", f, Brushes.Black, 200, 200); Rectangle rc = new Rectangle(800, 160, 1500, 220); g.DrawRectangle(p, rc); string value = "John Doe"; g.DrawString(value, f, Brushes.Black, rc, sf); // Address g.DrawString("Address:", f, Brushes.Black, 200, 600); rc = new Rectangle(800, 560, 1500, 220); g.DrawRectangle(p, rc); value = "1234 Main Street, USA"; g.DrawString(value, f, Brushes.Black, rc, sf); // Social security number g.DrawString("SSN:", f, Brushes.Black, 200, 1000); rc = new Rectangle(800, 960, 1500, 220); g.DrawRectangle(p, rc); value = "123-45-6789"; g.DrawString(value, f, Brushes.Black, rc, sf); } } } } } finally { RasterImagePainter.DeleteLeadDC(hdc); } // Save this image to disk using (RasterCodecs codecs = new RasterCodecs()) { codecs.Save(image, formFileName, RasterImageFormat.CcittGroup4, 1); } } return formFileName; } static class LEAD_VARS { public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images"; public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime"; }