tesseract  4.00.00dev
tesseract::TessBaseAPI Class Reference

#include <baseapi.h>

Public Member Functions

 TessBaseAPI ()
 
virtual ~TessBaseAPI ()
 
void SetInputName (const char *name)
 
const char * GetInputName ()
 
void SetInputImage (Pix *pix)
 
Pix * GetInputImage ()
 
int GetSourceYResolution ()
 
const char * GetDatapath ()
 
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)
 
int Init (const char *data, int data_size, 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, FileReader reader)
 
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 (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 (const bool raw_image, const int raw_padding, Pixa **pixa, int **blockids, int **paraids)
 
Boxa * GetTextlines (Pixa **pixa, int **blockids)
 
Boxa * GetStrips (Pixa **pixa, int **blockids)
 
Boxa * GetWords (Pixa **pixa)
 
Boxa * GetConnectedComponents (Pixa **cc)
 
Boxa * GetComponentImages (const PageIteratorLevel level, const bool text_only, const bool raw_image, const int raw_padding, Pixa **pixa, int **blockids, int **paraids)
 
Boxa * GetComponentImages (const PageIteratorLevel level, const bool text_only, Pixa **pixa, int **blockids)
 
int GetThresholdedImageScaleFactor () const
 
void DumpPGM (const char *filename)
 
PageIteratorAnalyseLayout ()
 
PageIteratorAnalyseLayout (bool merge_similar_words)
 
int Recognize (ETEXT_DESC *monitor)
 
int RecognizeForChopTest (ETEXT_DESC *monitor)
 
bool ProcessPages (const char *filename, const char *retry_config, int timeout_millisec, TessResultRenderer *renderer)
 
bool ProcessPagesInternal (const char *filename, const char *retry_config, int timeout_millisec, TessResultRenderer *renderer)
 
bool ProcessPage (Pix *pix, int page_index, const char *filename, const char *retry_config, int timeout_millisec, TessResultRenderer *renderer)
 
ResultIteratorGetIterator ()
 
MutableIteratorGetMutableIterator ()
 
char * GetUTF8Text ()
 
char * GetHOCRText (ETEXT_DESC *monitor, int page_number)
 
char * GetHOCRText (int page_number)
 
char * GetTSVText (int page_number)
 
char * GetBoxText (int page_number)
 
char * GetUNLVText ()
 
bool DetectOrientationScript (int *orient_deg, float *orient_conf, const char **script_name, float *script_conf)
 
char * GetOsdText (int page_number)
 
int MeanTextConf ()
 
intAllWordConfidences ()
 
bool AdaptToWordStr (PageSegMode mode, const char *wordstr)
 
void Clear ()
 
void End ()
 
int IsValidWord (const char *word)
 
bool IsValidCharacter (const char *utf8_character)
 
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, INT_FEATURE_STRUCT *int_features, int *num_features, int *feature_outline_index)
 
void RunAdaptiveClassifier (TBLOB *blob, 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
 
Tesseracttesseract () const
 
OcrEngineMode oem () const
 
void InitTruthCallback (TruthCallback *cb)
 
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 size_t getOpenCLDevice (void **device)
 
static void CatchSignals ()
 
static void ClearPersistentCache ()
 
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)
 
static void DeleteBlockList (BLOCK_LIST *block_list)
 

Protected Member Functions

TESS_LOCAL bool InternalSetImage ()
 
virtual TESS_LOCAL bool Threshold (Pix **pix)
 
TESS_LOCAL int FindLines ()
 
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...
 
FileReader reader_
 Reads files from any filesystem. 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 105 of file baseapi.h.

Constructor & Destructor Documentation

◆ TessBaseAPI()

tesseract::TessBaseAPI::TessBaseAPI ( )

Definition at line 111 of file baseapi.cpp.

112  : tesseract_(nullptr),
113  osd_tesseract_(nullptr),
114  equ_detect_(nullptr),
115  reader_(nullptr),
116  // Thresholder is initialized to NULL here, but will be set before use by:
117  // A constructor of a derived API, SetThresholder(), or
118  // created implicitly when used in InternalSetImage.
119  thresholder_(nullptr),
120  paragraph_models_(nullptr),
121  block_list_(nullptr),
122  page_res_(nullptr),
123  input_file_(nullptr),
124  output_file_(nullptr),
125  datapath_(nullptr),
126  language_(nullptr),
128  recognition_done_(false),
129  truth_cb_(NULL),
130  rect_left_(0),
131  rect_top_(0),
132  rect_width_(0),
133  rect_height_(0),
134  image_width_(0),
135  image_height_(0) {}
STRING * input_file_
Name used by training code.
Definition: baseapi.h:878
FileReader reader_
Reads files from any filesystem.
Definition: baseapi.h:873
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:879
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:876
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:877
OcrEngineMode last_oem_requested_
Last ocr language mode requested.
Definition: baseapi.h:882
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
TruthCallback * truth_cb_
Definition: baseapi.h:884
EquationDetect * equ_detect_
The equation detector.
Definition: baseapi.h:872
STRING * language_
Last initialized language.
Definition: baseapi.h:881
Tesseract * osd_tesseract_
For orientation & script detection.
Definition: baseapi.h:871
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:880
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:883
GenericVector< ParagraphModel * > * paragraph_models_
Definition: baseapi.h:875

