Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.6.9
|
Leadtools.Forms.Ocr Assembly > Leadtools.Forms.Ocr Namespace > IOcrPage Interface : GetText Method |
'Usage
Dim instance As IOcrPage Dim zoneIndex As Integer Dim value As String value = instance.GetText(zoneIndex)
- (nullable NSString *)textForZoneAtIndex:(NSInteger)index error:(NSError **)error
public String getText(int zoneIndex)
function Leadtools.Forms.Ocr.IOcrPage.GetText( zoneIndex )
Use this method to get the document result in a simple String object. Getting the result as text is helpful in situations when adding zones manually for form processing. For example, suppose the form you are processing has two areas of interests, a name field at coordinates 100, 100, 400, 120 and a social security number at coordinates 100, 200, 400, 220. You can structure your application as follows:
Create a new IOcrPage object from the form image using IOcrEngine.CreatePage.
Add the name zone manually:
OcrZone nameZone = new OcrZone();
nameZone.ZoneType = OcrZoneType.Text;
nameZone.Bounds = new LogicalRectangle(100, 100, 400, 120);
ocrPage.Zones.Add(nameZone);
Recognize the page (only this one zone will recognized):
ocrPage.Recognize();
Get the value of the name field:
string name = ocrPage.GetText(0);
Remove the name zone from the page:
ocrPage.Zones.Clear();
Repeat the steps from (2) above to get the social security field.
This example gets the values of particular fields from a document.
Imports Leadtools Imports Leadtools.Codecs Imports Leadtools.Forms.Ocr Imports Leadtools.Forms Imports Leadtools.WinForms Imports Leadtools.Drawing <TestMethod> Public Sub RecognizeTextExample() ' Get the form file name Console.WriteLine("Setting up the form...") Dim formFileName As String = GetMyForm() ' Assume we get the field informations from an external source such as a database or an XML file Dim fieldNames As String() = {"Name", "Address", "SSN"} Dim fieldBounds As LogicalRectangle() = { _ New LogicalRectangle(800, 160, 1500, 220, LogicalUnit.Pixel), _ New LogicalRectangle(800, 560, 1500, 220, LogicalUnit.Pixel), _ New LogicalRectangle(800, 960, 1500, 220, LogicalUnit.Pixel)} Dim fieldCount As Integer = fieldNames.Length Dim fieldValues As String() = New String(fieldCount - 1) {} ' Create an instance of the engine Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, False) ' Start the engine using default parameters Console.WriteLine("Starting up the engine...") ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrAdvantageRuntimeDir) ' Create a page from the image file Console.WriteLine("Creating a page...") Using ocrPage As IOcrPage = ocrEngine.CreatePage(ocrEngine.RasterCodecsInstance.Load(formFileName, 1), OcrImageSharingMode.AutoDispose) ' Get our fields For i As Integer = 0 To fieldCount - 1 ' Clear all the zones in the page ocrPage.Zones.Clear() ' Add our field zone Dim ocrZone As 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(Nothing) fieldValues(i) = ocrPage.GetText(0) Next End Using ' Shutdown the engine ' Note: calling Dispose will also automatically shutdown the engine if it has been started Console.WriteLine("Shutting down...") ocrEngine.Shutdown() End Using ' We are done, show the fields Console.WriteLine("-------------------------------------") Console.WriteLine("Done, values extracted from the form:") Console.WriteLine("-------------------------------------") For i As Integer = 0 To fieldCount - 1 Console.WriteLine("{0} : {1}", fieldNames(i), fieldValues(i)) Next End Sub Private Function GetMyForm() As String Dim formFileName As String = 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 image As New RasterImage( _ RasterMemoryFlags.Conventional, _ 2544, 3294, 24, _ RasterByteOrder.Bgr, _ RasterViewPerspective.BottomLeft, _ Nothing, IntPtr.Zero, 0) image.XResolution = 300 image.YResolution = 300 ' Draw our fields into this image Dim hdc As IntPtr = RasterImagePainter.CreateLeadDC(image) Try Using g As Graphics = Graphics.FromHdc(hdc) g.FillRectangle(Brushes.White, 0, 0, image.ImageWidth - 1, image.ImageHeight - 1) Using f As New Font("Times New Roman", 80, FontStyle.Regular) Using p As New Pen(Color.Black, 4) Using sf As New StringFormat() sf.LineAlignment = StringAlignment.Center ' Draw the fields ' Name g.DrawString("Name:", f, Brushes.Black, 200, 200) Dim rc As New Rectangle(800, 160, 1500, 220) g.DrawRectangle(p, rc) Dim value As String = "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) End Using End Using End Using End Using Finally RasterImagePainter.DeleteLeadDC(hdc) End Try ' Save this image to disk Using codecs As New RasterCodecs() codecs.Save(image, formFileName, RasterImageFormat.CcittGroup4, 1) End Using End Using Return formFileName End Function Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" Public Const OcrAdvantageRuntimeDir As String = "C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime" End Class
using Leadtools; using Leadtools.Codecs; using Leadtools.Forms.Ocr; using Leadtools.Forms; 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" }; LogicalRectangle[] fieldBounds = { new LogicalRectangle(800, 160, 1500, 220, LogicalUnit.Pixel), new LogicalRectangle(800, 560, 1500, 220, LogicalUnit.Pixel), new LogicalRectangle(800, 960, 1500, 220, LogicalUnit.Pixel) }; int fieldCount = fieldNames.Length; string[] fieldValues = new string[fieldCount]; // Create an instance of the engine using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false)) { // Start the engine using default parameters Console.WriteLine("Starting up the engine..."); ocrEngine.Startup(null, null, null, LEAD_VARS.OcrAdvantageRuntimeDir); // 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:\Users\Public\Documents\LEADTOOLS Images"; public const string OcrAdvantageRuntimeDir = @"C:\LEADTOOLS 19\Bin\Common\OcrAdvantageRuntime"; }
using Leadtools; using Leadtools.Codecs; using Leadtools.Forms.Ocr; using Leadtools.Forms; public async Task RecognizeTextExample() { // Get the form file name Debug.WriteLine("Setting up the form..."); string formFileName = @"Assets\MyForm.tif"; // Assume we get the field informations from an external source such as a database or an XML file string[] fieldNames = { "Name", "Address", "SSN" }; LeadRect[] fieldBounds = { LeadRectHelper.Create(800, 160, 1500, 220), LeadRectHelper.Create(800, 560, 1500, 220), LeadRectHelper.Create(800, 960, 1500, 220) }; int fieldCount = fieldNames.Length; string[] fieldValues = new string[fieldCount]; // Create an instance of the engine IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false); // Start the engine using default parameters Debug.WriteLine("Starting up the engine..."); ocrEngine.Startup(null, null, String.Empty, Tools.OcrEnginePath); // Create a document IOcrDocumentManager ocrDocumentManager = ocrEngine.DocumentManager; IOcrDocument ocrDocument = ocrDocumentManager.CreateDocument(); // Load the form image using (RasterCodecs codecs = new RasterCodecs()) { StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(formFileName); using (RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile))) { // Add the form to the document Debug.WriteLine("Adding the form to the document..."); IOcrPage ocrPage = ocrDocument.Pages.AddPage(image, null); // 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 Debug.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 Debug.WriteLine("Recognizing the page..."); fieldValues[i] = ocrPage.RecognizeText(null); } } } // Shutdown the engine Debug.WriteLine("Shutting down..."); ocrEngine.Shutdown(); // We are done, show the fields Debug.WriteLine("-------------------------------------"); Debug.WriteLine("Done, values extracted from the form:"); Debug.WriteLine("-------------------------------------"); for(int i =0; i < fieldCount; i++) Debug.WriteLine("{0} : {1}", fieldNames[i], fieldValues[i]); }
IOcrPage Interface
IOcrPage Members
IOcrPageCollection Interface
IOcrZoneCollection Interface
Recognize Method
IsRecognized Property
Unrecognize Method
OcrZone Structure
AutoZone
GetRecognizedCharacters Method
SetRecognizedCharacters Method
OcrCharacter Structure
IOcrPageCharacters Interface
IOcrZoneCharacters Interface
Programming with the LEADTOOLS .NET OCR
Recognizing OCR Pages
OCR Confidence Reporting