Udostępnij przez


Rozpoznawanie pisma ręcznego

Nie wszystkie aplikacje wymagają użycia rozpoznawania pisma, ale ponieważ większość aplikacji została zaprojektowana z tekstem jako podstawowym typem danych, możliwość konwersji pisma odręcznego na tekst jest bardzo cenna. Możesz użyć funkcji rozpoznawania interfejsu API platformy Tablet PC do zapytania o informacje dotyczące dostępnych silników rozpoznawania, na przykład języki, które obsługują. Następnie można wysłać kolekcję Strokes z obiektu Ink do aparatu rozpoznawania i otrzymać obiekt RecognitionResult.

Obiekt RecognizerContext

Obiekt RecognizerContext jest instancją danego rozpoznawacza. Obiekt RecognizerContext umożliwia synchroniczne lub asynchroniczne rozpoznawanie określonej kolekcji pociągnięć. Podczas rozpoznawania asynchronicznego obiekt RecognizerContext zwraca obiekt RecognitionResult w wywołaniu zwrotnym zdarzenia do aplikacji.

Moduły rozpoznające i obiekty rozpoznawania

Jeden komputer z tabletem może mieć dostępną co najmniej jedną usługę rozpoznawania. Możesz wysłać zapytanie do kolekcji mechanizmów rozpoznawania, aby określić, który mechanizm rozpoznawania ma być używany. Rozpoznawarka dostarcza szczegółowe informacje o swoich możliwościach, takich jak język, który może rozpoznać, oraz producent.

Aby określić, czy zainstalowano co najmniej jeden obiekt rozpoznawania, utwórz wystąpienie obiektu InkRecognizerContext, jak pokazano w poniższych przykładach kodu C++ i C#. Jeśli rozpoznawanie nie jest obecne, to wywołanie metody CoCreateInstance zakończy się niepowodzeniem.

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.");
}

Wynik rozpoznawania i alternatywy rozpoznawania obiektów

Wyniki rozpoznawania są zwracane w obiekcie RecognitionResult. Wyniki zawierają najlepszy ciąg wyników we właściwości TopString, a także kolekcję wyników alternatywnych w kolekcji RecognitionAlternates. Obiekt RecognitionResult można utrwalać przy użyciu oryginalnej kolekcji Strokes, z której został wygenerowany.

RecognizerGuide Struktura

Przewodnik rozpoznawania może składać się z wierszy i kolumn oraz zapewnia lepszy kontekst dla procesu rozpoznawania. Można na przykład narysować linie poziome na ekranie użytkownika, prawie tak jak w przypadku kawałka papieru, które pokazują, gdzie powinno wystąpić pismo ręczne (ten typ przewodnika składa się tylko z wierszy i bez kolumn). Jeśli użytkownik zapisuje na liniach, zamiast w dowolnym miejscu, dokładność rozpoznawania się poprawia.

Poniższa ilustracja przedstawia strukturę RecognizerGuide z dwoma wierszami dla danych wejściowych.

ilustracja przedstawiająca przewodnik rozpoznawania dwuwierszowego

Poniższa ilustracja przedstawia strukturę RecognizerGuide z czterema kolumnami i trzema wierszami.

ilustracja przedstawiająca przewodnik rozpoznawania trzech po czterech

Aby uzyskać więcej informacji na temat korzystania ze struktury RecognizerGuide, zobacz temat referencyjny RecognizerGuide.