Indicates whether to store the recognized OCR object used to obtain the text in this DocumentPageText.
public bool StoreOcrPageCharacters {get; set;}
true to store the recognized OCR object used to obtain the text in this DocumentPageText; otherwise, false. The default value is false.
When DocumentPage.GetText is called, the engine tries to parse the text of the page using either the SVG or OCR engines.
When the OCR engine is used, the engine creates a valid IOcrPage object and calls Recognize. It then parses the resulting OCR characters(stored in an IOcrPageCharacters object), and converts them to DocumentCharacters and adds them to the page DocumentPageText.Characters collection. Each resulting DocumentCharacter object will contain DocumentCharacter.IsFromOcr set to true (since it was obtained through OCR), and the values of DocumentCharacter.OcrZoneIndex and DocumentCharacter.OcrCharacterIndex set the zone and character index into the IOcrPageCharacters object used to obtain it.
This conversion will obtain some of the values stored in an OcrCharacter object such as the character code and location. Other information obtained by the OCR engine such as the color, confidence, and baseline are not converted and will be lost.
When the value of StoreOcrPageCharacters is set to false (the default value), then the IOcrPageCharacters object used to create these document characters is created internally and not saved and the information is lost.
When the value of StoreOcrPageCharacters is set to true, then the IOcrPageCharacters object used to create these document characters will be stored in the DocumentPageText.OcrPageCharacters property and can be used to obtain all the other OCR information of the character.
The example below shows how to use StoreOcrPageCharacters to obtain the OCR confidence value for each document character.
For more information on text parsing refer Parsing Text with the Document Library.
This example will get the text from a document page using OCR and then use StoreOcrPageCharacters and DocumentPageText.OcrPageCharacters to find the OCR character confidences.
using Leadtools;using Leadtools.Codecs;using Leadtools.Document.Writer;using Leadtools.Document;using Leadtools.Caching;using Leadtools.Annotations.Engine;using Leadtools.Ocr;using Leadtools.Barcode;using Leadtools.Document.Converter;public void StoreOcrPageCharactersExample(){// Initialize an OCR engineIOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD);// Start the engine using default parametersocrEngine.Startup(null, null, null, @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime");// Load a document that we know will be OCRedstring documentFile = @"C:\LEADTOOLS22\Resources\Images\ocr1.tif";using (LEADDocument document = DocumentFactory.LoadFromFile(documentFile, new LoadDocumentOptions())){// Set the OCR enginedocument.Text.OcrEngine = ocrEngine;// First, do not store IOcrPageCharacters in DocumentPageText, this will// cause our code to extract the character OCR confidences value to not workdocument.Text.StoreOcrPageCharacters = false;Console.WriteLine("Obtaining OCR characters confidence with StoreOcrPageCharacters equals to false. Should fail");// Now get the textDocumentPage documentPage = document.Pages[0];DocumentPageText documentPageText = documentPage.GetText();// Build the wordsdocumentPageText.BuildWords();ShowOcrConfidence(documentPageText);Console.WriteLine("Obtaining OCR characters confidence with StoreOcrPageCharacters equals to true. Should work");document.Text.StoreOcrPageCharacters = true;documentPageText = documentPage.GetText();// Build the wordsdocumentPageText.BuildWords();ShowOcrConfidence(documentPageText);}ocrEngine.Dispose();}private static void ShowOcrConfidence(DocumentPageText documentPageText){Console.WriteLine("Showing OCR confidence value of the characters of the first word");if (documentPageText.Words == null){Console.WriteLine("Nothing to show");return;}// Show the OCR character confidence for the first word// Get the first wordDocumentWord word = documentPageText.Words[0];Console.WriteLine($"first word value:{word.Value}");// Get its charactersfor (int characterIndex = word.FirstCharacterIndex; characterIndex <= word.LastCharacterIndex; characterIndex++){// DocumentCharacter referenceDocumentCharacter documentCharacter = documentPageText.Characters[characterIndex];Console.WriteLine($" character at index {characterIndex} is {documentCharacter.Code} its isFromOcr value is {documentCharacter.IsFromOcr} and its bounds are {documentCharacter.Bounds}");Console.WriteLine($"Is end of line: {documentCharacter.IsEndOfLine}");Console.WriteLine($"Is end of word: {documentCharacter.IsEndOfWord}");Console.WriteLine($"Is right to left: {documentCharacter.IsRightToLeft}");// Ensure this is a character obtained from OCRif (documentCharacter.IsFromOcr){// See if we stored the IOcrPageCharacters inif (documentPageText.OcrPageCharacters != null){// We have it, get the corresponding OcrCharcater// Get the zone charactersIOcrZoneCharacters ocrZoneCharacters = documentPageText.OcrPageCharacters[documentCharacter.OcrZoneIndex];// And the character in this zoneOcrCharacter ocrCharacter = ocrZoneCharacters[documentCharacter.OcrCharacterIndex];int confidence = ocrCharacter.Confidence;Console.WriteLine($" OCR character code is {ocrCharacter.Code} and confidence is {confidence}");// Sanity checkDebug.Assert(ocrCharacter.Code == documentCharacter.Code);}else{Console.WriteLine(" Failed to get OCR confidence");}}}}