Skip to main content
C# samples are applicable only to FRE for Windows.
ABBYY FineReader Engine Intelligent Character Recognition (ICR) technology allows you to recognize handwritten and handprinted texts.
  • Not all recognition languages are available for handwritten or handprinted text recognition. See the List of predefined languages.
  • Special symbols, such as * ^ ™ © ® № § ¡ ¿ ‰ cannot be recognized.
During layout analysis, blocks with handwritten and handprinted texts can be found and marked for recognition with the handwritten text type. To detect and recognize handwritten or handprinted text, set the DetectHandwritten property of the PageAnalysisParams property to TRUE. Set the SpeedQualityMode property to SQM_Accurate, because handwriting can only be detected in accurate analysis mode. Handwritten and handprinted text type are specified by the same TextTypeEnum::TT_Handwritten constant. The text blocks will be created with the TextTypes property of the ITextBlock::RecognizerParams object set to TT_Handwritten. During recognition, the text will be recognized as handwritten if the recognition language supports handwritten text, or as handprinted if it only supports handprinted text.
// Global ABBYY FineReader Engine object
FREngine.IEngine engine;
...
// Open an image file
...
FREngine.IFRDocument frdoc;
// Create DocumentProcessingParams and set parameters
FREngine.IDocumentProcessingParams processingParams = engine.CreateDocumentProcessingParams();
processingParams.PageProcessingParams.PageAnalysisParams.SpeedQualityMode = SQM_Accurate;
processingParams.PageProcessingParams.PageAnalysisParams.DetectHandwritten = true;
// Set the text types to recognize both regular text and handwriting
processingParams.PageProcessingParams.RecognizerParams.TextTypes = TT_Normal | TT_Handwritten;
// Use the parameters for processing
frDoc.Process( processingParams );
...

Marking up blocks manually

Alternatively, you can set recognition parameters for blocks with handwritten text manually via the ITextBlock::RecognizerParams property:
  1. Set the TextTypes property of the RecognizerParams object to TT_Handwritten.
  2. [Optional] Handprinted letters can often be enclosed in a frame, box, etc. In this case, set up the type of marking around the letters in the FieldMarkingType property of the RecognizerParams object. If each letter is written in a separate cell, use the CellsCount property to set up the number of character cells in the recognized block.
    // Global ABBYY FineReader Engine object
    FREngine.IEngine engine;
    ...
    // Open an image file
    ...
    // Obtain the Layout object from the page
    FREngine.ILayout layout = frPage.Layout;
    // Set block region
    FREngine.IRegion region = engine.CreateRegion();
    region.AddRect( 491, 314, 2268, 404 );
    // Create a new block
    FREngine.IBlock newBlock = layout.Blocks.AddNew( FREngine.BlockTypeEnum.BT_Text, region, 0 );
    FREngine.ITextBlock textBlock = newBlock.GetAsTextBlock();
    // Specify the text type
    textBlock.RecognizerParams.TextTypes = (int)FREngine.TextTypeEnum.TT_Handwritten;
    // Specify the type of marking around the letters
    textBlock.RecognizerParams.FieldMarkingType = FREngine.FieldMarkingTypeEnum.FMT_SimpleText;
    // Recognition and export
    ...
    

    See also

    RecognizerParams List of the Predefined Languages