Replaces the characters intersecting with the specified rectangles.
public bool ReplaceIntersectedCharacters(
IEnumerable<LeadRect> bounds,
char replaceCharacter
)
bounds
List of rectangles containing the bounds to check. These values are in pixels.
replaceCharacter
The new character code to use. Use 0 to delete the characters.
true if one or more characters were replaced; otherwise, false.
This is a helper method used to quickly perform actions such as redacting or removing characters from the recognition data based on their locations.
This method calls ReplaceIntersectedCharacters(rects, replaceCharacter, intersectionPercentage) with intersectionPercentage
equal to 0.
The following example performs OCR, then redacts all characters under a specified rectangle, and saves the result as a PDF file.
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 void OcrAndRedactToPdf()
{
string tifFileName = Path.Combine(LEAD_VARS.ImagesDir, "OCR1.tif");
string pdfFileNameBefore = Path.Combine(LEAD_VARS.ImagesDir, "OCR-Redact-Before.pdf");
string pdfFileNameAfter = Path.Combine(LEAD_VARS.ImagesDir, "OCR-Redact-After.pdf");
// Create OCR engine
using (IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD))
{
ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);
// Load the OCR1.tif image and recognize it
RasterImage image = ocrEngine.RasterCodecsInstance.Load(tifFileName, 1);
using (IOcrPage ocrPage = ocrEngine.CreatePage(image, OcrImageSharingMode.AutoDispose))
{
ocrPage.Recognize(null);
// Save it, note that all the data is in the result PDF file, including "Fast Facts"
using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument(null, OcrCreateDocumentOptions.AutoDeleteFile))
{
ocrDocument.Pages.Add(ocrPage);
ocrDocument.Save(pdfFileNameBefore, DocumentFormat.Pdf, null);
}
// Now, redact "Fast Facts", this could be an input from the user based on rubber banding or Regex.
LeadRect redactRect = LeadRect.FromLTRB(300, 800, 730, 900);
char replaceCharacter = '*';
IOcrPageCharacters ocrPageCharacters = ocrPage.GetRecognizedCharacters();
ocrPageCharacters.ReplaceIntersectedCharacters(new LeadRect[] { redactRect }, replaceCharacter);
ocrPage.SetRecognizedCharacters(ocrPageCharacters);
// Save it again, note that "Fast Facts" is replaced with * characters
using (IOcrDocument ocrDocument = ocrEngine.DocumentManager.CreateDocument(null, OcrCreateDocumentOptions.AutoDeleteFile))
{
ocrDocument.Pages.Add(ocrPage);
ocrDocument.Save(pdfFileNameAfter, DocumentFormat.Pdf, null);
}
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS23\Bin\Common\OcrLEADRuntime";
}