◆ ~TessBaseAPI()

tesseract::TessBaseAPI::~TessBaseAPI ( )
virtual

Definition at line 137 of file baseapi.cpp.

137  {
138  End();
139 }

Member Function Documentation

◆ CatchSignals()

void tesseract::TessBaseAPI::CatchSignals ( )
static

Writes the thresholded image to stderr as a PBM file on receipt of a SIGSEGV, SIGFPE, or SIGBUS signal. (Linux/Unix only).

Definition at line 184 of file baseapi.cpp.

184  {
185 #ifdef __linux__
186  struct sigaction action;
187  memset(&action, 0, sizeof(action));
188  action.sa_handler = &signal_exit;
189  action.sa_flags = SA_RESETHAND;
190  sigaction(SIGSEGV, &action, NULL);
191  sigaction(SIGFPE, &action, NULL);
192  sigaction(SIGBUS, &action, NULL);
193 #else
194  // Warn API users that an implementation is needed.
195  tprintf("CatchSignals has no non-linux implementation!\n");
196 #endif
197 }
void signal_exit(int signal_code)
Definition: globaloc.cpp:52
#define tprintf(...)
Definition: tprintf.h:31

◆ ClearAdaptiveClassifier()

void tesseract::TessBaseAPI::ClearAdaptiveClassifier ( )

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

Definition at line 531 of file baseapi.cpp.

531  {
532  if (tesseract_ == NULL)
533  return;
536 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870

◆ ClearResults()

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 2297 of file baseapi.cpp.

2297  {
2298  if (tesseract_ != NULL) {
2299  tesseract_->Clear();
2300  }
2301  if (page_res_ != NULL) {
2302  delete page_res_;
2303  page_res_ = NULL;
2304  }
2305  recognition_done_ = false;
2306  if (block_list_ == NULL)
2307  block_list_ = new BLOCK_LIST;
2308  else
2309  block_list_->clear();
2310  if (paragraph_models_ != NULL) {
2312  delete paragraph_models_;
2313  paragraph_models_ = NULL;
2314  }
2315  SavePixForCrash(0, NULL);
2316 }
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:876
void SavePixForCrash(int resolution, Pix *pix)
Definition: globaloc.cpp:34
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:877
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:883
void delete_data_pointers()
GenericVector< ParagraphModel * > * paragraph_models_
Definition: baseapi.h:875

◆ FindLines()

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 2236 of file baseapi.cpp.

2236  {
2237  if (thresholder_ == NULL || thresholder_->IsEmpty()) {
2238  tprintf("Please call SetImage before attempting recognition.");
2239  return -1;
2240  }
2241  if (recognition_done_)
2242  ClearResults();
2243  if (!block_list_->empty()) {
2244  return 0;
2245  }
2246  if (tesseract_ == NULL) {
2247  tesseract_ = new Tesseract;
2249  }
2250  if (tesseract_->pix_binary() == NULL &&
2252  return -1;
2253  }
2254 
2256 
2258  if (equ_detect_ == NULL && datapath_ != NULL) {
2259  equ_detect_ = new EquationDetect(datapath_->string(), NULL);
2260  }
2262  }
2263 
2264  Tesseract* osd_tess = osd_tesseract_;
2265  OSResults osr;
2267  osd_tess == nullptr) {
2268  if (strcmp(language_->string(), "osd") == 0) {
2269  osd_tess = tesseract_;
2270  } else {
2271  osd_tesseract_ = new Tesseract;
2272  TessdataManager mgr(reader_);
2273  if (osd_tesseract_->init_tesseract(datapath_->string(), nullptr, "osd",
2274  OEM_TESSERACT_ONLY, nullptr, 0,
2275  nullptr, nullptr, false, &mgr) == 0) {
2276  osd_tess = osd_tesseract_;
2279  } else {
2280  tprintf("Warning: Auto orientation and script detection requested,"
2281  " but osd language failed to load\n");
2282  delete osd_tesseract_;
2283  osd_tesseract_ = nullptr;
2284  }
2285  }
2286  }
2287 
2288  if (tesseract_->SegmentPage(input_file_, block_list_, osd_tess, &osr) < 0)
2289  return -1;
2290  // If Devanagari is being recognized, we use different images for page seg
2291  // and for OCR.
2292  tesseract_->PrepareForTessOCR(block_list_, osd_tess, &osr);
2293  return 0;
2294 }
STRING * input_file_
Name used by training code.
Definition: baseapi.h:878
FileReader reader_
Reads files from any filesystem.
Definition: baseapi.h:873
int GetSourceYResolution() const
Definition: thresholder.h:90
bool IsEmpty() const
Return true if no image has been set.
Definition: thresholder.cpp:50
BLOCK_LIST * block_list_
The page layout.
Definition: baseapi.h:876
Pix * pix_binary() const
bool PSM_OSD_ENABLED(int pageseg_mode)
Definition: publictypes.h:179
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874
void SetEquationDetect(EquationDetect *detector)
void set_source_resolution(int ppi)
#define tprintf(...)
Definition: tprintf.h:31
const char * string() const
Definition: strngs.cpp:198
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void PrepareForTessOCR(BLOCK_LIST *block_list, Tesseract *osd_tess, OSResults *osr)
EquationDetect * equ_detect_
The equation detector.
Definition: baseapi.h:872
virtual TESS_LOCAL bool Threshold(Pix **pix)
Definition: baseapi.cpp:2192
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, TessdataManager *mgr)
Definition: tessedit.cpp:295
STRING * language_
Last initialized language.
Definition: baseapi.h:881
Tesseract * osd_tesseract_
For orientation & script detection.
Definition: baseapi.h:871
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:880
void InitAdaptiveClassifier(TessdataManager *mgr)
Definition: adaptmatch.cpp:527
int SegmentPage(const STRING *input_file, BLOCK_LIST *blocks, Tesseract *osd_tess, OSResults *osr)
bool recognition_done_
page_res_ contains recognition data.
Definition: baseapi.h:883

◆ GetAvailableLanguagesAsVector()

void tesseract::TessBaseAPI::GetAvailableLanguagesAsVector ( GenericVector< STRING > *  langs) const

Returns the available languages in the vector of STRINGs.

Definition at line 391 of file baseapi.cpp.

392  {
393  langs->clear();
394  if (tesseract_ != NULL) {
395 #ifdef _WIN32
396  STRING pattern = tesseract_->datadir + "/*." + kTrainedDataSuffix;
397  char fname[_MAX_FNAME];
398  WIN32_FIND_DATA data;
399  BOOL result = TRUE;
400  HANDLE handle = FindFirstFile(pattern.string(), &data);
401  if (handle != INVALID_HANDLE_VALUE) {
402  for (; result; result = FindNextFile(handle, &data)) {
403  _splitpath(data.cFileName, NULL, NULL, fname, NULL);
404  langs->push_back(STRING(fname));
405  }
406  FindClose(handle);
407  }
408 #else // _WIN32
409  DIR *dir;
410  struct dirent *dirent;
411  char *dot;
412 
413  STRING extension = STRING(".") + kTrainedDataSuffix;
414 
415  dir = opendir(tesseract_->datadir.string());
416  if (dir != NULL) {
417  while ((dirent = readdir(dir))) {
418  // Skip '.', '..', and hidden files
419  if (dirent->d_name[0] != '.') {
420  if (strstr(dirent->d_name, extension.string()) != NULL) {
421  dot = strrchr(dirent->d_name, '.');
422  // This ensures that .traineddata is at the end of the file name
423  if (strncmp(dot, extension.string(),
424  strlen(extension.string())) == 0) {
425  *dot = '\0';
426  langs->push_back(STRING(dirent->d_name));
427  }
428  }
429  }
430  }
431  closedir(dir);
432  }
433 #endif
434  }
435 }
#define TRUE
Definition: capi.h:45
#define DIR
Definition: polyaprx.cpp:39
int push_back(T object)
const char * string() const
Definition: strngs.cpp:198
#define BOOL
Definition: capi.h:44
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
Definition: strngs.h:45
#define INVALID_HANDLE_VALUE
Definition: iowin32.c:17
STRING datadir
Definition: ccutil.h:64

◆ GetBoolVariable()

bool tesseract::TessBaseAPI::GetBoolVariable ( const char *  name,
bool *  value 
) const

Definition at line 238 of file baseapi.cpp.

