Tesseract  3.02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
tesseract::TessBaseAPI Class Reference

#include <baseapi.h>

Public Member Functions

 TessBaseAPI ()
 
virtual ~TessBaseAPI ()
 
void SetInputName (const char *name)
 
void SetOutputName (const char *name)
 
bool SetVariable (const char *name, const char *value)
 
bool SetDebugVariable (const char *name, const char *value)
 
bool GetIntVariable (const char *name, int *value) const
 
bool GetBoolVariable (const char *name, bool *value) const
 
bool GetDoubleVariable (const char *name, double *value) const
 
const char * GetStringVariable (const char *name) const
 
void PrintVariables (FILE *fp) const
 
bool GetVariableAsString (const char *name, STRING *val)
 
int Init (const char *datapath, const char *language, OcrEngineMode mode, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_non_debug_params)
 
int Init (const char *datapath, const char *language, OcrEngineMode oem)
 
int Init (const char *datapath, const char *language)
 
const char * GetInitLanguagesAsString () const
 
void GetLoadedLanguagesAsVector (GenericVector< STRING > *langs) const
 
void GetAvailableLanguagesAsVector (GenericVector< STRING > *langs) const
 
int InitLangMod (const char *datapath, const char *language)
 
void InitForAnalysePage ()
 
void ReadConfigFile (const char *filename)
 
void ReadDebugConfigFile (const char *filename)
 
void SetPageSegMode (PageSegMode mode)
 
PageSegMode GetPageSegMode () const
 
char * TesseractRect (const unsigned char *imagedata, int bytes_per_pixel, int bytes_per_line, int left, int top, int width, int height)
 
void ClearAdaptiveClassifier ()
 
void SetImage (const unsigned char *imagedata, int width, int height, int bytes_per_pixel, int bytes_per_line)
 
void SetImage (const Pix *pix)
 
void SetSourceResolution (int ppi)
 
void SetRectangle (int left, int top, int width, int height)
 
void SetThresholder (ImageThresholder *thresholder)
 
Pix * GetThresholdedImage ()
 
Boxa * GetRegions (Pixa **pixa)
 
Boxa * GetTextlines (Pixa **pixa, int **blockids)
 
Boxa * GetStrips (Pixa **pixa, int **blockids)
 
Boxa * GetWords (Pixa **pixa)
 
Boxa * GetConnectedComponents (Pixa **cc)
 
Boxa * GetComponentImages (PageIteratorLevel level, bool text_only, Pixa **pixa, int **blockids)
 
int GetThresholdedImageScaleFactor () const
 
void DumpPGM (const char *filename)
 
PageIteratorAnalyseLayout ()
 
int Recognize (ETEXT_DESC *monitor)
 
int RecognizeForChopTest (ETEXT_DESC *monitor)
 
bool ProcessPages (const char *filename, const char *retry_config, int timeout_millisec, STRING *text_out)
 
bool ProcessPage (Pix *pix, int page_index, const char *filename, const char *retry_config, int timeout_millisec, STRING *text_out)
 
ResultIteratorGetIterator ()
 
MutableIteratorGetMutableIterator ()
 
char * GetUTF8Text ()
 
char * GetHOCRText (int page_number)
 
char * GetBoxText (int page_number)
 
char * GetUNLVText ()
 
int MeanTextConf ()
 
int * AllWordConfidences ()
 
bool AdaptToWordStr (PageSegMode mode, const char *wordstr)
 
void Clear ()
 
void End ()
 
int IsValidWord (const char *word)
 
bool GetTextDirection (int *out_offset, float *out_slope)
 
void SetDictFunc (DictFunc f)
 
void SetProbabilityInContextFunc (ProbabilityInContextFunc f)
 
void SetFillLatticeFunc (FillLatticeFunc f)
 
bool DetectOS (OSResults *)
 
void GetFeaturesForBlob (TBLOB *blob, const DENORM &denorm, INT_FEATURE_ARRAY int_features, int *num_features, int *FeatureOutlineIndex)
 
void RunAdaptiveClassifier (TBLOB *blob, const DENORM &denorm, int num_max_matches, int *unichar_ids, float *ratings, int *num_matches_returned)
 
const char * GetUnichar (int unichar_id)
 
const DawgGetDawg (int i) const
 
int NumDawgs () const
 
Tesseract *const tesseract () const
 
OcrEngineMode const oem () const
 
void InitTruthCallback (TruthCallback *cb)
 
CubeRecoContextGetCubeRecoContext () const
 
void set_min_orientation_margin (double margin)
 
void GetBlockTextOrientations (int **block_orientation, bool **vertical_writing)
 
BLOCK_LIST * FindLinesCreateBlockList ()
 

Static Public Member Functions

static const char * Version ()
 
static ROWFindRowForBox (BLOCK_LIST *blocks, int left, int top, int right, int bottom)
 
static ROWMakeTessOCRRow (float baseline, float xheight, float descender, float ascender)
 
static TBLOBMakeTBLOB (Pix *pix)
 
static void NormalizeTBLOB (TBLOB *tblob, ROW *row, bool numeric_mode, DENORM *denorm)
 
static void DeleteBlockList (BLOCK_LIST *block_list)
 

Protected Member Functions

TESS_LOCAL bool InternalSetImage ()
 
