←Select platform

OcrRuntimeFileCallback Delegate

Summary

Signature of the callback to use for redirecting OCR runtime files.

Syntax
C#
C++/CLI
Python
public delegate RasterExceptionCode OcrRuntimeFileCallback( 
   IOcrEngine engine, 
   OcrRuntimeFile runtimeFile 
) 
public: 
   delegate RasterExceptionCode OcrRuntimeFileCallback( 
      IOcrEngine^ engine, 
      OcrRuntimeFile^ runtimeFile 
   ) 
def OcrRuntimeFileCallback(self,engine,runtimeFile): 
# engine : IOcrEngine, runtimeFile : OcrRuntimeFile 

Parameters

engine

Caller OCR engine.

runtimeFile

Runtime file information.

Return Value

The caller should return RasterExceptionCode.Success if the operation is successful, or an appropriate error code if needed. For instance:

Remarks

Refer to IOcrEngine.RuntimeFileCallback for more information.

Example
C#
Java
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Ocr; 
using Leadtools.Document.Writer; 
 
public static void OcrRuntimeFileCallbackExample() 
{ 
   // This example assumes that some or all of the OCR runtime files are copied into "C:\MyDir" folder and simulates 
   // an environment where the runtime files can be obtained through helper methods HasResource and GetResourceStream. 
 
   // Create an OCR engine instance 
   IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD); 
 
   // Install a OCR file runtime handler 
   ocrEngine.RuntimeFileCallback = MyRuntimeFileCallback; 
 
   // Startup the engine 
   ocrEngine.Startup(null, null, null, 
      null /* startupParameters is null*/); 
 
   // Perform OCR operation 
   ocrEngine.AutoRecognizeManager.Run( 
      @"C:\LEADTOOLS22\Resources\Images\ocr1.tif", 
      @"C:\LEADTOOLS22\Resources\Images\out.pdf", 
      DocumentFormat.Pdf, 
      null, 
      null); 
 
   // Shutdown 
   ocrEngine.Shutdown(); 
   // Remove the handler 
   ocrEngine.RuntimeFileCallback = null; 
   // Dispose the engine 
   ocrEngine.Dispose(); 
} 
 
private static RasterExceptionCode MyRuntimeFileCallback(IOcrEngine engine, OcrRuntimeFile runtimeFile) 
{ 
   // Called by the OCR engine for each runtime file operation 
 
   RasterExceptionCode result = RasterExceptionCode.Success; 
 
   // Check the operation: 
   switch (runtimeFile.Mode) 
   { 
      case OcrRuntimeFileMode.Exists: 
         Debug.WriteLine($"MyRuntimeFileCallback does '{runtimeFile.FileName}' exist"); 
         // The engine is checking if a certain file exists, call our HasResource helper 
         if (!HasResource(runtimeFile.FileName)) 
            result = RasterExceptionCode.FileNotFound; 
         break; 
 
      case OcrRuntimeFileMode.Open: 
         Debug.WriteLine($"MyRuntimeFileCallback open '{runtimeFile.FileName}'"); 
         // The engine requested to open the file for reading, call our GetResourceStream helper 
         // and set the Stream property accordingly 
         runtimeFile.Stream = GetResourceStream(runtimeFile.FileName); 
         break; 
 
      case OcrRuntimeFileMode.Close: 
         Debug.WriteLine($"MyRuntimeFileCallback close '{runtimeFile.FileName}'"); 
         // The engine requested to close the file after reading. 
         // Dispose our stream 
         runtimeFile.Stream.Dispose(); 
         break; 
   } 
 
   return result; 
} 
 
private static bool HasResource(string resourceName) 
{ 
   // Do we have this resource? 
   // In our simulation, we will simply check if the file exist on disk 
   // In an Android application, this can check if a resource with this name was embedded 
   return System.IO.File.Exists(Path.Combine(@"C:\MyDir", resourceName)); 
} 
 
private static Stream GetResourceStream(string resourceName) 
{ 
   // Get a stream that can read from resource 
   // In our simulation, we will simply check if the file exist on disk 
   // In an Android application, this can call the appropriate platform API to obtain 
   // a stream to the resource 
   return System.IO.File.OpenRead(Path.Combine(@"C:\MyDir", resourceName)); 
} 
 
