This is a read-only archive. Find the latest Linux articles, documentation, and answers at the new!

Feature: Tools & Utilities

CellWriter: Open source handwriting recognition for Linux

By Nathan Willis on November 09, 2007 (4:00:00 PM)

Share    Print    Comments   

Handwriting recognition, like its cousins speech recognition and optical character recognition, is a domain still dominated by proprietary products. Where there are Linux solutions, such as the one in Nokia's Maemo Internet tablets, they are often closed source plugins protected by patent claims. Thus I was pleasantly surprised to find CellWriter, a small, straightforward handwriting recognition tool that integrates easily with modern Linux desktops.

CellWriter provides a small, grid-like window into which you write with normal pen strokes. Thus it works best with a pen interface, such as a Wacom tablet, but that isn't strictly required.

The grid window hovers in always-on-top mode above your other applications, so that the app you are working in retains focus. When you satisfied with the text you have scrawled in CellWriter, you click the Enter button beside the grid, and your words are inserted into the active app just as if you had typed them on the keyboard. It's brain-dead simple.

Basic writing

You can download .DEB packages or source code from the project's Web site. The application requires GTK+, libgnome, and libxtst, all of which are standard issue on modern Linux distributions.

CellWriter works by learning the writing style of each individual user, so training is a must. If CellWriter doesn't find a ~/.cellwriter file at run time, it will open in training mode so it can learn your character style. If at any time you experience a lot of trouble with a particular character, you can click the Train button and provide more samples -- the app continues to learn from repeated experience.

Train mode sports a matrix of characters, each in its own cell. All you do is draw the appropriate character in its cell, and CellWriter commits it to memory. Trained and un-trained cells are marked in different colors so you can keep track of your work.

If you mess up on a character, you can reset it. As you write in normal text-entry mode, CellWriter converts your strokes to characters as you move the pen from one grid cell to the next. If it interprets incorrectly, you can right-click on the cell and choose the correct letter from a drop-down list of close matches. Whenever CellWriter in unsure of a letter, it highlights that cell in a different color to alert you, but doesn't interrupt your writing.


In CellWriter's setup dialog, you can configure the size and color of the cells, and tweak some of the character recognition algorithm's settings -- such as its sensitivity to stroke direction.

Better still, you can tell CellWriter what alphabet you are using, courtesy of Unicode. You can enable and disable different Unicode blocks individually, and set the language direction to left-to-right or right-to-left. Satisfied with Basic Latin? Do nothing. Need Cyrillic, Thai, or International Phonetic Alphabet extensions? Just click the respective checkboxes.

The blocks you select are added to Train mode, but CellWriter only recognizes those characters on which it is trained. So if you only need a few particular Greek letters for an equation, you can just train the ones you need, and not worry about CellWriter sending an epsilon where you meant to write an E.

Project past, present, and future

CellWriter is the product of University of Minnesota undergraduate computer science student Michael Levin. Levin had previously authored OneStroke, a simpler character recognition utility, but wrote CellWriter essentially from the ground up rather than evolving the old codebase.

OneStroke was a hobby project, but Levin got the opportunity to spend considerably more time developing CellWriter through the university's Undergraduate Research Opportunity Program (UROP). UROP provides grants to University of Minnesota students to undertake summer research on projects that they devise individually.

Levin's interest in handwriting recognition stems from scratching his own personal "itch" with a Toshiba Portégé M200 tablet PC. "It was priced at nearly twice the cost of any other laptop, but I was mesmerized by the tablet interface. I had a naïve desire to do research in artificial intelligence and saw handwriting recognition as the most approachable problem. I ended up buying the Portégé solely because I wanted to work on the problem."

The artificial intelligence community regards handwriting recognition as a "solved problem," Levin says, so there is scarce ongoing research into new methods. "But after I'd been using the Windows [Tablet Input Panel] for several years and it continued to infuriate me by consistently refusing to recognize my "o" (drawn clockwise from the bottom), I knew there was room for improvement."

Levin says he developed CellWriter's algorithms himself, through personal trial and error. Basing the character matching on per-user training sidesteps an important problem: no two people share the same handwriting, so general-purpose recognition has to assume lowest-common-denominator penmanship.

Sticking to a grid-based, one-character-at-a-time approach simplifies the recognition task (i.e., you only need to consider one glyph at a time), but it also permits some sophisticated tricks. Unlike some handwriting recognition systems, CellWriter can understand multi-stroke characters, and it can recognize each character regardless of the order in which you make the strokes.

As a full-time student, Levin is unable to devote much time to CellWriter during the non-summer months, but he says he intends to keep working on it. "There is a great deal of localization support that still needs to be done. Currently, CellWriter is atrociously difficult for Asian language users. I was hoping to find a way to simplify Kanji training or generate it automatically somehow."