virtual TESS_LOCAL void Threshold (Pix **pix)
 
TESS_LOCAL int FindLines ()
 
TESS_LOCAL void ClearResults ()
 
TESS_LOCAL LTRResultIteratorGetLTRIterator ()
 
TESS_LOCAL int TextLength (int *blob_count)
 
TESS_LOCAL void AdaptToCharacter (const char *unichar_repr, int length, float baseline, float xheight, float descender, float ascender)
 
TESS_LOCAL PAGE_RESRecognitionPass1 (BLOCK_LIST *block_list)
 
TESS_LOCAL PAGE_RESRecognitionPass2 (BLOCK_LIST *block_list, PAGE_RES *pass1_result)
 
TESS_LOCAL void DetectParagraphs (bool after_text_recognition)
 
TESS_LOCAL const PAGE_RESGetPageRes () const
 

Static Protected Member Functions

static TESS_LOCAL int TesseractExtractResult (char **text, int **lengths, float **costs, int **x0, int **y0, int **x1, int **y1, PAGE_RES *page_res)
 

Protected Attributes

Tesseracttesseract_
 The underlying data object. More...
 
Tesseractosd_tesseract_
 For orientation & script detection. More...
 
EquationDetectequ_detect_
 The equation detector. More...
 
ImageThresholderthresholder_
 Image thresholding module. More...
 
GenericVector< ParagraphModel * > * paragraph_models_
 
BLOCK_LIST * block_list_
 The page layout. More...
 
PAGE_RESpage_res_
 The page-level data. More...
 
STRINGinput_file_
 Name used by training code. More...
 
STRINGoutput_file_
 Name used by debug code. More...
 
STRINGdatapath_
 Current location of tessdata. More...
 
STRINGlanguage_
 Last initialized language. More...
 
OcrEngineMode last_oem_requested_
 Last ocr language mode requested. More...
 
bool recognition_done_
 page_res_ contains recognition data. More...
 
TruthCallbacktruth_cb_
 
int rect_left_
 
int rect_top_
 
int rect_width_
 
int rect_height_
 
int image_width_
 
int image_height_
 

Detailed Description

Base class for all tesseract APIs. Specific classes can add ability to work on different inputs or produce different outputs. This class is mostly an interface layer on top of the Tesseract instance class to hide the data types so that users of this class don't have to include any other Tesseract headers.

Definition at line 102 of file baseapi.h.

Constructor & Destructor Documentation

tesseract::TessBaseAPI::TessBaseAPI ( )

Definition at line 101 of file baseapi.cpp.

102  : tesseract_(NULL),
104  equ_detect_(NULL),
105  // Thresholder is initialized to NULL here, but will be set before use by:
106  // A constructor of a derived API, SetThresholder(), or
107  // created implicitly when used in InternalSetImage.
110  block_list_(NULL),
111  page_res_(NULL),
112  input_file_(NULL),
114  datapath_(NULL),
115  language_(NULL),
117  recognition_done_(false),
118  truth_cb_(NULL),
120  image_width_(0), image_height_(0) {
121 }
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:766
EquationDetect * equ_detect_
The equation detector.
Definition: baseapi.h:763
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:764
STRING * input_file_
Name used by training code.
Definition: baseapi.h:768
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
OcrEngineMode last_oem_requested_
Last ocr language mode requested.
Definition: baseapi.h:772
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:770
GenericVector< ParagraphModel * > * paragraph_models_
Definition: baseapi.h:765
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:769
TruthCallback * truth_cb_
Definition: baseapi.h:774
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:767
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:773
Tesseract * osd_tesseract_
For orientation & script detection.
Definition: baseapi.h:762
STRING * language_
Last initialized language.
Definition: baseapi.h:771
tesseract::TessBaseAPI::~TessBaseAPI ( )
virtual

Definition at line 123 of file baseapi.cpp.

123  {
124  End();
125 }

Member Function Documentation

void tesseract::TessBaseAPI::ClearAdaptiveClassifier ( )

Call between pages or documents etc to free up memory and forget adaptive data.

Definition at line 419 of file baseapi.cpp.

