Tweeter button

First release of Tegaki

Today I’m releasing Tegaki 0.1. Tegaki is an ongoing project which aims to develop a free and open-source modern implementation of handwriting recognition software, that is suitable for both the desktop and mobile devices, and that is designed from the ground up to work well with Chinese and Japanese.

Screencast video: ogg or youtube.

This release features desktop and SCIM integration. However, the main “innovation” brought to you by this release is the user interface. It uses two drawing areas for continuous writing. The user can eventually fix recognition errors by choosing alternative candidates or editing characters. Since a video is worth a thousand words, see the screencast above. This interface is largely inspired from the Nintendo DS game “Kanji Sono Mama Rakubiki Jiten” (漢字そのまま楽引辞典).

Tegaki is designed to be able to use several recognition engines. However so far it only supports Zinnia, which is the only recognition engine that I know with acceptable recognition accuracy and good performance on mobile devices. One challenge of the project in the future will be to create a new recognition engine that can yield better results than Zinnia.

A take that I have on this project is to use Python whenever this is possible and only use C or C++ when performance is critical, like in recognition engines. Compared to Tomoe, which implements everything in C and provides bindings for several languages, this means less reusability of the components but I hope this will make the project go forward faster.

There are still a lot of things that can be done in various areas but I really wanted to release the code I’ve put together so far because I think it can already be useful to end-users. By the way, Maemo supports both pygtk and SCIM through third-party projects, thus Tegaki is just a few Debian packages away from being available on Maemo.

For further details:
http://tegaki.sourceforge.net/

9 Responses to “First release of Tegaki”

  1. Roger Braun Says:

    That’s great news! Sadly, I can’t get it to run. I installed all the packages and Zinnia, but when I open tegaki in SCIM it says it has no models or recognizers installed.

  2. Mathieu Says:

    Ok, so you’re almost done installing Tegaki.

    1) Did you install Zinnia bindings for Python? If so you should be able to do “import zinnia” in Python, like so:

    $ python
    Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
    [GCC 4.3.2] on linux2
    Type “help”, “copyright”, “credits” or “license” for more information.
    >>> import zinnia
    >>>

    The bindings are available in the python/ directory of the zinnia source. If you encounter problems compiling the bindings, the following bug report may help you:
    http://sourceforge.net/tracker/index.php?func=detail&aid=2589496&group_id=232651&atid=1086998

    If you did install the python bindings, one problem may be that the zinnia Python module cannot dynamically load the zinnia library. Check that /usr/local/lib is in the list of loadable paths.

    $ cat /etc/ld.so.conf.d/i486-linux-gnu.conf
    # Multiarch support
    /lib/i486-linux-gnu
    /usr/lib/i486-linux-gnu
    /usr/local/lib

    Run this after modifying the file:
    $ sudo ldconfig

    2) Did you install a model? You need to install tegaki-zinnia-japanese and/or tegaki-zinnia-simplified-chinese, depending on your needs.

    If you’re running Ubuntu Intrepid, there exist unofficial packages:
    http://blog.lidaobing.info/2009/02/tagaki-01-is-ready-for-ubuntu-810.html

  3. Roger Braun Says:

    Yeah, I forgot the python bindings. And i did run into that compile error, so thanks for your help! It’s working great now. Lack of a good IME-Pad (for lack of a better term) in Linux was one of the reasons some of my friends continue to use Windows. This really is a great program!

  4. fred Says:

    Is there any package available already for n810?
    I tried to compile it by myself, which works … but I cant load it, bcz of python-gtk-something missing …
    did you already successfully compile it on one of those devices?
    Regards
    fred

  5. Mathieu Says:

    I’ll try to prepare Debian packages for the device when I get some time.

    Did you install python2.5-gtk2 ?

  6. fred Says:

    yes i did …
    indeed i cant even get it to run on my debian-desktop … everything compiles fine, but whenever i try to start it in scim nothing happens … runnin “tegaki-recognize” on console doesnt work … it gives me following error:

    Traceback (most recent call last):
    File “/usr/bin/tegaki-recognize”, line 111, in
    TegakiRecognize(options.hide).run()
    File “/usr/bin/tegaki-recognize”, line 41, in __init__
    self._create_window()
    File “/usr/bin/tegaki-recognize”, line 63, in _create_window
    rw = SmartRecognizerWidget()
    File “/usr/lib/python2.5/site-packages/tegakigtk/recognizer.py”, line 320, in __init__
    RecognizerWidgetBase.__init__(self)
    File “/usr/lib/python2.5/site-packages/tegakigtk/recognizer.py”, line 50, in __init__
    self._load_preferences()
    File “/usr/lib/python2.5/site-packages/tegakigtk/recognizer.py”, line 57, in _load_preferences
    self.set_selected_model(pm["GENERAL"]["SELECTED_MODEL"])
    File “/usr/lib/python2.5/site-packages/tegakigtk/recognizer.py”, line 216, in set_selected_model
    r_name, model_name, meta = Recognizer.get_all_available_models()[i]
    TypeError: unbound method get_all_available_models() must be called with Recognizer instance as first argument (got nothing instead)

    what am I missing? I know it seems there is some argument missing … but which one?
    regards
    fred

  7. Mathieu Says:

    What is your Python version? You can get it with “python -V”.

    Also note that Debian (sid) has packages for Tegaki already, so you may want to use them instead of installing Tegaki by hand.

    tegaki-recognizer should work without argument.

  8. fred Says:

    thanks for your answer …

    python version is 2.5.4
    i did also try the sid-packages first … but same problem, whenever I click on tegaki in scim, nothing happens, and if I start tegaki-recognizer it gives me the same error …

    if I am comment out the part where tegakigtk/recognizer.py searches for the recognizers and models, tegaki loads … but of course without any models … so the problem seems to be there …

    zinna and tegaki python bindings are also ok … can load them from within python shell …

    really cant see what I am missing here …

  9. Mathieu Says:

    Then I don’t know. Your error messages contains:

    TypeError: unbound method get_all_available_models() must be called with Recognizer instance as first argument (got nothing instead)

    I don’t understand why because get_all_available_models is defined as a static method (with a decorator) and thus it doesn’t need an instance. I think that your Python version has a bug with static methods or decorators.

    Can you use the project discussion group for further discussion? Thank you!

Leave a Reply