←Select platform

OcrProgressCallback Delegate

Summary
Monitors progress of OCR operations.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public delegate void OcrProgressCallback( 
   IOcrProgressData data 
) 
typedef void (^LTOcrProgressHandler)(LTOcrProgressData *progressData) 
void OcrProgressListener.onProgress(OcrProgressData data) 
public delegate void OcrProgressCallback(  
   IOcrProgressData^ data 
) 
def OcrProgressCallback(self,data): 
# data : IOcrProgressData 

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#
Java
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)) 
   { 
      // 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:\LEADTOOLS23\Resources\Images"; 
   public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime"; 
} 
 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.document.writer.*; 
import leadtools.ocr.*; 
 
 
// Text writer to save the log to 
private FileWriter _log; 
 
public void OcrProgressCallbackExample() throws IOException { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   final String OCR_LEAD_RUNTIME_DIR = "C:\\LEADTOOLS23\\Bin\\Common\\OcrLEADRuntime"; 
   String logFileName = combine(LEAD_VARS_IMAGES_DIR, "log.txt"); 
   String multiPageTifFileName = combine(LEAD_VARS_IMAGES_DIR, "Ocr1.tif"); 
   String pdfFileName = combine(LEAD_VARS_IMAGES_DIR, "Ocr1.pdf"); 
 
   // Create the log text writer 
   _log = new FileWriter(logFileName); 
 
   // Create an instance of the engine 
   OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.LEAD); 
   RasterCodecs codecs = new RasterCodecs(); 
 
   // Start the engine using default parameters 
   ocrEngine.startup(null, null, null, OCR_LEAD_RUNTIME_DIR); 
 
   // Create an OCR document 
   OcrDocument ocrDocument = ocrEngine.getDocumentManager().createDocument(); 
 
   // Add this image to the document 
   _log.write("Adding the pages\n"); 
   _log.write("********************************\n"); 
   RasterImage image = codecs.load(multiPageTifFileName, 16, CodecsLoadByteOrder.BGR, 1, -1); 
   ocrDocument.getPages().addPages(image, 1, -1, myOcrProgressCallback); 
 
   // Auto-recognize the zones in all the pages 
   _log.write("Auto-zoning\n"); 
   _log.write("********************************\n"); 
   ocrDocument.getPages().autoZone(myOcrProgressCallback); 
 
   // Recognize it and save it as PDF 
   _log.write("Recognizing\n"); 
   _log.write("********************************\n"); 
   ocrDocument.getPages().recognize(myOcrProgressCallback); 
   _log.write("Saving to PDF\n"); 
   _log.write("********************************\n"); 
   ocrDocument.save(pdfFileName, DocumentFormat.PDF, myOcrProgressCallback); 
 
   // Shutdown the engine 
   // Note: calling Dispose will also automatically shutdown the engine if it has 
   // been started 
   ocrEngine.shutdown(); 
 
   _log.write("********************************\n"); 
   _log.write("Complete\n"); 
   _log.flush(); 
   _log.close(); 
 
   assertTrue("Log file unsuccessfully created", new File(logFileName).exists()); 
   System.out.println("output file successfully created"); 
} 
 
OcrProgressListener myOcrProgressCallback = new OcrProgressListener() { 
 
   @Override 
   public void onProgress(OcrProgressData data) { 
      if (data.getPercentage() == 0) { 
         try { 
            _log.write("--------------------------\n"); 
         } catch (IOException e) { 
            e.printStackTrace(); 
         } 
      } 
 
      try { 
         _log.write("Page:" + data.getCurrentPageIndex() + "(" + data.getFirstPageIndex() + ":" 
               + data.getLastPageIndex() + ") " + data.getPercentage() + "% Operation:" + data.getOperation() 
               + "\n"); 
      } catch (IOException e) { 
         e.printStackTrace(); 
      } 
   } 
 
}; 
Requirements

Target Platforms

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

Leadtools.Ocr Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.