% cd <somedir> % wget http://www.holst.ca/Conjecture/docs/release/Conjecture-current.tgz % tar xzvf Conjecture-current.tgz % export CONJECTUREROOT=<somedir>/Conjecture-<version>
svn
installed on your platform):
% cd <somedir> % svn co svn://www.holst.ca/Conjecture % export CONJECTUREROOT=<somedir>/Conjecture
The Conjecture environment currently requires the following process to install:
# Using bourne-based shells % export CONJECTUREROOT=<somedir>/Conjecture-<version> # official release or % export CONJECTUREROOT=<somedir>/Conjecture # svn repository # Using csh-based shells % setenv CONJECTUREROOT <somedir>/Conjecture-<version> # official release or % setenv CONJECTUREROOT <somedir>/Conjecture # svn repository
Note: Most Conjecture makefile targets and scripts require CONJECTUREROOT to be set, so it should be placed in your .bashrc/.cshrc files to ensure it is always initialized.
% cd $CONJECTUREROOT % make
% cd $CONJECTUREROOT % make verify
NOTE: A autoconf
compilation environment
will be provided in a future release.
Conjecture has the same aim as every other OCR (the identification of unicode characters from graphical images). However, the philosophy behind its implementation differs from most other projects. It is based on the observation that no one strategy for character recognition will be optimal, given the vast degree of variation possible in input (differing fonts, font sizes, noise levels, orientation angles, existence of interspersed text and pictures, and numerous other issues that affect OCR accuracy). One strategy might excel for one document, while a very different strategy may be better for another document. Most existing open-source OCRs have a single strategy for solving the overall problem. Conjecture is meant to be the opposite - a repository for as many implementations/strategies as possible, for as many different ocr-related issues as possible.
The design of Conjecture has the following goals in mind:
Support for many strategies for implementing many different issues related to OCR.
Interaction with existing OCRs
Programmer Ease-Of-Customization
Conjecture is an object-oriented framework designed from the beginning to allow for intuitive, incremental customization at many different levels.
As with any framework, clients of the framework (individuals interested in improving open-source OCR technology) customize the framework by creating a subclass of one or more of the classes provided by the framework.
The framework is divided into four primary categories of classes: kernel classes, utility classes, OCR classes, and Module classes.
Kernel classes provide functionality common to any OCR implementation (the concepts of pages, lines, words, glyphs, images, coordinates, etc.)
Utility classes provide auxillary functionality like low-level timing, low-level bit manipulation, interaction with the outside world, etc.
Each OCR classes represents a complete solution to the OCR problem, from image input and filtering, to image segmentation to glyph identification, to propertly formatted output. These classes almost always rely on Module classes.
Conjecture identifies numerous commonly-occuring issues related to OCR and formalizes them into a collection of Modules. Each Module represents a single issue that needs to be addressed, and each Module may (or may not) be further divided into sub-modules. Each Module also represents the root of an entire hierarchy of classes, with subclasses representing strategies for implementing the issue identified by the Module.
End-User Ease-Of-Use
Support for highly efficient implementations
An advanced assessement infrastructure
Maintenance of a large collection of input images to be used in testing OCR implementations.
The ability to determine at-a-glance whether a particular change to the codebase has positively or negatively affected the output produced (keeping in mind that Conjecture represents not just one OCR, but a unlimited number of OCRs. Testing the effect of a change using a single input image using a single implementation does not begin to address the potential of unexpected side-effects; the assessment infrastructure addresses this is.
The ability to determine the recognition accuracy of each supported OCR when applied to each image in the entire image database.
Advanced support for "debugging" - being able to determine why a particular OCR is misidentifying a particular glyph in an intuitive, easy-to-use, easy-to-understand fashion.
Individuals can interact with the Conjecture framework at many different levels: