Reconnaissance manuscrite
Toutes les applications ne nécessitent pas l’utilisation de la reconnaissance, mais étant donné que la plupart des applications ont été conçues avec du texte comme type de données principal, la possibilité de convertir l’entrée manuscrite en texte est très précieuse. Vous pouvez utiliser les fonctionnalités de reconnaissance de l’API de plateforme Tablet PC pour rechercher des informations sur les moteurs de reconnaissance disponibles, tels que les langues qu’ils reconnaissent. Vous pouvez ensuite envoyer une collection Strokes d’un objet Ink à un moteur de reconnaissance et lui faire retourner un objet RecognitionResult .
Un objet RecognizerContext est l’instanciation d’un module de reconnaissance donné. L’objet RecognizerContext vous permet de reconnaître une collection donnée de traits de manière synchrone ou asynchrone. Lors de la reconnaissance asynchrone, l’objet RecognizerContext retourne l’objet RecognitionResult dans un rappel d’événement à l’application.
Un seul Tablet PC peut avoir un ou plusieurs modules de reconnaissance disponibles. Vous pouvez interroger la collection du module de reconnaissance pour déterminer l’outil de reconnaissance à utiliser. Un module de reconnaissance fournit des informations spécifiques sur ses fonctionnalités, telles que le langage qu’il peut reconnaître et le fabricant.
Pour déterminer si au moins un module de reconnaissance est installé, instanciez un objet InkRecognizerContext , comme illustré dans les exemples de code C++ et C# suivants. Si aucun module de reconnaissance n’est présent, cet appel à CoCreateInstance échoue.
CComPtr<IInkRecognizerContext> g_pIInkRecoContext;
hr = CoCreateInstance(CLSID_InkRecognizerContext,
NULL, CLSCTX_INPROC_SERVER,
IID_IInkRecognizerContext,
(void **) &g_pIInkRecoContext);
if (FAILED(hr))
{
::MessageBox(NULL, TEXT("No recognizers installed.\nExiting."),
gc_szAppName, MB_ICONERROR);
return -1;
}
try
{
Recognizers recos = new Recognizers();//Check for recognizer.
Recognizer defReco = recos.GetDefaultRecognizer();
recoContext = defReco.CreateRecognizerContext();
}
catch
{
MessageBox.Show("No recognizers installed.");
}
Les résultats de la reconnaissance sont retournés dans un objet RecognitionResult . Les résultats contiennent une chaîne de résultat optimale dans la propriété TopString , ainsi qu’une collection de résultats alternatifs dans une collection RecognitionAlternates . L’objet RecognitionResult peut être conservé avec la collection Strokes d’origine à partir de laquelle il a été généré.
Le guide du module de reconnaissance peut se composer de lignes et de colonnes, et donne au module de reconnaissance un meilleur contexte dans lequel effectuer la reconnaissance. Par exemple, vous pouvez dessiner des lignes horizontales sur l’écran d’un utilisateur, presque comme un morceau de papier régné, qui indiquent où l’écriture manuscrite doit se produire (ce type de guide se compose uniquement de lignes et pas de colonnes). Si un utilisateur écrit sur les lignes, au lieu d’un espace arbitraire, la précision de la reconnaissance s’améliore.
L’illustration suivante montre une structure RecognizerGuide avec deux lignes pour l’entrée.
L’illustration suivante montre une structure RecognizerGuide avec quatre colonnes et trois lignes.
Pour plus d’informations sur l’utilisation de la structure RecognizerGuide , consultez la rubrique de référence RecognizerGuide .