419  {
420  if (tesseract_ == NULL)
421  return;
424 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
void tesseract::TessBaseAPI::ClearResults ( )
protected

Delete the pageres and block list ready for a new page.

Delete the pageres and clear the block list ready for a new page.

Definition at line 1699 of file baseapi.cpp.

1699  {
1700  if (tesseract_ != NULL) {
1701  tesseract_->Clear();
1702  }
1703  if (page_res_ != NULL) {
1704  delete page_res_;
1705  page_res_ = NULL;
1706  }
1707  recognition_done_ = false;
1708  if (block_list_ == NULL)
1709  block_list_ = new BLOCK_LIST;
1710  else
1711  block_list_->clear();
1712  if (paragraph_models_ != NULL) {
1714  delete paragraph_models_;
1716  }
1717 }
void delete_data_pointers()
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:766
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
GenericVector< ParagraphModel * > * paragraph_models_
Definition: baseapi.h:765
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:767
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:773
int tesseract::TessBaseAPI::FindLines ( )
protected

Find lines from the image making the BLOCK_LIST.

Returns
0 on success.

Find lines from the image making the BLOCK_LIST.

Definition at line 1636 of file baseapi.cpp.

1636  {
1637  if (thresholder_ == NULL || thresholder_->IsEmpty()) {
1638  tprintf("Please call SetImage before attempting recognition.");
1639  return -1;
1640  }
1641  if (recognition_done_)
1642  ClearResults();
1643  if (!block_list_->empty()) {
1644  return 0;
1645  }
1646  if (tesseract_ == NULL) {
1647  tesseract_ = new Tesseract;
1649  }
1650  if (tesseract_->pix_binary() == NULL)
1652  if (tesseract_->ImageWidth() > MAX_INT16 ||
1654  tprintf("Image too large: (%d, %d)\n",
1656  return -1;
1657  }
1658 
1660 
1662  if (equ_detect_ == NULL && datapath_ != NULL) {
1663  equ_detect_ = new EquationDetect(datapath_->string(), NULL);
1664  }
1666  }
1667 
1668  Tesseract* osd_tess = osd_tesseract_;
1669  OSResults osr;
1670  if (PSM_OSD_ENABLED(tesseract_->tessedit_pageseg_mode) && osd_tess == NULL) {
1671  if (strcmp(language_->string(), "osd") == 0) {
1672  osd_tess = tesseract_;
1673  } else {
1674  osd_tesseract_ = new Tesseract;
1677  NULL, 0, NULL, NULL, false) == 0) {
1678  osd_tess = osd_tesseract_;
1681  } else {
1682  tprintf("Warning: Auto orientation and script detection requested,"
1683  " but osd language failed to load\n");
1684  delete osd_tesseract_;
1685  osd_tesseract_ = NULL;
1686  }
1687  }
1688  }
1689 
1690  if (tesseract_->SegmentPage(input_file_, block_list_, osd_tess, &osr) < 0)
1691  return -1;
1692  // If Devanagari is being recognized, we use different images for page seg
1693  // and for OCR.
1694  tesseract_->PrepareForTessOCR(block_list_, osd_tess, &osr);
1695  return 0;
1696 }
int ImageHeight() const
#define PSM_OSD_ENABLED(pageseg_mode)
Definition: publictypes.h:170
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:766
EquationDetect * equ_detect_
The equation detector.
Definition: baseapi.h:763
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:764
STRING * input_file_
Name used by training code.
Definition: baseapi.h:768
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
void InitAdaptiveClassifier(bool load_pre_trained_templates)
Definition: adaptmatch.cpp:545
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:770
bool IsEmpty() const
Return true if no image has been set.
Definition: thresholder.cpp:54
void set_source_resolution(int ppi)
int GetSourceYResolution() const
Definition: thresholder.h:90
void PrepareForTessOCR(BLOCK_LIST *block_list, Tesseract *osd_tess, OSResults *osr)
void SetEquationDetect(EquationDetect *detector)
const char * string() const
Definition: strngs.cpp:156
int init_tesseract(const char *arg0, const char *textbase, const char *language, OcrEngineMode oem, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_init_params)
Definition: tessedit.cpp:270
DLLSYM void tprintf(const char *format,...)
Definition: tprintf.cpp:41
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:773
TESS_LOCAL void ClearResults()
Definition: baseapi.cpp:1699
Tesseract * osd_tesseract_
For orientation & script detection.
Definition: baseapi.h:762
virtual TESS_LOCAL void Threshold(Pix **pix)
Definition: baseapi.cpp:1603
int ImageWidth() const
#define MAX_INT16
Definition: host.h:119
int SegmentPage(const STRING *input_file, BLOCK_LIST *blocks, Tesseract *osd_tess, OSResults *osr)
STRING * language_
Last initialized language.
Definition: baseapi.h:771
Pix * pix_binary() const
void tesseract::TessBaseAPI::GetAvailableLanguagesAsVector ( GenericVector< STRING > *  langs) const

Returns the available languages in the vector of STRINGs.

Definition at line 293 of file baseapi.cpp.

294  {
295  langs->clear();
296  if (tesseract_ != NULL) {
297  STRING pattern = tesseract_->datadir + "/*." + kTrainedDataSuffix;
298 #ifdef _WIN32
299  char fname[_MAX_FNAME];
300  WIN32_FIND_DATA data;
301  BOOL result = TRUE;
302  HANDLE handle = FindFirstFile(pattern.string(), &data);
303  if (handle != INVALID_HANDLE_VALUE) {
304  for (; result; result = FindNextFile(handle, &data)) {
305  _splitpath(data.cFileName, NULL, NULL, fname, NULL);
306  langs->push_back(STRING(fname));
307  }
308  FindClose(handle);
309  }
310 #else
311  glob_t pglob;
312  char **paths;
313  char *path, *dot;
314  if (glob(pattern.string(), 0, NULL, &pglob) == 0) {
315  for (paths = pglob.gl_pathv; *paths != NULL; paths++) {
316  path = basename(*paths);
317  if ((dot = strchr(path, '.'))) {
318  *dot = '\0';
319  langs->push_back(STRING(path));
320  }
321  }
322  globfree(&pglob);
323  }
324 #endif
325  }
326 }
STRING datadir
Definition: ccutil.h:67
virtual void clear()
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
int push_back(T object)
const char * string() const
Definition: strngs.cpp:156
Definition: strngs.h:40
#define BOOL
Definition: capi.h:26
#define TRUE
Definition: capi.h:27
bool tesseract::TessBaseAPI::GetBoolVariable ( const char *  name,
bool *  value 
) const

