←Select platform

OcrProgressCallback Delegate

Summary

Monitors progress of OCR operations.

Syntax
C#
VB
Objective-C
C++
Java
public delegate void OcrProgressCallback( 
   IOcrProgressData data 
) 
Public Delegate Sub OcrProgressCallback( _ 
   ByVal data As IOcrProgressData _ 
)  
typedef void (^LTOcrProgressHandler)(LTOcrProgressData *progressData) 
void OcrProgressListener.onProgress(OcrProgressData data) 
public delegate void OcrProgressCallback(  
   IOcrProgressData^ data 
) 

Parameters

data
An instance of the IOcrProgressData interface containing the progress callback data.

Remarks

The OCR engine will continuously invoke the callback procedure during the different OCR operations with an instance of IOcrProgressData providing the current processing stage and a percentage indicator value. Use this function to indicate progress of application operations.

The callback can set the IOcrProgressData.Status property at any time to OcrProgressStatus.Abort to abort the OCR process and cancel all pending operations.

Example

This example will display a simple "Processing" Windows Forms dialog that can be used to show OCR operation progress as well as allow the user to abort the current operation. You can plug this dialog into your application and call it in response to user-interface commands that correspond to OCR operations.

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Ocr; 
using Leadtools.Document.Writer; 
using Leadtools.Forms.Common; 
using Leadtools.WinForms; 
 
public void OcrProgressCallbackExample() 
{ 
   string logFileName = Path.Combine(LEAD_VARS.ImagesDir, "log.txt"); 
   string multiPageTifFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr.tif"); 
   string pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.pdf"); 
 
   // Create the log text writer 
   _log = File.CreateText(logFileName); 
 
   // Create an instance of the engine 
   using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, false)) 
   { 
      // Start the engine using default parameters 
      ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir); 
 
      // Create an OCR document 
      using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument()) 
      { 
         // Add this image to the document 
         _log.WriteLine("Adding the pages"); 
         _log.WriteLine("********************************"); 
         ocrDocument.Pages.AddPages(multiPageTifFileName, 1, -1, new OcrProgressCallback(MyOcrProgressCallback)); 
 
         // Auto-recognize the zones in all the pages 
         _log.WriteLine("Auto-zoning"); 
         _log.WriteLine("********************************"); 
         ocrDocument.Pages.AutoZone(new OcrProgressCallback(MyOcrProgressCallback)); 
 
         // Recognize it and save it as PDF 
         _log.WriteLine("Recognizing"); 
         _log.WriteLine("********************************"); 
         ocrDocument.Pages.Recognize(new OcrProgressCallback(MyOcrProgressCallback)); 
         _log.WriteLine("Saving to PDF"); 
         _log.WriteLine("********************************"); 
         ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, new OcrProgressCallback(MyOcrProgressCallback)); 
      } 
 
      // Shutdown the engine 
      // Note: calling Dispose will also automatically shutdown the engine if it has been started 
      ocrEngine.Shutdown(); 
   } 
 
   _log.WriteLine("********************************"); 
   _log.WriteLine("Complete"); 
   _log.Flush(); 
   _log.Close(); 
} 
// Text writer to save the log to 
private StreamWriter _log; 
 
private void MyOcrProgressCallback(IOcrProgressData data) 
{ 
   if (data.Percentage == 0) 
      _log.WriteLine("--------------------------"); 
 
   _log.WriteLine("Page:{0}({1}:{2}) {3}% Operation:{4}", 
      data.CurrentPageIndex.ToString("00"), 
      data.FirstPageIndex.ToString("00"), 
      data.LastPageIndex.ToString("00"), 
      data.Percentage.ToString("000"), 
      data.Operation); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
   public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.Ocr 
Imports Leadtools.Document.Writer 
Imports Leadtools.Forms 
Imports Leadtools.WinForms 
 
' Text writer to save the log to 
Private _log As StreamWriter 
 
Public Sub OcrProgressCallbackExample() 
   Dim logFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "log.txt") 
   Dim multiPageTifFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr.tif") 
   Dim pdfFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.pdf") 
 
   ' Create the log text writer 
   _log = File.CreateText(logFileName) 
 
   ' Create an instance of the engine 
   Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, False) 
      ' Start the engine using default parameters 
      ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrLEADRuntimeDir) 
 
      ' Create an OCR document 
      Using ocrDocument As IOcrDocument = ocrEngine.DocumentManager.CreateDocument() 
         ' Add this image to the document 
         _log.WriteLine("Adding the pages") 
         _log.WriteLine("********************************") 
         ocrDocument.Pages.AddPages(multiPageTifFileName, 1, -1, New OcrProgressCallback(AddressOf MyOcrProgressCallback)) 
 
         ' Auto-recognize the zones in all the pages 
         _log.WriteLine("Auto-zoning") 
         _log.WriteLine("********************************") 
         ocrDocument.Pages.AutoZone(New OcrProgressCallback(AddressOf MyOcrProgressCallback)) 
 
         ' Recognize it and save it as PDF 
         _log.WriteLine("Recognizing") 
         _log.WriteLine("********************************") 
         ocrDocument.Pages.Recognize(New OcrProgressCallback(AddressOf MyOcrProgressCallback)) 
         _log.WriteLine("Saving to PDF") 
         _log.WriteLine("********************************") 
         ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, New OcrProgressCallback(AddressOf MyOcrProgressCallback)) 
      End Using 
 
      ' Shutdown the engine 
      ' Note: calling Dispose will also automatically shutdown the engine if it has been started 
      ocrEngine.Shutdown() 
   End Using 
 
   _log.WriteLine("********************************") 
   _log.WriteLine("Complete") 
   _log.Flush() 
   _log.Close() 
End Sub 
 
Private Sub MyOcrProgressCallback(data As IOcrProgressData) 
   If data.Percentage = 0 Then 
      _log.WriteLine("--------------------------") 
   End If 
 
   _log.WriteLine("Page:{0}({1}:{2}) {3}% Operation:{4}", 
                  data.CurrentPageIndex.ToString("00"), 
                  data.FirstPageIndex.ToString("00"), 
                  data.LastPageIndex.ToString("00"), 
                  data.Percentage.ToString("000"), 
                  data.Operation) 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
   Public Const OcrLEADRuntimeDir As String = "C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime" 
End Class 

Requirements

Target Platforms

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Ocr Assembly