Signature of the callback to use for redirecting OCR runtime files.
public delegate RasterExceptionCode OcrRuntimeFileCallback(IOcrEngine engine,OcrRuntimeFile runtimeFile)
engine
Caller OCR engine.
runtimeFile
Runtime file information.
The caller should return RasterExceptionCode.Success if the operation is successful, or an appropriate error code if needed. For instance:
Refer to IOcrEngine.RuntimeFileCallback for more information.
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 instanceIOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD);// Install a OCR file runtime handlerocrEngine.RuntimeFileCallback = MyRuntimeFileCallback;// Startup the engineocrEngine.Startup(null, null, null,null /* startupParameters is null*/);// Perform OCR operationocrEngine.AutoRecognizeManager.Run(@"C:\LEADTOOLS22\Resources\Images\ocr1.tif",@"C:\LEADTOOLS22\Resources\Images\out.pdf",DocumentFormat.Pdf,null,null);// ShutdownocrEngine.Shutdown();// Remove the handlerocrEngine.RuntimeFileCallback = null;// Dispose the engineocrEngine.Dispose();}private static RasterExceptionCode MyRuntimeFileCallback(IOcrEngine engine, OcrRuntimeFile runtimeFile){// Called by the OCR engine for each runtime file operationRasterExceptionCode 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 helperif (!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 accordinglyruntimeFile.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 streamruntimeFile.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 embeddedreturn 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 resourcereturn System.IO.File.OpenRead(Path.Combine(@"C:\MyDir", resourceName));}