Skip to content

Simple text editor app for Qtopia. Built in handwriting recognition using the AUCR library, a tiny, highly efficient ANSI C89 library utilizing a fully discretized, activity based on-line character recognition algorithm.

Notifications You must be signed in to change notification settings

barrycburton/aucrEdit

Repository files navigation

aucrEdit is a Qtopia program that allows users to edit text files using handwritten character recognition, as well as providing an interface to edit custom alphabets, which are then used in recognition. aucrEdit will open any plain text file, and can edit the text and save the text to a file. aucrEdit uses the AUCR API for dealing with characters, alphabets, and recognition. aucrEdit will open any alphabet file created by the AUCR API, and can then edit the alphabet and save the alphabet to a file. The aucrEdit installer provides a default alphabet file which may be used immediately, or aucrEdit:Alphabet may be used to view the characters to see how they should be drawn, or aucrEdit:Alphabet may be used to modify the characters, such that user shows the application how they would like to draw the characters. When aucrEdit is launched, it will automatically load the text and alphabet files corresponding to the most recently saved text and alphabet files. When creating custom alphabets, keep in mind that the more similar characters look to each other when you draw them, the greater the chances of inaccurate recognition become.

AUCR is a novel single character, online handwriting recognition algorithm, designed for resource poor embedded devices. It is hoped that the new methods introduced by AUCR will allow higher levels of recognition accuracy, while at the same time offering lower computational costs, such that cheaper devices may take advantage of handwriting recognition. The AUCR algorithm is based on the idea of elastic structural matching, which views each character as a stroke, or curve, which can be divided into finitely many segments, each of which having a specific general direction. The cornerstone of the AUCR algorithm, however, is a new metric, called activity, which provides a unique, compressed measure of the various directions contained over either the whole stroke of the character, or some multi-segment sub-stroke of the character. The activity metric overcomes many of the shortcomings found in previous recognition algorithms and allows the recognition engine to be completely alphabet independent, such that any user specified alphabet may be used with the algorithm.

aucrEdit uses a new implementation of the AUCR algorithm. This implementation is written in standard C (ANSI C89 to be precise), and is completely fixed point, such that it can run on small embedded processors which do not feature a floating point unit. Rather than using floating point emulation functions which perform floating point operations in software on top of fixed point hardware, all of the algorithms used were designed from the ground up to use only fixed point. The result of this is code which is much more efficient on any platform and which is perfectly happy on very small, slow, processors which completely lack floating point operations. Each character in an alphabet is described by a string of direction values followed by a string of activity values. The number of directions and the number activity measures is completely arbitrary, and while all characters in a particular alphabet must have the same number of directions and activity measures, for a new alphabet, any number of either may be used. In addition to this, any arbitrary number of distinct directions may be used. This is to say that an alphabet may choose to represent the infinitely many directions found between 0 and 360 degrees as any number of finite directional regions. aucrEdit creates new alphabets which represent directions with 16 different directional regions and which represent characters with directions for 64 segments and activity measures for 7 different sub-strokes of the character.

aucrEdit:Alphabet provides an interface to create, edit, and save AUCR API character alphabets. It allows each character to have up to 3 drawings, which means that the alphabet itself can contain up to 3 separate instances of each character, which increases the recognition accuracy because 3 instances will have a better chance of containing all of the quirks in an individual's style of drawing of a letter. The top 3 boxes allow the 3 different instances of whatever character is selected. The "Character:" field shows what the currently selected character is. The keyboard allows different keys to be toggled, selecting different characters to edit. Please note that the shift and caps keys do not select a character for editing, but rather alter the keyboard, changing the available keys, so that a different set of characters is available for selection. These keys mimic the functionality of their analogues on a normal keyboard. To use the editor, simply select the character you would like to alter/provide a representation for, then make the appropriate drawings in the character editor boxes.

The file menu contains entries for creating a new alphabet file, which will have no characters entered, opening an alphabet file, which may be any alphabet file created by the AUCR API, saving the currently open alphabet if it has been edited, and saving the currently open alphabet as a different file. You can also choose to quit the application, which has the same functionality as pressing the x in the top right corner. None of the entries in the Edit menu apply to editing alphabets. The view menu has a"Text Editor" entry, which switches the application into aucrEdit:Text mode.

aucrEdit:Text is a standard plain text editor, much the same as Notepad or Simpletext, with the exception of the small rectangular region found at the bottom of the window. This region allows characters to be drawn, and then using the currently loaded alphabet, recognized, and then inserted into the text field. Keep in mind that the recognition algorithm finds the character in the alphabet which is closest to the character drawn, so it will not recognize a character which is not in the alphabet. Also keep in mind the alphabet used for recognition will be the currently loaded alphabet, which will contain any changes made since opening the alphabet, even if the alphabet has not been saved.

For the most part the possible operations and menu entries are fairly self explanatory, so only a quick overview will be given. Under the file menu, you can create a new text file, open an existing file, save an edited file, and save the open file as another name. You can also do the same operations to an alphabet, but those operations are covered in the aucrEdit:Alphabet section. You can also choose to quit the application, which has the same functionality as pressing the x in the top right corner. The edit menu features "cut", "copy", "paste", "delete", and "select" all entries, which correspond to normal text editing operations. The view menu has an "Alphabet Editor" entry for switching the mode to aucrEdit:Alphabet, as well as an "Always Clear" toggle entry, which is either enabled or disabled. If always clear is enabled, a check mark appears beside the text. Clicking on the "Always Clear" entry toggles between enabled and disabled. If always clear is enabled, the recognition area will clear every time a new character is started, so that you only see the most recent character drawn. When always clear is disabled, the recognition area is only cleared when a new character is to the left of the previous character. This allows the characters for entire words to be visible in the recognition area at time, which may help some users in remembering which character in word they are currently writing. The setting for "Always Clear" is saved when the application is closed, so that when the application is started again it will be in the same mode as when it was closed.

About

Simple text editor app for Qtopia. Built in handwriting recognition using the AUCR library, a tiny, highly efficient ANSI C89 library utilizing a fully discretized, activity based on-line character recognition algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published