The outlook for other projects

There is no magic bullet for handwriting recognition; it is a task even human beings struggle with. As an undergraduate math major I was always intrigued by it; working out proofs on paper forced us to adopt distinctive forms to demarcate similar-looking Latin, Greek, and specialty symbols. But even in your own handwriting, it can occasionally be difficult to distinguish between "w" and "ω" (omega), or "∃" (there exists) and "∋" (contains).

The keyboard as an input device is not going anywhere, but we are seeing an explosion of touchscreen devices running Linux -- from Nokia tablets to OpenMoko phones. We will need handwriting recognition soon, and non-free software dominates that space right now.

CellWriter is a young project, but it shows a lot of promise both in its character recognition abilities and, more importantly, in its ease of use.

Share    Print    Comments   


on CellWriter: Open source handwriting recognition for Linux

Note: Comments are owned by the poster. We are not responsible for their content.

CellWriter: Open source handwriting recognition for Linux

Posted by: Anonymous [ip:] on November 10, 2007 10:26 AM
Another handwriting GPL'd project (but for chinese characters) can be found at


not dead yet

Posted by: Anonymous [ip:] on November 11, 2007 01:03 AM
Now and then I've heard of systems being over loded with trafic making them slow or unresponsive. I'm not that familiar with internet nodes yet, either the node or IP end point should have enough persistance or cache ageing to identify a most requested site. A variation would be to have a server create a load hierarchy that identifies the highest trafic source. Once the high trafic node is identified, it is turned into a proxy server or provides a stock ticker type broadcasting application that responds with only one request and the number of such requests from the node. Or embarks upon update mode which responds with number of requests after each update. All requests are reflected back with the currently updated state. Thus the load moves toward its source distributing demand on the ultamate source. In a simmilar way different media such as HD radio, satilite, ham, a puplic service TV radio station could provide either free or to the highest bid broadcast load dampening. All these media would have cross platform formates that allowed each of them to broadcast content from the other. A satilite service mite at a given channel broadcast the top requested web content from a given search engine. It would be formated for reception and interface with a pc or media TV application for brousing allbeit one directional- there would be no choices it would just be a headline service. Never the less the channel could be perchased temporarily to broadcast sporting events or the most requested item on the internet allowing a person to change the content source. They would get the same service yet help reduce the request load by using the redirected source. There could be a feed back feature that the end user could use to send a reciept conformation that didn't require a response but help the data source track use or determine cut off points for useing the feature based upon the amount of use.


CellWriter: Open source handwriting recognition for Linux

Posted by: Anonymous [ip:] on November 12, 2007 12:59 PM
I've been searching for handwriting recognition for 6 months now - just when I gave up one falls in my lap!
Thanks so much for this, and I'm just amazed at how blindingly obvious some areas can be for software development.


promoting linux by way of live CD how to

Posted by: Anonymous [ip:] on November 13, 2007 10:39 PM
Somewere one this site it was suggested to tell someone about linux in the next 3 months as promotion. I would like to suggest using applications that are distributed on a read only live CD. How to care for a pet could be given to animal shelters. There is a lingering suspition that software can be used in a subversive and malicious way. Therefor a product by a publisher may provide a greater sence of reliability. A linux magazine publisher mite work with open souce enthusiasts to creat live CD's distributed either by other topic oriented magazines such as how to exercise, boating safety, skiing, how to book and logistics associated with going to the supper bowl or sporting or entertainment event. The CD's mite be distributed by other publishers, a library of topics and ordering information from the publisher could allow the perchase of box sets. Or distribution by retailers. There mite be a market for a CD made available at a travel shop in a bus, train, airport termenal that had reading material, games, historical info. like a guided tour between destination travel points. High school or colledge students or boy and girl scouts looking for a project to provide a service or suplement a resume or job application, mite offer suggestions and provide research for a given project. Baby sitting reasouce that povides handy forms for emercency info. and contact. Home improvement. DMV test preperation. Standard religious text and clasics from Plato to Mark Twain made available at book and stationary stores and magazine stands or distributed by magazines about reading, liturature, or leisure pursuits- travel magazines found in hotels and transportation termenals. Lake charting and fishing guides distributed by sporting to work for NASA, best proven approaches applied to financial securrity, job skill aquisition and application and job retention and promotion, distribution of government documents ie. tax forms, grant applications, licence or government service provider, contract worker, or job application forms. And so on.


This story has been archived. Comments can no longer be posted.

Tableless layout Validate XHTML 1.0 Strict Validate CSS Powered by Xaraya