Definition at line 173 of file baseapi.cpp.

173  {
174  BoolParam *p = ParamUtils::FindParam<BoolParam>(
176  if (p == NULL) return false;
177  *value = (BOOL8)(*p);
178  return true;
179 }
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:35
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
unsigned char BOOL8
Definition: host.h:113
#define NULL
Definition: host.h:144
GenericVector< BoolParam * > bool_params
Definition: params.h:45
ParamsVectors * params()
Definition: ccutil.h:65
bool tesseract::TessBaseAPI::GetDoubleVariable ( const char *  name,
double *  value 
) const

Definition at line 187 of file baseapi.cpp.

187  {
188  DoubleParam *p = ParamUtils::FindParam<DoubleParam>(
190  if (p == NULL) return false;
191  *value = (double)(*p);
192  return true;
193 }
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:35
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
GenericVector< DoubleParam * > double_params
Definition: params.h:47
ParamsVectors * params()
Definition: ccutil.h:65
const char * tesseract::TessBaseAPI::GetInitLanguagesAsString ( ) const

Returns the languages string used in the last valid initialization. If the last initialization specified "deu+hin" then that will be returned. If hin loaded eng automatically as well, then that will not be included in this list. To find the languages actually loaded use GetLoadedLanguagesAsVector. The returned string should NOT be deleted.

Definition at line 269 of file baseapi.cpp.

269  {
270  return (language_ == NULL || language_->string() == NULL) ?
271  "" : language_->string();
272 }
#define NULL
Definition: host.h:144
const char * string() const
Definition: strngs.cpp:156
STRING * language_
Last initialized language.
Definition: baseapi.h:771
bool tesseract::TessBaseAPI::GetIntVariable ( const char *  name,
int *  value 
) const

Returns true if the parameter was found among Tesseract parameters. Fills in value with the value of the parameter.

Definition at line 165 of file baseapi.cpp.

165  {
166  IntParam *p = ParamUtils::FindParam<IntParam>(
168  if (p == NULL) return false;
169  *value = (inT32)(*p);
170  return true;
171 }
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:35
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
int inT32
Definition: host.h:102
GenericVector< IntParam * > int_params
Definition: params.h:44
ParamsVectors * params()
Definition: ccutil.h:65
void tesseract::TessBaseAPI::GetLoadedLanguagesAsVector ( GenericVector< STRING > *  langs) const

Returns the loaded languages in the vector of STRINGs. Includes all languages loaded by the last Init, including those loaded as dependencies of other loaded languages.

Definition at line 279 of file baseapi.cpp.

280  {
281  langs->clear();
282  if (tesseract_ != NULL) {
283  langs->push_back(tesseract_->lang);
284  int num_subs = tesseract_->num_sub_langs();
285  for (int i = 0; i < num_subs; ++i)
286  langs->push_back(tesseract_->get_sub_lang(i)->lang);
287  }
288 }
int num_sub_langs() const
virtual void clear()
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
int push_back(T object)
STRING lang
Definition: ccutil.h:69
Tesseract * get_sub_lang(int index) const
LTRResultIterator * tesseract::TessBaseAPI::GetLTRIterator ( )
protected

Return an LTR Result Iterator – used only for training, as we really want to ignore all BiDi smarts at that point. delete once you're done with it.

Get a left-to-right iterator to the results of LayoutAnalysis and/or Recognize. The returned iterator must be deleted after use.

Definition at line 973 of file baseapi.cpp.

973  {
974  if (tesseract_ == NULL || page_res_ == NULL)
975  return NULL;
976  return new LTRResultIterator(
980 }
int GetScaledYResolution() const
Definition: thresholder.h:93
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:764
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:767
PageSegMode tesseract::TessBaseAPI::GetPageSegMode ( ) const

Return the current page segmentation mode.

Definition at line 377 of file baseapi.cpp.

377  {
378  if (tesseract_ == NULL)
379  return PSM_SINGLE_BLOCK;
380  return static_cast<PageSegMode>(
381  static_cast<int>(tesseract_->tessedit_pageseg_mode));
382 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
Assume a single uniform block of text. (Default.)
Definition: publictypes.h:156
const char * tesseract::TessBaseAPI::GetStringVariable ( const char *  name) const

Returns the pointer to the string that represents the value of the parameter if it was found among Tesseract parameters.

Definition at line 181 of file baseapi.cpp.

181  {
182  StringParam *p = ParamUtils::FindParam<StringParam>(
184  return (p != NULL) ? p->string() : NULL;
185 }
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:35
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
GenericVector< StringParam * > string_params
Definition: params.h:46
ParamsVectors * params()
Definition: ccutil.h:65
bool tesseract::TessBaseAPI::GetVariableAsString ( const char *  name,
STRING val 
)

Get value of named variable as a string, if it exists.

Definition at line 196 of file baseapi.cpp.

196  {
197  return ParamUtils::GetParamAsString(name, tesseract_->params(), val);
198 }
static bool GetParamAsString(const char *name, const ParamsVectors *member_params, STRING *value)
Definition: params.cpp:150
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
ParamsVectors * params()
Definition: ccutil.h:65
int tesseract::TessBaseAPI::Init ( const char *  datapath,
const char *  language,
OcrEngineMode  oem,
char **  configs,
int  configs_size,
const GenericVector< STRING > *  vars_vec,
const GenericVector< STRING > *  vars_values,
bool  set_only_non_debug_params 
)

Instances are now mostly thread-safe and totally independent, but some global parameters remain. Basically it is safe to use multiple TessBaseAPIs in different threads in parallel, UNLESS: you use SetVariable on some of the Params in classify and textord. If you do, then the effect will be to change it for all your instances.

Start tesseract. Returns zero on success and -1 on failure. NOTE that the only members that may be called before Init are those listed above here in the class definition.

The datapath must be the name of the parent directory of tessdata and must end in / . Any name after the last / will be stripped. The language is (usually) an ISO 639-3 string or NULL will default to eng. It is entirely safe (and eventually will be efficient too) to call Init multiple times on the same instance to change language, or just to reset the classifier. The language may be a string of the form [~]<lang>[+[~]<lang>]* indicating that multiple languages are to be loaded. Eg hin+eng will load Hindi and English. Languages may specify internally that they want to be loaded with one or more other languages, so the ~ sign is available to override that. Eg if hin were set to load eng by default, then hin+~eng would force loading only hin. The number of loaded languages is limited only by memory, with the caveat that loading additional languages will impact both speed and accuracy, as there is more work to do to decide on the applicable language, and there is more chance of hallucinating incorrect words. WARNING: On changing languages, all Tesseract parameters are reset back to their default values. (Which may vary between languages.) If you have a rare need to set a Variable that controls initialization for a second call to Init you should explicitly call End() and then use SetVariable before Init. This is only a very rare use case, since there are very few uses that require any parameters to be set before Init.

If set_only_non_debug_params is true, only params that do not contain "debug" in the name will be set.

The datapath must be the name of the data directory (no ending /) or some other file in which the data directory resides (for instance argv[0].) The language is (usually) an ISO 639-3 string or NULL will default to eng. If numeric_mode is true, then only digits and Roman numerals will be returned.

Returns
: 0 on success and -1 on initialization failure.

Definition at line 213 of file baseapi.cpp.

217  {
218  // Default language is "eng".
219  if (language == NULL) language = "eng";
220  // If the datapath, OcrEngineMode or the language have changed - start again.
221  // Note that the language_ field stores the last requested language that was
222  // initialized successfully, while tesseract_->lang stores the language
223  // actually used. They differ only if the requested language was NULL, in
224  // which case tesseract_->lang is set to the Tesseract default ("eng").
225  if (tesseract_ != NULL &&
226  (datapath_ == NULL || language_ == NULL ||
227  *datapath_ != datapath || last_oem_requested_ != oem ||
228  (*language_ != language && tesseract_->lang != language))) {
229  delete tesseract_;
230  tesseract_ = NULL;
231  }
232 
233  bool reset_classifier = true;
234  if (tesseract_ == NULL) {
235  reset_classifier = false;
236  tesseract_ = new Tesseract;
238  datapath, output_file_ != NULL ? output_file_->string() : NULL,
239  language, oem, configs, configs_size, vars_vec, vars_values,
240  set_only_non_debug_params) != 0) {
241  return -1;
242  }
243  }
244  // Update datapath and language requested for the last valid initialization.
245  if (datapath_ == NULL)
246  datapath_ = new STRING(datapath);
247  else
248  *datapath_ = datapath;
249  if (language_ == NULL)
250  language_ = new STRING(language);
251  else
252  *language_ = language;
254 
255  // For same language and datapath, just reset the adaptive classifier.
256  if (reset_classifier) tesseract_->ResetAdaptiveClassifier();
257 
258  return 0;
259 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
OcrEngineMode last_oem_requested_
Last ocr language mode requested.
Definition: baseapi.h:772
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:770
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:769
OcrEngineMode const oem() const
Definition: baseapi.h:657
const char * string() const
Definition: strngs.cpp:156
int init_tesseract(const char *arg0, const char *textbase, const char *language, OcrEngineMode oem, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_init_params)
Definition: tessedit.cpp:270
STRING lang
Definition: ccutil.h:69
Definition: strngs.h:40
STRING * language_
Last initialized language.
Definition: baseapi.h:771
int tesseract::TessBaseAPI::Init ( const char *  datapath,
const char *  language,
OcrEngineMode  oem 
)
inline

Definition at line 206 of file baseapi.h.

206  {
207  return Init(datapath, language, oem, NULL, 0, NULL, NULL, false);
208  }
#define NULL
Definition: host.h:144
int Init(const char *datapath, const char *language, OcrEngineMode mode, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_non_debug_params)
Definition: baseapi.cpp:213
OcrEngineMode const oem() const
Definition: baseapi.h:657
int tesseract::TessBaseAPI::Init ( const char *  datapath,
const char *  language 
)
inline

Definition at line 209 of file baseapi.h.

209  {
210  return Init(datapath, language, OEM_DEFAULT, NULL, 0, NULL, NULL, false);
211  }
#define NULL
Definition: host.h:144
int Init(const char *datapath, const char *language, OcrEngineMode mode, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_non_debug_params)
Definition: baseapi.cpp:213
void tesseract::TessBaseAPI::InitForAnalysePage ( )

Init only for page layout analysis. Use only for calls to SetImage and AnalysePage. Calls that attempt recognition will generate an error.

Definition at line 344 of file baseapi.cpp.

344  {
345  if (tesseract_ == NULL) {
346  tesseract_ = new Tesseract;
348  }
349 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
void InitAdaptiveClassifier(bool load_pre_trained_templates)
Definition: adaptmatch.cpp:545
int tesseract::TessBaseAPI::InitLangMod ( const char *  datapath,
const char *  language 
)

Init only the lang model component of Tesseract. The only functions that work after this init are SetVariable and IsValidWord. WARNING: temporary! This function will be removed from here and placed in a separate API at some future time.

Definition at line 334 of file baseapi.cpp.

334  {
335  if (tesseract_ == NULL)
336  tesseract_ = new Tesseract;
337  return tesseract_->init_tesseract_lm(datapath, NULL, language);
338 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
int init_tesseract_lm(const char *arg0, const char *textbase, const char *language)
Definition: tessedit.cpp:420
bool tesseract::TessBaseAPI::InternalSetImage ( )
protected

Common code for setting the image. Returns true if Init has been called.

Common code for setting the image.

Definition at line 1586 of file baseapi.cpp.

1586  {
1587  if (tesseract_ == NULL) {
1588  tprintf("Please call Init before attempting to send an image.");
1589  return false;
1590  }
1591  if (thresholder_ == NULL)
1592  thresholder_ = new ImageThresholder;
1593  ClearResults();
1594  return true;
1595 }
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:764
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
DLLSYM void tprintf(const char *format,...)
Definition: tprintf.cpp:41
TESS_LOCAL void ClearResults()
Definition: baseapi.cpp:1699
void tesseract::TessBaseAPI::PrintVariables ( FILE *  fp) const

Print Tesseract parameters to the given file.

Definition at line 201 of file baseapi.cpp.

201  {
203 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
static void PrintParams(FILE *fp, const ParamsVectors *member_params)
Definition: params.cpp:188
ParamsVectors * params()
Definition: ccutil.h:65
void tesseract::TessBaseAPI::ReadConfigFile ( const char *  filename)

Read a "config" file containing a set of param, value pairs. Searches the standard places: tessdata/configs, tessdata/tessconfigs and also accepts a relative or absolute path name. Note: only non-init params will be set (init params are set by Init()).

Read a "config" file containing a set of parameter name, value pairs. Searches the standard places: tessdata/configs, tessdata/tessconfigs and also accepts a relative or absolute path name.

Definition at line 356 of file baseapi.cpp.

356  {
358 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
void read_config_file(const char *filename, SetParamConstraint constraint)
Definition: tessedit.cpp:67
void tesseract::TessBaseAPI::ReadDebugConfigFile ( const char *  filename)

Same as above, but only set debug params from the given config file.

Definition at line 361 of file baseapi.cpp.

361  {
363 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
void read_config_file(const char *filename, SetParamConstraint constraint)
Definition: tessedit.cpp:67
bool tesseract::TessBaseAPI::SetDebugVariable ( const char *  name,
const char *  value 
)

Definition at line 159 of file baseapi.cpp.

159  {
160  if (tesseract_ == NULL) tesseract_ = new Tesseract;
162  tesseract_->params());
163 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
static bool SetParam(const char *name, const char *value, SetParamConstraint constraint, ParamsVectors *member_params)
Definition: params.cpp:106
ParamsVectors * params()
Definition: ccutil.h:65
void tesseract::TessBaseAPI::SetInputName ( const char *  name)

Set the name of the input file. Needed only for training and reading a UNLV zone file.

Set the name of the input file. Needed only for training and loading a UNLV zone file.

Definition at line 138 of file baseapi.cpp.

138  {
139  if (input_file_ == NULL)
140  input_file_ = new STRING(name);
141  else
142  *input_file_ = name;
143 }
STRING * input_file_
Name used by training code.
Definition: baseapi.h:768
#define NULL
Definition: host.h:144
Definition: strngs.h:40
void tesseract::TessBaseAPI::SetOutputName ( const char *  name)

Set the name of the bonus output files. Needed only for debugging.

Set the name of the output files. Needed only for debugging.

Definition at line 146 of file baseapi.cpp.

146  {
147  if (output_file_ == NULL)
148  output_file_ = new STRING(name);
149  else
150  *output_file_ = name;
151 }
#define NULL
Definition: host.h:144
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:769
Definition: strngs.h:40
void tesseract::TessBaseAPI::SetPageSegMode ( PageSegMode  mode)

Set the current page segmentation mode. Defaults to PSM_SINGLE_BLOCK. The mode is stored as an IntParam so it can also be modified by ReadConfigFile or SetVariable("tessedit_pageseg_mode", mode as string).

Set the current page segmentation mode. Defaults to PSM_AUTO. The mode is stored as an IntParam so it can also be modified by ReadConfigFile or SetVariable("tessedit_pageseg_mode", mode as string).

Definition at line 370 of file baseapi.cpp.

370  {
371  if (tesseract_ == NULL)
372  tesseract_ = new Tesseract;
374 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
CMD_EVENTS mode
Definition: pgedit.cpp:115
bool tesseract::TessBaseAPI::SetVariable ( const char *  name,
const char *  value 
)

Set the value of an internal "parameter." Supply the name of the parameter and the value as a string, just as you would in a config file. Returns false if the name lookup failed. Eg SetVariable("tessedit_char_blacklist", "xyz"); to ignore x, y and z. Or SetVariable("classify_bln_numeric_mode", "1"); to set numeric-only mode. SetVariable may be used before Init, but settings will revert to defaults on End(). TODO(rays) Add a command-line option to dump the parameters to stdout and add a pointer to it in the FAQ

Note: Must be called after Init(). Only works for non-init variables (init variables should be passed to Init()).

Definition at line 153 of file baseapi.cpp.

153  {
154  if (tesseract_ == NULL) tesseract_ = new Tesseract;
156  tesseract_->params());
157 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
static bool SetParam(const char *name, const char *value, SetParamConstraint constraint, ParamsVectors *member_params)
Definition: params.cpp:106
ParamsVectors * params()
Definition: ccutil.h:65
char * tesseract::TessBaseAPI::TesseractRect ( const unsigned char *  imagedata,
int  bytes_per_pixel,
int  bytes_per_line,
int  left,
int  top,
int  width,
int  height 
)

Recognize a rectangle from an image and return the result as a string. May be called many times for a single Init. Currently has no error checking. Greyscale of 8 and color of 24 or 32 bits per pixel may be given. Palette color images will not work properly and must be converted to 24 bit. Binary images of 1 bit per pixel may also be given but they must be byte packed with the MSB of the first byte being the first pixel, and a 1 represents WHITE. For binary images set bytes_per_pixel=0. The recognized text is returned as a char* which is coded as UTF8 and must be freed with the delete [] operator.

Note that TesseractRect is the simplified convenience interface. For advanced uses, use SetImage, (optionally) SetRectangle, Recognize, and one or more of the Get*Text functions below.

Recognize a rectangle from an image and return the result as a string. May be called many times for a single Init. Currently has no error checking. Greyscale of 8 and color of 24 or 32 bits per pixel may be given. Palette color images will not work properly and must be converted to 24 bit. Binary images of 1 bit per pixel may also be given but they must be byte packed with the MSB of the first byte being the first pixel, and a one pixel is WHITE. For binary images set bytes_per_pixel=0. The recognized text is returned as a char* which is coded as UTF8 and must be freed with the delete [] operator.

Definition at line 397 of file baseapi.cpp.

401  {
402  if (tesseract_ == NULL || width < kMinRectSize || height < kMinRectSize)
403  return NULL; // Nothing worth doing.
404 
405  // Since this original api didn't give the exact size of the image,
406  // we have to invent a reasonable value.
407  int bits_per_pixel = bytes_per_pixel == 0 ? 1 : bytes_per_pixel * 8;
408  SetImage(imagedata, bytes_per_line * 8 / bits_per_pixel, height + top,
409  bytes_per_pixel, bytes_per_line);
410  SetRectangle(left, top, width, height);
411 
412  return GetUTF8Text();
413 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
void SetImage(const unsigned char *imagedata, int width, int height, int bytes_per_pixel, int bytes_per_line)
Definition: baseapi.cpp:435
const int kMinRectSize
Definition: baseapi.cpp:77
void SetRectangle(int left, int top, int width, int height)
Definition: baseapi.cpp:470
int tesseract::TessBaseAPI::TextLength ( int *  blob_count)
protected

Return the length of the output text string, as UTF8, assuming one newline per line and one per block, with a terminator, and assuming a single character reject marker for each rejected character. Also return the number of recognized blobs in blob_count.

Return the length of the output text string, as UTF8, assuming liberally two spacing marks after each word (as paragraphs end with two newlines), and assuming a single character reject marker for each rejected character. Also return the number of recognized blobs in blob_count.

Definition at line 1726 of file baseapi.cpp.

1726  {
1727  if (tesseract_ == NULL || page_res_ == NULL)
1728  return 0;
1729 
1730  PAGE_RES_IT page_res_it(page_res_);
1731  int total_length = 2;
1732  int total_blobs = 0;
1733  // Iterate over the data structures to extract the recognition result.
1734  for (page_res_it.restart_page(); page_res_it.word () != NULL;
1735  page_res_it.forward()) {
1736  WERD_RES *word = page_res_it.word();
1737  WERD_CHOICE* choice = word->best_choice;
1738  if (choice != NULL) {
1739  total_blobs += choice->length() + 2;
1740  total_length += choice->unichar_string().length() + 2;
1741  for (int i = 0; i < word->reject_map.length(); ++i) {
1742  if (word->reject_map[i].rejected())
1743  ++total_length;
1744  }
1745  }
1746  }
1747  if (blob_count != NULL)
1748  *blob_count = total_blobs;
1749  return total_length;
1750 }
int length() const
Definition: ratngs.h:214
const STRING & unichar_string() const
Definition: ratngs.h:395
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
inT32 length() const
Definition: strngs.cpp:151
REJMAP reject_map
Definition: pageres.h:408
#define NULL
Definition: host.h:144
WERD * word
Definition: pageres.h:334
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:767
inT32 length() const
Definition: rejctmap.h:238
WERD_CHOICE * best_choice
Definition: pageres.h:359
void tesseract::TessBaseAPI::Threshold ( Pix **  pix)
protectedvirtual

Run the thresholder to make the thresholded image. If pix is not NULL, the source is thresholded to pix instead of the internal IMAGE.

Run the thresholder to make the thresholded image, returned in pix, which must not be NULL. *pix must be initialized to NULL, or point to an existing pixDestroyable Pix. The usual argument to Threshold is Tesseract::mutable_pix_binary().

Definition at line 1603 of file baseapi.cpp.

1603  {
1604  ASSERT_HOST(pix != NULL);
1605  if (!thresholder_->IsBinary()) {
1607  }
1608  if (*pix != NULL)
1609  pixDestroy(pix);
1610  // Zero resolution messes up the algorithms, so make sure it is credible.
1611  int y_res = thresholder_->GetScaledYResolution();
1612  if (y_res < kMinCredibleResolution || y_res > kMaxCredibleResolution) {
1613  // Use the minimum default resolution, as it is safer to under-estimate
1614  // than over-estimate resolution.
1616  }
1621  // Set the internal resolution that is used for layout parameters from the
1622  // estimated resolution, rather than the image resolution, which may be
1623  // fabricated, but we will use the image resolution, if there is one, to
1624  // report output point sizes.
1625  int estimated_res = ClipToRange(thresholder_->GetScaledEstimatedResolution(),
1628  if (estimated_res != thresholder_->GetScaledEstimatedResolution()) {
1629  tprintf("Estimated resolution %d out of range! Corrected to %d\n",
1630  thresholder_->GetScaledEstimatedResolution(), estimated_res);
1631  }
1632  tesseract_->set_source_resolution(estimated_res);
1633 }
virtual void GetImageSizes(int *left, int *top, int *width, int *height, int *imagewidth, int *imageheight)
Definition: thresholder.cpp:99
int GetScaledYResolution() const
Definition: thresholder.h:93
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:764
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:757
#define NULL
Definition: host.h:144
void set_source_resolution(int ppi)
const int kMaxCredibleResolution
Definition: baseapi.cpp:99
int GetScaledEstimatedResolution() const
Definition: thresholder.h:106
void SetSourceYResolution(int ppi)
Definition: thresholder.h:86
virtual void ThresholdToPix(Pix **pix)
DLLSYM void tprintf(const char *format,...)
Definition: tprintf.cpp:41
const int kMinCredibleResolution
Minimum believable resolution.
Definition: baseapi.cpp:97
void set_pix_grey(Pix *grey_pix)
#define ASSERT_HOST(x)
Definition: errcode.h:84
T ClipToRange(const T &x, const T &lower_bound, const T &upper_bound)
Definition: helpers.h:64
bool IsBinary() const
Returns true if the source image is binary.
Definition: thresholder.h:75
const char * tesseract::TessBaseAPI::Version ( )
static

Returns the version identifier as a static string. Do not delete.

Definition at line 130 of file baseapi.cpp.

130  {
131  return VERSION;
132 }
#define VERSION
Definition: config_auto.h:168

Member Data Documentation

BLOCK_LIST* tesseract::TessBaseAPI::block_list_
protected

The page layout.

Definition at line 766 of file baseapi.h.

STRING* tesseract::TessBaseAPI::datapath_
protected

Current location of tessdata.

Definition at line 770 of file baseapi.h.

EquationDetect* tesseract::TessBaseAPI::equ_detect_
protected

The equation detector.

Definition at line 763 of file baseapi.h.

STRING* tesseract::TessBaseAPI::input_file_
protected

Name used by training code.

Definition at line 768 of file baseapi.h.

STRING* tesseract::TessBaseAPI::language_
protected

Last initialized language.

Definition at line 771 of file baseapi.h.

OcrEngineMode tesseract::TessBaseAPI::last_oem_requested_
protected

Last ocr language mode requested.

Definition at line 772 of file baseapi.h.

Tesseract* tesseract::TessBaseAPI::osd_tesseract_
protected

For orientation & script detection.

Definition at line 762 of file baseapi.h.

STRING* tesseract::TessBaseAPI::output_file_
protected

Name used by debug code.

Definition at line 769 of file baseapi.h.

PAGE_RES* tesseract::TessBaseAPI::page_res_
protected

The page-level data.

Definition at line 767 of file baseapi.h.

GenericVector<ParagraphModel *>* tesseract::TessBaseAPI::paragraph_models_
protected

Definition at line 765 of file baseapi.h.

bool tesseract::TessBaseAPI::recognition_done_
protected

page_res_ contains recognition data.

Definition at line 773 of file baseapi.h.

Tesseract* tesseract::TessBaseAPI::tesseract_
protected

The underlying data object.

Definition at line 757 of file baseapi.h.

ImageThresholder* tesseract::TessBaseAPI::thresholder_
protected

Image thresholding module.

Definition at line 764 of file baseapi.h.

TruthCallback* tesseract::TessBaseAPI::truth_cb_
protected

Definition at line 774 of file baseapi.h.


The documentation for this class was generated from the following files: