locked
How many Handwriting Recognition Engines ? RRS feed

  • Question

  • Hi,

    I tried to post a question in another post but noone seemed to know.
    My investigations got me some more informations but still no clue to this issue.

    I am trying to access a handwriting recognition engine, which should be build in Windows Vista somewhere.
    As it seems, there are many different engines and I can´t seperate them from each other.
    Maybe someone could help me out of this jungle of informations.

    As it seems working engines are inclduded into :
        Office XP/2003 Enterprise Edition (only english)
        Tablet XP OS
        Vista
        and available through the Ttablet PC SDK

    But I can´t access all of those engines.
    On my XP os I can access Ink files and related attributes and classes. But when I want to recognize anything, I need to install the

     

    Microsoft Windows XP Tablet PC Edition 2005 Recognizer Pack

    and the
     Microsoft Windows XP Tablet PC Edition Software Development Kit 1.7

    Afterwards I can acces the engine via the namespace Microsoft.Ink by adding a reference in my VS project.

    But this is only the Tablet Engine. As much as I know now, it is not possible to access the engine, that works in the Office programs.

    The next Idea was, that Vista has a "Handwriting Recognition Panel". That engine should be accessible via the .NET Framework 3.0 (seems to be part of the WPF but needs some patches to be accessible).
    That Namespace could be found in System.Windows.Ink. But I can´t access the engine as it seems. I can create Strokes out of StyluspointCollections but I can´t analyze them.

    I have installed another PC with Vista, .NET 3.0 and VS 2005 to test a different approach to the issue, without using the Recognition pack (at least some engine must be installed to run the Vista Panel).
    On thatPC I have also found a namespace working with ink called
        MS.internal.Ink
    but again no recognnition engine.

    And that´s the point where I got lost.
    I want to use the engine on a normal PC (no tablet OS) and have only found the engine in the Recognizer Pack.
    Is this the Engine used in Office / Tablet PC / Vista ?
    And If I want to use my application on a different PC what must be included in order to use the recognition without an installed Tablet SDK and Recognizer Pack ?

    Regards
    Jan
    Monday, June 11, 2007 9:07 AM

Answers

  • There is only one set of handwriting recognition engines on your system. However, there are several APIs to access a recognition engine.

     

    The reasons for having different APIs are twofold:

    (a) historic reasons - there is the 'classic' RecognizerContext-style API that been around since 2002 and the newer InkAnalyzer-style API that we introduced in 2006 which have additional capabilities - such as ink parsing prior to the actual recognition.

    (b) developer convenience - we offer different API to best serve the developer's needs in their specific development environment. We have COM API for developers writing native code. We have managed APIs for Winforms developers (Microsoft.Ink.*) and managed APIs for WPF developers (System.Windows.Ink.*)

     

    Here is the complete list of different API flavors with pointers to MSDN. All APIs are supported on both XP and Vista. Let me know if you have more questions about any of these.

     

    1) RecognizerContext COM API

    http://msdn2.microsoft.com/en-us/library/ms821570.aspx

     

    2) RecognizerContext Winforms API

    http://msdn2.microsoft.com/en-us/library/ms828542.aspx

     

    3) InkAnalyzer COM API

    http://msdn2.microsoft.com/en-us/library/ms697412.aspx

     

    4) InkAnalyzer Winforms API

    http://msdn2.microsoft.com/en-us/library/microsoft.ink.inkanalyzer.aspx

     

    5) InkAnalyzer WPF API

    http://msdn2.microsoft.com/en-us/library/system.windows.ink.inkanalyzer.aspx

     

    Thanks,

    Stefan Wick

    Wednesday, June 13, 2007 1:49 PM
  • The XP and Vista are effectively the same from an application interface perspective. The Vista implementation, however, has better accuracy, advanced performance, stability, etc.

     

    MS.Internal.Ink is an internal namespace. You should not be using it in any way.

     

    Thanks,

    Stefan Wick

    Wednesday, June 13, 2007 4:28 PM

All replies

  • Hi Leviani,

     

    what version of Windows Vista are you using? The TabletPC handwriting recognizers are installed with Windows Vista Home Premium (and above)?

     

    What language are you trying to recognize?

     

    What type of program are you developing (WPF, Winforms, Win32, etc.)?

     

    Does the "Advanced Recognition" sample (or any of the other recognition samples) that comes with the Tablet PC / Windows Vista SDK work for you?

     

    Thanks,

    Stefan Wick

    Monday, June 11, 2007 12:40 PM
  • Hello,
    and thank you for the fast answer.

    The first PC I am using has XP Pro, VS 2005, .NET 3.0, Tablet SDK, Recognizer Pack and all the minor updates.
    At that PC I can access the recognition engine via the installed Recognizer Pack. (Microsoft.Ink)

    The second PC has Vista Business with VS 2005, .NET 3.0 and the Vista SDK for VS but no Recognizer Packs installed.
    In order to find out the differences between the Tablet SDK and Vista I kept both machines.

    I am trying to analyse german / french and english. But my main problem isn´t the language it would be good enough to do recognition for just any language.

    The problems I have met so far are that I can find hundreds of examples for the XP Tablet OS and lots of hints for the usage of that SDK (josh einstein explorer, Gavin Gears Blog entries, Frank LaVigne article...). But none points to the one which should be included in Vista and the .NET 3.0 Framework (WPF if I am correct)
    The recognition will be used for an application which provides stroke-data from an
    anoto pen (http://www.anoto.com/). So I don´t really need an InkCanvas or InkCollector to recieve the writing information.

    My "research" showed me, that there are some different "spaces" containing things about ink and recognizers.
        System.Windows.Ink (seems to be .NET)
        Microsoft.Ink (seems to be Tablet SDK)
        MS.Internal.Ink (seems to be Vista)
    (and here my confusion starts as I am new to the ink-idea and don´t really know what difference all that namespaces make)

    Another Problem occured, when I copied the InkRecognition sample to the Vista PC.
    That example works perfect, but when I try to add the Reference to Microsoft.Ink in my app it won´t work. I can´t find or add that reference. Maybe because the Tablet SDK isn´t installed.

    That´s why I am searching for a separation of those different approaches to Ink and the different (maybe) existing recognition engines.

    Regards
    Jan
    Monday, June 11, 2007 2:30 PM
  • OK, let's sort this out one step at a time.

     

    It looks you want to do ink recognition in WPF. There is a sample in the Windows SDK that shows how to this:

    http://msdn2.microsoft.com/en-us/library/aa972172.aspx

     

    Does this one work for you? If not, what is the error/behavior you are seeing?

     

    Thanks,

    Stefan Wick

    Monday, June 11, 2007 2:38 PM
  • Ok.
    The example doesn´t work.
    When I try to compile there are a lot of errors concerning the InkAnalyzer Namespace.
    The suggestion is that some Assembly or using directives are missing. (translated from the german error)
    In the References the IAWinFX has a yellow mark.
    As it seems the Windows SDK install didn´t went that well. I am going to reinstall it.

    By the way, I am not quite sure, if I want to use the WPF version, because I don´t really know how much different versions exist (see the title of this post).
    But I wanted to avoid the Tablet SDK for an application only running on normal PCs.
    And as a lot of customers will switch to Vista sooner or later, so it would be great to use the WPF and the already installed engine instead of delivering the new engine in additional .msm files.
    My problem at the moment is to sort out which Ink files under what namespace belong to which SDK/OS and how many different engines are there.

    Thanks again
    Jan

    ----Edit----

    I have reinstalled the SDK and now I can compile it.
    But When drawing a single stroke I get the error :

    Assembly Not Found
    This sample application requires the following assembly:
    IALoader, Version 1.7.6223.0, Culture=neutral,
    PublicKeyToken=31bf385ad364e35

    Either install the assembly in the GAC, or reference it locally.

    Tuesday, June 12, 2007 6:58 AM
  • IALoader.dll is located in %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin.

     

    Please add a reference to it in the sample project (or install it in the GAC via gacutil utility). And then run again.

     

    Thanks,

    Stefan Wick

    Tuesday, June 12, 2007 12:41 PM
  • Thank you,
    with that reference it works.

    But I still have the issue to differ between those Namespaces and usage of Ink / Recognition.
    How many different engines / Ink-classes are there ?
    The Canvas Example that you pointed me to uses the System.Ink, while the "InkRecognition" example copied from my XP machine with the Tablet SDK uses the Microsoft.Ink.
    Unfortunately I don´t remember where but in addtion to that I found the MS.Internal.Ink.

    Thanks
    Jan
    Wednesday, June 13, 2007 7:10 AM
  • There is only one set of handwriting recognition engines on your system. However, there are several APIs to access a recognition engine.

     

    The reasons for having different APIs are twofold:

    (a) historic reasons - there is the 'classic' RecognizerContext-style API that been around since 2002 and the newer InkAnalyzer-style API that we introduced in 2006 which have additional capabilities - such as ink parsing prior to the actual recognition.

    (b) developer convenience - we offer different API to best serve the developer's needs in their specific development environment. We have COM API for developers writing native code. We have managed APIs for Winforms developers (Microsoft.Ink.*) and managed APIs for WPF developers (System.Windows.Ink.*)

     

    Here is the complete list of different API flavors with pointers to MSDN. All APIs are supported on both XP and Vista. Let me know if you have more questions about any of these.

     

    1) RecognizerContext COM API

    http://msdn2.microsoft.com/en-us/library/ms821570.aspx

     

    2) RecognizerContext Winforms API

    http://msdn2.microsoft.com/en-us/library/ms828542.aspx

     

    3) InkAnalyzer COM API

    http://msdn2.microsoft.com/en-us/library/ms697412.aspx

     

    4) InkAnalyzer Winforms API

    http://msdn2.microsoft.com/en-us/library/microsoft.ink.inkanalyzer.aspx

     

    5) InkAnalyzer WPF API

    http://msdn2.microsoft.com/en-us/library/system.windows.ink.inkanalyzer.aspx

     

    Thanks,

    Stefan Wick

    Wednesday, June 13, 2007 1:49 PM
  • Thank you very much,

    this provides a lot of help.
    So the thing that is interesting for me is the InkAnalyzer WPF API via system.windows.ink.
    And when I want to use a recognition engine on any used Ink-Objects, I need to install either the Recognizer Pack under XP or use Vista (or the Windows Vista SDK), which both have the same engine ?

    One last question, where does the MS.internal.Ink come from ? (seems to have something to do with InkCanvas Objects)

    Thanks
    Jan

    Wednesday, June 13, 2007 2:25 PM
  • The XP and Vista are effectively the same from an application interface perspective. The Vista implementation, however, has better accuracy, advanced performance, stability, etc.

     

    MS.Internal.Ink is an internal namespace. You should not be using it in any way.

     

    Thanks,

    Stefan Wick

    Wednesday, June 13, 2007 4:28 PM