> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Recognizing Handwritten Texts

> Recognize handwritten and handprinted texts with ABBYY FineReader Engine ICR: set DetectHandwritten, use accurate analysis, and TT_Handwritten text type on ITextBlock blocks.

<Note>
  C# samples are applicable only to FRE for Windows.
</Note>

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](/fine-reader/engine/specifications/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](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/pageanalysisparams#detecthandwritten) property of the [PageAnalysisParams](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/pageanalysisparams) property to TRUE. Set the [SpeedQualityMode](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/pageanalysisparams#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](/fine-reader/engine/api-reference/enumerations/texttypeenum#tt_handwritten) constant. The text blocks will be created with the [TextTypes](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams#texttypes) property of the [ITextBlock::RecognizerParams](/fine-reader/engine/api-reference/layout-related-objects/textblock#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.

<Accordion title="C# code">
  ```csharp theme={null}
  // 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 );
  ...
  ```
</Accordion>

## Marking up blocks manually

Alternatively, you can set recognition parameters for blocks with handwritten text manually via the [ITextBlock::RecognizerParams](/fine-reader/engine/api-reference/layout-related-objects/textblock#recognizerparams) property:

1. Set the [TextTypes](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams#texttypes) property of the [RecognizerParams](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/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](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams#fieldmarkingtype) property of the RecognizerParams object. If each letter is written in a separate cell, use the [CellsCount](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams#cellscount) property to set up the number of character cells in the recognized block.

   <Accordion title="C# code">
     ```csharp theme={null}
     // 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
     ...
     ```
   </Accordion>

   ## See also

   [RecognizerParams](/fine-reader/engine/api-reference/parameter-objects/preprocessing-analysis-recognition-and-synthesis-parameters/recognizerparams)

   [List of the Predefined Languages](/fine-reader/engine/specifications/predefined-languages)
