LEADTOOLS OCR (Leadtools.Forms.Ocr assembly)
LEAD Technologies, Inc

OcrProgressCallback Delegate

ExampleExample 





An instance of the IOcrProgressData interface containing the progress callback data.
Monitors progress of OCR operations. .NET support WinRT support
Syntax
public delegate void OcrProgressCallback( 
   IOcrProgressData data
)
'Declaration
 
Public Delegate Sub OcrProgressCallback( _
   ByVal data As IOcrProgressData _
) 
'Usage
 
Dim instance As New OcrProgressCallback(AddressOf HandlerMethod)
public delegate void OcrProgressCallback( 
   IOcrProgressData data
)
OcrProgressCallback( 
   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
Copy CodeCopy Code  
' 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.Plus, False)
         ' Start the engine using default parameters
         ocrEngine.Startup(Nothing, Nothing, Nothing, Nothing)

         ' 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, AddressOf MyOcrProgressCallback)

            ' Auto-recognize the zones in all the pages
            _log.WriteLine("Auto-zoning")
            _log.WriteLine("********************************")
            ocrDocument.Pages.AutoZone(AddressOf MyOcrProgressCallback)

            ' Recognize it and save it as PDF
            _log.WriteLine("Recognizing")
            _log.WriteLine("********************************")
            ocrDocument.Pages.Recognize(AddressOf MyOcrProgressCallback)
            _log.WriteLine("Saving to PDF")
            _log.WriteLine("********************************")
            ocrDocument.Save(pdfFileName, DocumentFormat.Pdf, 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(ByVal 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"
End Class
// Text writer to save the log to
   private StreamWriter _log;
   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.Plus, false))
      {
         // Start the engine using default parameters
         ocrEngine.Startup(null, null, null, null);

         // 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();
   }

   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";
}
// Text writer to save the log to
private DataWriter _log;
private IRandomAccessStream _fileStream;
private IOutputStream _outputStream;
[TestMethod]
public async Task OcrProgressCallbackExample()
{
   string logFileName = @"log.txt";
   string tifFileName = @"Assets\Ocr1.tif";
   string pdfFileName = @"Ocr1.pdf";

   // Create the log text writer
   StorageFile file = await Tools.AppLocalFolder.CreateFileAsync(logFileName);
   _fileStream = await file.OpenAsync(FileAccessMode.ReadWrite);

   _outputStream = _fileStream.GetOutputStreamAt(0);
   _log = new DataWriter(_outputStream);

   // Create an instance of the engine
   IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false);

   // Start the engine using default parameters
   ocrEngine.Startup(null, null, String.Empty, Tools.OcrEnginePath);

   // Create an OCR document
   IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument();

   // Add this image to the document
   _log.WriteString("Adding the pages\r\n");
   _log.WriteString("********************************\r\n");

   using (RasterCodecs codecs = new RasterCodecs())
   {
      StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(tifFileName);
      using (RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)))
         ocrDocument.Pages.AddPage(image, new OcrProgressCallback(MyOcrProgressCallback));
   }

   // Auto-recognize the zones in all the pages
   _log.WriteString("Auto-zoning\r\n");
   _log.WriteString("********************************\r\n");
   ocrDocument.Pages.AutoZone(new OcrProgressCallback(MyOcrProgressCallback));

   // Recognize it and save it as PDF
   _log.WriteString("Recognizing\r\n");
   _log.WriteString("********************************\r\n");
   ocrDocument.Pages.Recognize(new OcrProgressCallback(MyOcrProgressCallback));
   _log.WriteString("Saving to PDF\r\n");
   _log.WriteString("********************************\r\n");
   StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(pdfFileName, CreationCollisionOption.ReplaceExisting);
   await ocrDocument.SaveAsync(LeadStreamFactory.Create(saveFile), DocumentFormat.Pdf, new OcrProgressCallback(MyOcrProgressCallback));

   // Shutdown the engine
   ocrEngine.Shutdown();

   _log.WriteString("********************************\r\n");
   _log.WriteString("Complete\r\n");

   await _log.StoreAsync();
   _log.DetachStream();
   await _outputStream.FlushAsync();
   _fileStream.Dispose();
}

private void MyOcrProgressCallback(IOcrProgressData data)
{
   if(data.Percentage == 0)
      _log.WriteString("--------------------------\r\n");

   _log.WriteString(string.Format("Page:{0}({1}:{2}) {3}% Operation:{4}\r\n",
      data.CurrentPageIndex,
      data.FirstPageIndex,
      data.LastPageIndex,
      data.Percentage,
      data.Operation));
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

OcrProgressCallback Members
Leadtools.Forms.Ocr Namespace
IOcrProgressData Interface
OcrProgressOperation Enumeration
OcrProgressStatus Enumeration
IOcrEngine Interface
Programming with the LEADTOOLS .NET OCR

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.

OcrProgressCallback requires an OCR module license and unlock key. For more information, refer to: Imaging Pro/Document/Medical Features