Table of Contents
Appendix
Setting environment variables in Windows
To set the environment variable LIPI_ROOT
► Open the properties of "My Computer" from Windows Explorer.
► Go to "Advanced" sheet from property dialog.
► Click on "Environment variables" button and add this new variable under "user variables".
Setting environment variable in Linux
In case of Linux, set the environment variable using the appropriate shell command:
export LIPI_ROOT=/home/testusers/lipi-core-toolkit2.2.0 export LD_LIBRARY_PATH=$LIPI_ROOT/lib
Downloading cabarc.exe
You can download the Microsoft Cabinet SDK from the following link:
http://support.microsoft.com/default.aspx?scid=kb;en-us;310618
After downloading, execute cabsdk.exe and it will prompt for the directory where the files can be extracted. Give any directory and ensure that the bin directory (after extracting) is added to System PATH variable for you to execute cabarc.exe from anywhere.
Perl for Windows
Download Perl from the following link: http://www.activestate.com/Products/ActivePerl/
For install instructions, follow the link:http:''aspn.activestate.com/ASPN/docs/ActivePerl/install.html
Configurable make settings for Windows for VC 6.0
The different configurations that the user can modify for Windows are given below:
| Configurable options | Remarks |
| RELOPT=Release | This flag is used for the final target release option·Release·Debug |
| BUILD=BUILD | This flag is used to build the project.Another option is REBUILD – this flag is used to clean the project every time before building the project. |
| CLEAN=CLEAN | This flag is used for cleaning the project. |
| MSDEV=msdev | This flag is used to compile the VC++6.0 project space. |
Sample ink file
.VERSION 1.0 .HIERARCHY CHARACTER .COORD X Y T .SEGMENT CHARACTER 0 OK "0" .H_LINE 1374 2249 .V_LINE 499 1250 .X_DIM 750 .Y_DIM 874 .X_POINTS_PER_INCH 1000 .Y_POINTS_PER_INCH 1000 .POINTS_PER_SECOND 125 .COMMENT CALIB X: 26 Y: -29 .PEN_DOWN 736 1683 0 733 1684 0 737 1684 0 ..... ..... ..... 1042 1672 0 1044 1669 0 1038 1670 0 .PEN_UP
An ink for character recognition must have the following attributes
► The .HIERARCHY tag should identify it as a CHARACTER
► The stroke indices and the truth corresponding to it should also be written in the ink file.
Example:
.SEGMENT CHARACTER 0 OK "0"
The above mentioned line specify that
► The truth associated with the character 0 is class 0
Sample ink file for runwordrec
An ink for word recognition must have the following attributes
► The .HIERARCHY tag should identify it as a WORD CHARACTER, as opposed to CHARACTER for a shape recognition ink file.
► The stroke indices and the truth corresponding to them should also be written in the ink file.
Example:
.SEGMENT CHARACTER 0 GOOD "0 0 __" .SEGMENT CHARACTER 1,2 GOOD "1 0 __" .SEGMENT CHARACTER 3 GOOD "2 0 __"
The above mentioned lines specify that
► The truth associated with the character with stroke index 0 is class 0
► Stroke index 1 and 2 correspond to class 1
► Stroke index 3 corresponds to class 2
.VERSION 1.0 0 .HIERARCHY WORD CHARACTER .COORD X Y T .SEGMENT WORD .X_POINTS_PER_INCH 2500 .Y_POINTS_PER_INCH 2500 .POINTS_PER_SECOND 1200 .SEGMENT CHARACTER 0 GOOD "0 0 __" .SEGMENT CHARACTER 1,2 GOOD "1 0 __" .SEGMENT CHARACTER 3 GOOD "2 0 __" .PEN_DOWN 3814 182 17184 3816 181 0 3814 181 0 3594 298 0 ... ... ... 3583 260 0 3583 260 0 .PEN_UP .PEN_DOWN 3908 730 2513 3919 716 0 3936 694 0 3955 671 0 ... ... ... 4423 1482 0 4431 1475 0 4433 1466 15632 .PEN_UP .PEN_DOWN 3754 1667 2513 3766 1672 0 3787 1671 0 ... ... ... 5010 1604 0 5105 1606 0 5184 1611 0 5229 1624 17605 .PEN_UP .PEN_DOWN 3763 418 17184 3750 426 0 3735 432 0 ... ... ... 4531 1473 0 4587 1473 25396 .PEN_UP
Configurable make settings for Linux
In the case of Linux, the configurable options are specified in global.mk
| Configurable options | Remarks |
| CC=g++ | GNU compiler used for compiling cpp files |
| LINKLIB=-ldl –lc | Add any standard required libraries, e.g.–lm links math library |
| CFLAGS = -c | To compile in debugging mode add -g to CFLAGS |
| SHFLAGS=-shared –fpic | Flags required to build .so shared object |
Module dependencies on Windows
| Module | Static Library |
| lipiengine | common.lib, utils.lib, shapereccommon.lib, wordreccommon.lib |
| pointfloat | common.lib, utils.lib, featureextractorcommon.lib |
| preproc | common.lib, utils.lib, shapereccommon.lib |
| nn | common.lib, utils.lib, shapereccommon.lib, featureextractorcommon.lib |
| boxfld | common.lib, utils.lib, shapereccommon.lib, featureextractorcommon.lib, wordreccommon.lib |
| imgwriter | common.lib, utils.lib, shapereccommon.lib |
| logger | utils.lib |
| mdv | common.lib, utils.lib |
| runshaperec | common.lib, utils.lib, shapereccommon.lib |
| runwordrec | common.lib, utils.lib, shapereccommon.lib, wordreccommon.lib |
| shaperectst | common.lib, utils.lib, shapereccommon.lib |
| wordrectst | common.lib, utils.lib, wordreccommon.lib |
Module dependencies on Linux
| Module | Static Library |
| lipiengine | common.a, utils.a, shapereccommon.a, wordreccommon.a |
| pointfloat | common.a, utils.a, featureextractorcommon.a |
| preproc | common.a, utils.a, shapereccommon.a |
| nn | common.a, utils.a, shapereccommon.a, featureextractorcommon.a |
| boxfld | common.a, utils.a, shapereccommon.a, featureextractorcommon.a, wordreccommon.a |
| imgwriter | common.a, utils.a, shapereccommon.a |
| logger | utils.a |
| mdv | common.a, utils.a |
| runshaperec | common.a, utils.a, shapereccommon.a |
| runwordrec | common.a, utils.a, shapereccommon.a, wordreccommon.a |
| shaperectst | common.a, utils.a, shapereccommon.a |
| wordrectst | common.a, utils.a, wordreccommon.a// |
Options file for the eval tool
Optionsfile.txt # File containing the results input=/home/user/lipitk/resultfile.txt # Output file to write the accuracy # If not mentioned the output is displayed on the screen output=outputfile.txt # Number of top errors, to be printed in the performance analysis matrix # default value is 5 top_errors=1 # Number of images per row in the HTML file of each class # default value is 10 number_images_row=12 # Number of topchoices to consider for the performance analysis # default value is 1 top_choices=3
Model data header information file
This model data header information file contains the metadata information about the model data file.
Sample model data header information file
…
| Module | Possible values | Description |
| SCRIPT | TAMIL, DEVANAGARI, GENERAL | Name of the script/language on which this model data created |
| DATASETNAME | String field | A string holding the name of the dataset.For example: DATASETNAME=SchoolData |
| COMMENT | String field | Free field to store any text |
References
[1] Lipitk: A Generic Toolkit for Online Handwriting Recognition, Sriganesh Madhvanath, DeepuVijayasenan and Thanigai Murugan Kadiresan, Proceedings of the 10th International Workshop on Frontiers in Handwriting Recognition (IWFHR-10), La Baule, France, Oct 2006. [2] The Carnegie Mellon Sphinx Project, http://cmusphinx.sourceforge.net. [3] The Festival Speech Synthesis System, http://www.cstr.ed.ac.uk/projects/festival/. [4] Shanmugham, S., Monaco, P. and B. Eberman, "MRCP: Media Resource Control Protocol", Internet Draft draft-shanmugham- mrcp-05, January 2004 [5] Rosetta - Multistroke / Full Word Handwriting Recognition for X, http://www.handhelds.org/project/rosetta/ [6] XStroke: Full-screen Gesture Recognition for X, [7] WayV Project, http://www.stressbunny.com/wayv/ [8] UNIPEN 1.0 Format Definition, http://www.unipen.org/pages/5/index.htm [9] InkML – The Digital Ink Markup Language, www.w3.org/2002/mmi/ink [10] UPX: A New XML Representation for Annotated Datasets of Online Handwriting Data, Mudit Agrawal, Kalika Bali, Sriganesh Madhvanath, Louis Vuurpijl, 8th International Conference on Document Analysis and Recognition (ICDAR 2005), Seoul, Korea, Aug 29 - Sept 1, 2005. [11] HRE API: A Portable Handwriting Recognition Engine Interface, http://playground.sun.com/pub/multimedia/handwriting/hre.html
Glossary
| Project | lipi-core-toolkit parlance for a grouping of recognizer configurations, targeted at a particular shape or word recognition problem. |
| Profile | Specific set of configuration files associated with, and generally addressing a specific aspect of, a particular Project. Specific Profiles of the same Project may be created for specific writers, specific datasets, and so forth. |
| Lipitk | Lipi Toolkit |
| HWR | Hand-Writing Recognition |
| DLL | Dynamic Link Library - On Windows platforms, a library linked dynamically as needed |
| SO | Shared Object (Linux) - On Linux platforms, a library linked dynamically as needed |
| stroke | The sequence of pen points between two consecutive pen events, pen down and pen up |
| tar | A file compression format and utility generally found on UNIX platforms; the act of compressing a file using this utility |
| untar | A utility for uncompressing files compressed using tar, generally found on UNIX platforms; the act of uncompressing a tar’d file using this utility |
| tarball or tar file | A file in the tar format, generally a compressed collection of files |
| UNIPEN 1.0 | A standard format from the International Unipen Foundation (http://www.unipen.org/) to store on-line handwriting data (as digital ink) and its annotations. |