238  {
239  BoolParam *p = ParamUtils::FindParam<BoolParam>(
241  if (p == NULL) return false;
242  *value = (BOOL8)(*p);
243  return true;
244 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
unsigned char BOOL8
Definition: host.h:44
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:33
GenericVector< BoolParam * > bool_params
Definition: params.h:45

◆ GetDatapath()

const char * tesseract::TessBaseAPI::GetDatapath ( )

Definition at line 930 of file baseapi.cpp.

930  {
931  return tesseract_->datadir.c_str();
932 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
const char * c_str() const
Definition: strngs.cpp:209
STRING datadir
Definition: ccutil.h:64

◆ GetDoubleVariable()

bool tesseract::TessBaseAPI::GetDoubleVariable ( const char *  name,
double *  value 
) const

Definition at line 252 of file baseapi.cpp.

252  {
253  DoubleParam *p = ParamUtils::FindParam<DoubleParam>(
255  if (p == NULL) return false;
256  *value = (double)(*p);
257  return true;
258 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:33
GenericVector< DoubleParam * > double_params
Definition: params.h:47

◆ GetInitLanguagesAsString()

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 367 of file baseapi.cpp.

367  {
368  return (language_ == NULL || language_->string() == NULL) ?
369  "" : language_->string();
370 }
const char * string() const
Definition: strngs.cpp:198
STRING * language_
Last initialized language.
Definition: baseapi.h:881

◆ GetInputImage()

Pix * tesseract::TessBaseAPI::GetInputImage ( )

Definition at line 922 of file baseapi.cpp.

922 { return tesseract_->pix_original(); }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
Pix * pix_original() const

◆ GetInputName()

const char * tesseract::TessBaseAPI::GetInputName ( )

These functions are required for searchable PDF output. We need our hands on the input file so that we can include it in the PDF without transcoding. If that is not possible, we need the original image. Finally, resolution metadata is stored in the PDF so we need that as well.

Definition at line 924 of file baseapi.cpp.

924  {
925  if (input_file_)
926  return input_file_->c_str();
927  return NULL;
928 }
STRING * input_file_
Name used by training code.
Definition: baseapi.h:878
const char * c_str() const
Definition: strngs.cpp:209

◆ GetIntVariable()

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 230 of file baseapi.cpp.

230  {
231  IntParam *p = ParamUtils::FindParam<IntParam>(
233  if (p == NULL) return false;
234  *value = (inT32)(*p);
235  return true;
236 }
int32_t inT32
Definition: host.h:38
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:33
GenericVector< IntParam * > int_params
Definition: params.h:44

◆ GetLoadedLanguagesAsVector()

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 377 of file baseapi.cpp.

378  {
379  langs->clear();
380  if (tesseract_ != NULL) {
381  langs->push_back(tesseract_->lang);
382  int num_subs = tesseract_->num_sub_langs();
383  for (int i = 0; i < num_subs; ++i)
384  langs->push_back(tesseract_->get_sub_lang(i)->lang);
385  }
386 }
int num_sub_langs() const
Tesseract * get_sub_lang(int index) const
int push_back(T object)
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
STRING lang
Definition: ccutil.h:66

◆ GetLTRIterator()

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 1219 of file baseapi.cpp.

1219  {
1220  if (tesseract_ == NULL || page_res_ == NULL)
1221  return NULL;
1222  return new LTRResultIterator(
1226 }
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:877
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
int GetScaledYResolution() const
Definition: thresholder.h:93

◆ getOpenCLDevice()

size_t tesseract::TessBaseAPI::getOpenCLDevice ( void **  data)
static

If compiled with OpenCL AND an available OpenCL device is deemed faster than serial code, then "device" is populated with the cl_device_id and returns sizeof(cl_device_id) otherwise *device=NULL and returns 0.

Definition at line 164 of file baseapi.cpp.

164  {
165 #ifdef USE_OPENCL
166 #if USE_DEVICE_SELECTION
167  ds_device device = OpenclDevice::getDeviceSelection();
168  if (device.type == DS_DEVICE_OPENCL_DEVICE) {
169  *data = new cl_device_id;
170  memcpy(*data, &device.oclDeviceID, sizeof(cl_device_id));
171  return sizeof(cl_device_id);
172  }
173 #endif
174 #endif
175 
176  *data = NULL;
177  return 0;
178 }

◆ GetPageSegMode()

PageSegMode tesseract::TessBaseAPI::GetPageSegMode ( ) const

Return the current page segmentation mode.

Definition at line 489 of file baseapi.cpp.

489  {
490  if (tesseract_ == NULL)
491  return PSM_SINGLE_BLOCK;
492  return static_cast<PageSegMode>(
493  static_cast<int>(tesseract_->tessedit_pageseg_mode));
494 }
Assume a single uniform block of text. (Default.)
Definition: publictypes.h:160
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870

◆ GetSourceYResolution()

int tesseract::TessBaseAPI::GetSourceYResolution ( )

Definition at line 934 of file baseapi.cpp.

934  {
936 }
int GetSourceYResolution() const
Definition: thresholder.h:90
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874

◆ GetStringVariable()

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 246 of file baseapi.cpp.

246  {
247  StringParam *p = ParamUtils::FindParam<StringParam>(
249  return (p != NULL) ? p->string() : NULL;
250 }
GenericVector< StringParam * > string_params
Definition: params.h:46
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
tesseract::ParamsVectors * GlobalParams()
Definition: params.cpp:33

◆ GetVariableAsString()

bool tesseract::TessBaseAPI::GetVariableAsString ( const char *  name,
STRING val 
)

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

Definition at line 261 of file baseapi.cpp.

261  {
262  return ParamUtils::GetParamAsString(name, tesseract_->params(), val);
263 }
ParamsVectors * params()
Definition: ccutil.h:62
static bool GetParamAsString(const char *name, const ParamsVectors *member_params, STRING *value)
Definition: params.cpp:135
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870

◆ Init() [1/4]

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 278 of file baseapi.cpp.

282  {
283  return Init(datapath, 0, language, oem, configs, configs_size, vars_vec,
284  vars_values, set_only_non_debug_params, nullptr);
285 }
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:278
OcrEngineMode oem() const
Definition: baseapi.h:771

◆ Init() [2/4]

int tesseract::TessBaseAPI::Init ( const char *  datapath,
const char *  language,
OcrEngineMode  oem 
)
inline

Definition at line 235 of file baseapi.h.

235  {
236  return Init(datapath, language, oem, NULL, 0, NULL, NULL, false);
237  }
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:278
OcrEngineMode oem() const
Definition: baseapi.h:771

◆ Init() [3/4]

int tesseract::TessBaseAPI::Init ( const char *  datapath,
const char *  language 
)
inline

Definition at line 238 of file baseapi.h.

238  {
239  return Init(datapath, language, OEM_DEFAULT, NULL, 0, NULL, NULL, false);
240  }
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:278

◆ Init() [4/4]

int tesseract::TessBaseAPI::Init ( const char *  data,
int  data_size,
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,
FileReader  reader 
)

Definition at line 290 of file baseapi.cpp.

294  {
295  PERF_COUNT_START("TessBaseAPI::Init")
296  // Default language is "eng".
297  if (language == nullptr) language = "eng";
298  STRING datapath = data_size == 0 ? data : language;
299  // If the datapath, OcrEngineMode or the language have changed - start again.
300  // Note that the language_ field stores the last requested language that was
301  // initialized successfully, while tesseract_->lang stores the language
302  // actually used. They differ only if the requested language was NULL, in
303  // which case tesseract_->lang is set to the Tesseract default ("eng").
304  if (tesseract_ != nullptr &&
305  (datapath_ == nullptr || language_ == nullptr || *datapath_ != datapath ||
307  (*language_ != language && tesseract_->lang != language))) {
308  delete tesseract_;
309  tesseract_ = nullptr;
310  }
311  // PERF_COUNT_SUB("delete tesseract_")
312 #ifdef USE_OPENCL
313  OpenclDevice od;
314  od.InitEnv();
315 #endif
316  PERF_COUNT_SUB("OD::InitEnv()")
317  bool reset_classifier = true;
318  if (tesseract_ == nullptr) {
319  reset_classifier = false;
320  tesseract_ = new Tesseract;
321  if (reader != nullptr) reader_ = reader;
322  TessdataManager mgr(reader_);
323  if (data_size != 0) {
324  mgr.LoadMemBuffer(language, data, data_size);
325  }
327  datapath.string(),
328  output_file_ != nullptr ? output_file_->string() : nullptr,
329  language, oem, configs, configs_size, vars_vec, vars_values,
330  set_only_non_debug_params, &mgr) != 0) {
331  return -1;
332  }
333  }
334  PERF_COUNT_SUB("update tesseract_")
335  // Update datapath and language requested for the last valid initialization.
336  if (datapath_ == nullptr)
337  datapath_ = new STRING(datapath);
338  else
339  *datapath_ = datapath;
340  if ((strcmp(datapath_->string(), "") == 0) &&
341  (strcmp(tesseract_->datadir.string(), "") != 0))
342  *datapath_ = tesseract_->datadir;
343 
344  if (language_ == nullptr)
345  language_ = new STRING(language);
346  else
347  *language_ = language;
349  // PERF_COUNT_SUB("update last_oem_requested_")
350  // For same language and datapath, just reset the adaptive classifier.
351  if (reset_classifier) {
353  PERF_COUNT_SUB("tesseract_->ResetAdaptiveClassifier()")
354  }
356  return 0;
357 }
FileReader reader_
Reads files from any filesystem.
Definition: baseapi.h:873
#define PERF_COUNT_START(FUNCT_NAME)
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:879
const char * string() const
Definition: strngs.cpp:198
OcrEngineMode last_oem_requested_
Last ocr language mode requested.
Definition: baseapi.h:882
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
Definition: strngs.h:45
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, TessdataManager *mgr)
Definition: tessedit.cpp:295
OcrEngineMode oem() const
Definition: baseapi.h:771
#define PERF_COUNT_END
STRING * language_
Last initialized language.
Definition: baseapi.h:881
STRING * datapath_
Current location of tessdata.
Definition: baseapi.h:880
#define PERF_COUNT_SUB(SUB)

◆ InitForAnalysePage()

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 456 of file baseapi.cpp.

456  {
457  if (tesseract_ == NULL) {
458  tesseract_ = new Tesseract;
460  }
461 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void InitAdaptiveClassifier(TessdataManager *mgr)
Definition: adaptmatch.cpp:527

◆ InitLangMod()

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 443 of file baseapi.cpp.

443  {
444  if (tesseract_ == NULL)
445  tesseract_ = new Tesseract;
446  else
448  TessdataManager mgr;
449  return tesseract_->init_tesseract_lm(datapath, NULL, language, &mgr);
450 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
static void ResetToDefaults(ParamsVectors *member_params)
Definition: params.cpp:198
int init_tesseract_lm(const char *arg0, const char *textbase, const char *language, TessdataManager *mgr)
Definition: tessedit.cpp:457

◆ InternalSetImage()

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 2175 of file baseapi.cpp.

2175  {
2176  if (tesseract_ == NULL) {
2177  tprintf("Please call Init before attempting to set an image.");
2178  return false;
2179  }
2180  if (thresholder_ == NULL)
2181  thresholder_ = new ImageThresholder;
2182  ClearResults();
2183  return true;
2184 }
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874
#define tprintf(...)
Definition: tprintf.h:31
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870

◆ PrintVariables()

void tesseract::TessBaseAPI::PrintVariables ( FILE *  fp) const

Print Tesseract parameters to the given file.

Definition at line 266 of file baseapi.cpp.

266  {
268 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
static void PrintParams(FILE *fp, const ParamsVectors *member_params)
Definition: params.cpp:173

◆ ReadConfigFile()

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 468 of file baseapi.cpp.

468  {
470 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void read_config_file(const char *filename, SetParamConstraint constraint)
Definition: tessedit.cpp:60
const char * filename
Definition: ioapi.h:38

◆ ReadDebugConfigFile()

void tesseract::TessBaseAPI::ReadDebugConfigFile ( const char *  filename)

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

Definition at line 473 of file baseapi.cpp.

473  {
475 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void read_config_file(const char *filename, SetParamConstraint constraint)
Definition: tessedit.cpp:60
const char * filename
Definition: ioapi.h:38

◆ SetDebugVariable()

bool tesseract::TessBaseAPI::SetDebugVariable ( const char *  name,
const char *  value 
)

Definition at line 224 of file baseapi.cpp.

224  {
225  if (tesseract_ == NULL) tesseract_ = new Tesseract;
227  tesseract_->params());
228 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
static bool SetParam(const char *name, const char *value, SetParamConstraint constraint, ParamsVectors *member_params)
Definition: params.cpp:91

◆ SetInputImage()

void tesseract::TessBaseAPI::SetInputImage ( Pix *  pix)

Definition at line 920 of file baseapi.cpp.

920 { tesseract_->set_pix_original(pix); }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void set_pix_original(Pix *original_pix)

◆ SetInputName()

void tesseract::TessBaseAPI::SetInputName ( const char *  name)

Set the name of the input file. Needed for training and reading a UNLV zone file, and for searchable PDF output.

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

Definition at line 203 of file baseapi.cpp.

203  {
204  if (input_file_ == NULL)
205  input_file_ = new STRING(name);
206  else
207  *input_file_ = name;
208 }
STRING * input_file_
Name used by training code.
Definition: baseapi.h:878
Definition: strngs.h:45

◆ SetOutputName()

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 211 of file baseapi.cpp.

211  {
212  if (output_file_ == NULL)
213  output_file_ = new STRING(name);
214  else
215  *output_file_ = name;
216 }
STRING * output_file_
Name used by debug code.
Definition: baseapi.h:879
Definition: strngs.h:45

◆ SetPageSegMode()

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 482 of file baseapi.cpp.

482  {
483  if (tesseract_ == NULL)
484  tesseract_ = new Tesseract;
486 }
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
const char int mode
Definition: ioapi.h:38

◆ SetVariable()

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().

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

Definition at line 218 of file baseapi.cpp.

218  {
219  if (tesseract_ == NULL) tesseract_ = new Tesseract;
221  tesseract_->params());
222 }
ParamsVectors * params()
Definition: ccutil.h:62
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
static bool SetParam(const char *name, const char *value, SetParamConstraint constraint, ParamsVectors *member_params)
Definition: params.cpp:91

◆ TesseractRect()

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 509 of file baseapi.cpp.

513  {
514  if (tesseract_ == NULL || width < kMinRectSize || height < kMinRectSize)
515  return NULL; // Nothing worth doing.
516 
517  // Since this original api didn't give the exact size of the image,
518  // we have to invent a reasonable value.
519  int bits_per_pixel = bytes_per_pixel == 0 ? 1 : bytes_per_pixel * 8;
520  SetImage(imagedata, bytes_per_line * 8 / bits_per_pixel, height + top,
521  bytes_per_pixel, bytes_per_line);
522  SetRectangle(left, top, width, height);
523 
524  return GetUTF8Text();
525 }
const int kMinRectSize
Definition: baseapi.cpp:85
void SetRectangle(int left, int top, int width, int height)
Definition: baseapi.cpp:582
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
void SetImage(const unsigned char *imagedata, int width, int height, int bytes_per_pixel, int bytes_per_line)
Definition: baseapi.cpp:545

◆ TextLength()

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 2325 of file baseapi.cpp.

2325  {
2326  if (tesseract_ == NULL || page_res_ == NULL)
2327  return 0;
2328 
2329  PAGE_RES_IT page_res_it(page_res_);
2330  int total_length = 2;
2331  int total_blobs = 0;
2332  // Iterate over the data structures to extract the recognition result.
2333  for (page_res_it.restart_page(); page_res_it.word () != NULL;
2334  page_res_it.forward()) {
2335  WERD_RES *word = page_res_it.word();
2336  WERD_CHOICE* choice = word->best_choice;
2337  if (choice != NULL) {
2338  total_blobs += choice->length() + 2;
2339  total_length += choice->unichar_string().length() + 2;
2340  for (int i = 0; i < word->reject_map.length(); ++i) {
2341  if (word->reject_map[i].rejected())
2342  ++total_length;
2343  }
2344  }
2345  }
2346  if (blob_count != NULL)
2347  *blob_count = total_blobs;
2348  return total_length;
2349 }
WERD_CHOICE * best_choice
Definition: pageres.h:219
int length() const
Definition: ratngs.h:301
PAGE_RES * page_res_
The page-level data.
Definition: baseapi.h:877
inT32 length() const
Definition: strngs.cpp:193
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
inT32 length() const
Definition: rejctmap.h:235
const STRING & unichar_string() const
Definition: ratngs.h:539
WERD * word
Definition: pageres.h:175
REJMAP reject_map
Definition: pageres.h:271

◆ Threshold()

bool 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 2192 of file baseapi.cpp.

2192  {
2193  ASSERT_HOST(pix != NULL);
2194  if (*pix != NULL)
2195  pixDestroy(pix);
2196  // Zero resolution messes up the algorithms, so make sure it is credible.
2197  int y_res = thresholder_->GetScaledYResolution();
2198  if (y_res < kMinCredibleResolution || y_res > kMaxCredibleResolution) {
2199  // Use the minimum default resolution, as it is safer to under-estimate
2200  // than over-estimate resolution.
2201  tprintf("Warning. Invalid resolution %d dpi. Using %d instead.\n", y_res,
2204  }
2205  PageSegMode pageseg_mode =
2206  static_cast<PageSegMode>(
2207  static_cast<int>(tesseract_->tessedit_pageseg_mode));
2208  if (!thresholder_->ThresholdToPix(pageseg_mode, pix)) return false;
2212  if (!thresholder_->IsBinary()) {
2215  } else {
2217  tesseract_->set_pix_grey(NULL);
2218  }
2219  // Set the internal resolution that is used for layout parameters from the
2220  // estimated resolution, rather than the image resolution, which may be
2221  // fabricated, but we will use the image resolution, if there is one, to
2222  // report output point sizes.
2223  int estimated_res = ClipToRange(thresholder_->GetScaledEstimatedResolution(),
2226  if (estimated_res != thresholder_->GetScaledEstimatedResolution()) {
2227  tprintf("Estimated resolution %d out of range! Corrected to %d\n",
2228  thresholder_->GetScaledEstimatedResolution(), estimated_res);
2229  }
2230  tesseract_->set_source_resolution(estimated_res);
2231  SavePixForCrash(estimated_res, *pix);
2232  return true;
2233 }
const int kMaxCredibleResolution
Definition: baseapi.cpp:109
virtual Pix * GetPixRectThresholds()
virtual bool ThresholdToPix(PageSegMode pageseg_mode, Pix **pix)
Returns false on error.
virtual Pix * GetPixRectGrey()
ImageThresholder * thresholder_
Image thresholding module.
Definition: baseapi.h:874
void set_source_resolution(int ppi)
void SavePixForCrash(int resolution, Pix *pix)
Definition: globaloc.cpp:34
#define tprintf(...)
Definition: tprintf.h:31
Tesseract * tesseract_
The underlying data object.
Definition: baseapi.h:870
#define ASSERT_HOST(x)
Definition: errcode.h:84
virtual void GetImageSizes(int *left, int *top, int *width, int *height, int *imagewidth, int *imageheight)
int GetScaledEstimatedResolution() const
Definition: thresholder.h:106
T ClipToRange(const T &x, const T &lower_bound, const T &upper_bound)
Definition: helpers.h:122
bool IsBinary() const
Returns true if the source image is binary.
Definition: thresholder.h:75
void SetSourceYResolution(int ppi)
Definition: thresholder.h:86
void set_pix_thresholds(Pix *thresholds)
void set_pix_grey(Pix *grey_pix)
const int kMinCredibleResolution
Definition: baseapi.cpp:107
int GetScaledYResolution() const
Definition: thresholder.h:93

◆ Version()

const char * tesseract::TessBaseAPI::Version ( )
static

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

Definition at line 144 of file baseapi.cpp.

144  {
145 #if defined(GIT_REV) && (defined(DEBUG) || defined(_DEBUG))
146  return GIT_REV;
147 #else
148  return TESSERACT_VERSION_STR;
149 #endif
150 }
#define GIT_REV
Definition: config_auto.h:14
#define TESSERACT_VERSION_STR
Definition: baseapi.h:23

Member Data Documentation

◆ block_list_

BLOCK_LIST* tesseract::TessBaseAPI::block_list_
protected

The page layout.

Definition at line 876 of file baseapi.h.

◆ datapath_

STRING* tesseract::TessBaseAPI::datapath_
protected

Current location of tessdata.

Definition at line 880 of file baseapi.h.

◆ equ_detect_

EquationDetect* tesseract::TessBaseAPI::equ_detect_
protected

The equation detector.

Definition at line 872 of file baseapi.h.

◆ input_file_

STRING* tesseract::TessBaseAPI::input_file_
protected

Name used by training code.

Definition at line 878 of file baseapi.h.

◆ language_

STRING* tesseract::TessBaseAPI::language_
protected

Last initialized language.

Definition at line 881 of file baseapi.h.

◆ last_oem_requested_

OcrEngineMode tesseract::TessBaseAPI::last_oem_requested_
protected

Last ocr language mode requested.

Definition at line 882 of file baseapi.h.

◆ osd_tesseract_

Tesseract* tesseract::TessBaseAPI::osd_tesseract_
protected

For orientation & script detection.

Definition at line 871 of file baseapi.h.

◆ output_file_

STRING* tesseract::TessBaseAPI::output_file_
protected

Name used by debug code.

Definition at line 879 of file baseapi.h.

◆ page_res_

PAGE_RES* tesseract::TessBaseAPI::page_res_
protected

The page-level data.

Definition at line 877 of file baseapi.h.

◆ paragraph_models_

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

Definition at line 875 of file baseapi.h.

◆ reader_

FileReader tesseract::TessBaseAPI::reader_
protected

Reads files from any filesystem.

Definition at line 873 of file baseapi.h.

◆ recognition_done_

bool tesseract::TessBaseAPI::recognition_done_
protected

page_res_ contains recognition data.

Definition at line 883 of file baseapi.h.

◆ tesseract_

Tesseract* tesseract::TessBaseAPI::tesseract_
protected

The underlying data object.

Definition at line 870 of file baseapi.h.

◆ thresholder_

ImageThresholder* tesseract::TessBaseAPI::thresholder_
protected

Image thresholding module.

Definition at line 874 of file baseapi.h.

◆ truth_cb_

TruthCallback* tesseract::TessBaseAPI::truth_cb_
protected

Definition at line 884 of file baseapi.h.


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