import java.io.File; 
import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.assertTrue; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.document.writer.*; 
import leadtools.ocr.*; 
 
 
public void IOcrRuntimeFileCallbackExample() { 
   final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
   final String OCR_LEAD_RUNTIME_DIR = "C:\\LEADTOOLS23\\Bin\\Common\\OcrLEADRuntime"; 
 
   // Create an OCR engine instance 
   OcrEngine ocrEngine = OcrEngineManager.createEngine(OcrEngineType.LEAD); 
 
   // Install a OCR file runtime handler 
   ocrEngine.setRuntimeFileCallback(MyRuntimeFileCallback); 
 
   // Startup the engine 
   ocrEngine.startup(null, null, null, OCR_LEAD_RUNTIME_DIR); 
   assertTrue(ocrEngine.isStarted()); 
 
   // Perform OCR operation 
   ocrEngine.getAutoRecognizeManager().run( 
         combine(LEAD_VARS_IMAGES_DIR, "ocr1.tif"), 
         combine(LEAD_VARS_IMAGES_DIR, "out.pdf"), 
         DocumentFormat.PDF, null); 
 
   // Shutdown 
   ocrEngine.shutdown(); 
   assertTrue(!ocrEngine.isStarted()); 
   // Remove the handler 
   ocrEngine.setRuntimeFileCallback(null); 
   // Dispose the engine 
   ocrEngine.dispose(); 
 
   System.out.println("OCR operation completed successfully"); 
} 
 
OcrRuntimeFileCallbackListener MyRuntimeFileCallback = new OcrRuntimeFileCallbackListener() { 
 
   @Override 
   public RasterExceptionCode onCallback(OcrEngine arg0, OcrRuntimeFile runtimeFile) { 
      // Called by the OCR engine for each runtime file operation 
 
      RasterExceptionCode result = RasterExceptionCode.SUCCESS; 
      System.out.println(runtimeFile.getFileName()); 
 
      // Check the operation: 
      switch (runtimeFile.getMode()) { 
         case EXISTS: 
            System.out.println("MyRuntimeFileCallback does " + runtimeFile.getFileName() + " exist"); 
            // The engine is checking if a certain file exists, call our HasResource helper 
            if (!hasResource(runtimeFile.getFileName())) 
               result = RasterExceptionCode.FILE_NOT_FOUND; 
            break; 
 
         case OPEN: 
            System.out.println("MyRuntimeFileCallback open " + runtimeFile.getFileName()); 
            // The engine requested to open the file for reading, call our GetResourceStream 
            // helper 
            // and set the Stream property accordingly 
            runtimeFile.setStream(getResourceStream(runtimeFile.getFileName())); 
            break; 
 
         case CLOSE: 
            System.out.println("MyRuntimeFileCallback close " + runtimeFile.getFileName()); 
            // The engine requested to close the file after reading. 
            // Dispose our stream 
            runtimeFile.getStream().dispose(); 
            break; 
      } 
 
      return result; 
   } 
 
}; 
 
private boolean hasResource(String resourceName) { 
   final String OCR_LEAD_RUNTIME_DIR = "C:\\LEADTOOLS23\\Bin\\Common\\OcrLEADRuntime"; 
   // Do we have this resource? 
   // In our simulation, we will simply check if the file exist on disk 
   // In an Android application, this can check if a resource with this name was 
   // embedded 
   File file = new File(combine(OCR_LEAD_RUNTIME_DIR, resourceName)); 
   return file.exists(); 
} 
 
private ILeadStream getResourceStream(String resourceName) { 
 
   final String OCR_LEAD_RUNTIME_DIR = "C:\\LEADTOOLS23\\Bin\\Common\\OcrLEADRuntime"; 
   // Get a stream that can read from resource 
   // In our simulation, we will simply check if the file exist on disk 
   // In an Android application, this can call the appropriate platform API to 
   // obtain 
   // a stream to the resource 
   return LeadStreamFactory.create(combine(OCR_LEAD_RUNTIME_DIR, resourceName)); 
 
} 
Requirements

Target Platforms

See Also

Reference

Leadtools.Ocr Namespace

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.