←Select platform

GetOverlayImage Method

Summary
Gets the overlay image of this IOcrPage.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public RasterImage GetOverlayImage() 
- (nullable LTRasterImage *)overlayImage; 
public RasterImage getOverlayImage() 
RasterImage^ GetOverlayImage();  
def GetOverlayImage(self): 

Return Value

The overlay image or null of the page does not have one.

Remarks

The overlay image of an IOcrPage will be used when the image is saved by an IOcrDocument in the following situations:

  • If the page contains a graphics zone (OcrZoneType.Graphics. The document will get the image to store in the document from the overlay image.

  • If the output format supports the "Image over text" feature. Such as PDF with Image/Text option. The document will get the image to store in the document from the overlay image.

By the default, the overlay image is the original image used to create the page. It is the same value obtained by calling GetRasterImage with OcrPageType.Original.

In some situation, the user might want use a different image as the overlay. For example, a smaller version is passed to the OCR engine to conserve memory while the original version will only be used on save purposes in a PDF with image/text option. You can call SetOverlayImage before saving the document (memory-based) or adding the page to the document (file-based) and the engine will use this new image as the overlay value. If auto-preprocessing was performed on the page through AutoPreprocess, then the same values might need to be applied to the overlay as well. Use GetPreprocessValues to get the accumulative values of any inversion, rotation or deskewing applied by the pre-processor.

To clear the temporarily overlay image, call SetOverlayImage with a null value.

To get the overlay image at any time, call GetOverlayImage. Note that this property will the same image reference passed to the last SetOverlayImage call. It will not return the original image.

The overlay image is not disposed by this IOcrPage.

Example
C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Ocr; 
using Leadtools.Forms.Common; 
using Leadtools.Document.Writer; 
using Leadtools.WinForms; 
using Leadtools.Drawing; 
using Leadtools.ImageProcessing; 
using Leadtools.ImageProcessing.Color; 
 
public static void SetOverlayImageExample() 
{ 
   var originalFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1.tif"); 
   var imageFileName = Path.Combine(LEAD_VARS.ImagesDir, "Ocr1_Deskewed.tif"); 
   var outFileName = Path.Combine(LEAD_VARS.ImagesDir, "result.pdf"); 
 
   using (var ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD)) 
   { 
      ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir); 
 
      // Mimic having an image that is de-skewed 
      using (var rasterImage = ocrEngine.RasterCodecsInstance.Load(originalFileName, 1)) 
      { 
         // Rotate the image by 5 degrees to mimic deskew 
         var rotateCommand = new RotateCommand(5 * 100, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White)); 
         rotateCommand.Run(rasterImage); 
         ocrEngine.RasterCodecsInstance.Save(rasterImage, imageFileName, RasterImageFormat.CcittGroup4, 1); 
      } 
 
      // Now we are ready. We will create a PDF for the result with image over text overlay. And we will intercept creating 
      // the overlay and use the original image instead 
 
      // Use PDF with image/text option 
      var pdfOptions = ocrEngine.DocumentWriterInstance.GetOptions(DocumentFormat.Pdf) as PdfDocumentOptions; 
      pdfOptions.ImageOverText = true; 
      ocrEngine.DocumentWriterInstance.SetOptions(DocumentFormat.Pdf, pdfOptions); 
 
      // Create an OCR AutoRecognize job 
      var jobData = new OcrAutoRecognizeJobData 
      { 
         ImageFileName = imageFileName, 
         FirstPageNumber = 1, 
         LastPageNumber = -1, 
         DocumentFileName = outFileName, 
         Format = DocumentFormat.Pdf 
      }; 
 
      var autoRecognizeManager = ocrEngine.AutoRecognizeManager; 
      var job = autoRecognizeManager.CreateJob(jobData); 
 
      // Setup pre-processing commands 
      autoRecognizeManager.EnableTrace = true; 
      autoRecognizeManager.PreprocessPageCommands.Clear(); 
      autoRecognizeManager.PreprocessPageCommands.Add(OcrAutoPreprocessPageCommand.All); 
      OcrAutoRecognizeManagerJobStatus status; 
 
      EventHandler<OcrAutoRecognizeJobOperationEventArgs> jobOperation = (sender, e) => 
      { 
         if (e.Operation == OcrAutoRecognizeManagerJobOperation.SavePage) 
         { 
            if (!e.PostOperation) 
            { 
               // Get the pre-processing values for the page 
               var values = e.Page.GetPreprocessValues(); 
               // Show the status of it 
               Console.WriteLine("Page:{0} IsInverted:{1} RotationAngle:{2} DeskewAngle{3}", e.ImagePageNumber, values.IsInverted, values.RotationAngle, values.DeskewAngle); 
 
               // Load the original image from disk 
               var overlayImage = e.Document.RasterCodecsInstance.Load(e.Job.JobData.ImageFileName, e.ImagePageNumber); 
 
               // Apply to the image 
               if (values.RotationAngle != 0) 
                  new RotateCommand(values.RotationAngle, RotateCommandFlags.None, RasterColor.FromKnownColor(RasterKnownColor.White)).Run(overlayImage); 
               if (values.IsInverted) 
                  new InvertCommand().Run(overlayImage); 
 
               e.Page.SetOverlayImage(overlayImage); 
            } 
         } 
      }; 
 
      autoRecognizeManager.JobOperation += jobOperation; 
 
      try 
      { 
         status = autoRecognizeManager.RunJob(job); 
      } 
      finally 
      { 
         autoRecognizeManager.JobOperation -= jobOperation; 
      } 
 
      Console.WriteLine(status); 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
   public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime"; 
} 
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.