|
tesseract 3.04.01
|
00001 #ifndef TESS_CAPI_INCLUDE_BASEAPI 00002 # define TESS_CAPI_INCLUDE_BASEAPI 00003 #endif 00004 #include "capi.h" 00005 #include "genericvector.h" 00006 #include "strngs.h" 00007 00008 TESS_API const char* TESS_CALL TessVersion() 00009 { 00010 return TessBaseAPI::Version(); 00011 } 00012 00013 TESS_API void TESS_CALL TessDeleteText(char* text) 00014 { 00015 delete [] text; 00016 } 00017 00018 TESS_API void TESS_CALL TessDeleteTextArray(char** arr) 00019 { 00020 for (char** pos = arr; *pos != NULL; ++pos) 00021 delete [] *pos; 00022 delete [] arr; 00023 } 00024 00025 TESS_API void TESS_CALL TessDeleteIntArray(int* arr) 00026 { 00027 delete [] arr; 00028 } 00029 00030 TESS_API void TESS_CALL TessDeleteBlockList(BLOCK_LIST* block_list) 00031 { 00032 TessBaseAPI::DeleteBlockList(block_list); 00033 } 00034 00035 TESS_API TessResultRenderer* TESS_CALL TessTextRendererCreate(const char* outputbase) 00036 { 00037 return new TessTextRenderer(outputbase); 00038 } 00039 00040 TESS_API TessResultRenderer* TESS_CALL TessHOcrRendererCreate(const char* outputbase) 00041 { 00042 return new TessHOcrRenderer(outputbase); 00043 } 00044 00045 TESS_API TessResultRenderer* TESS_CALL TessHOcrRendererCreate2(const char* outputbase, BOOL font_info) 00046 { 00047 return new TessHOcrRenderer(outputbase, font_info); 00048 } 00049 00050 TESS_API TessResultRenderer* TESS_CALL TessPDFRendererCreate(const char* outputbase, const char* datadir) 00051 { 00052 return new TessPDFRenderer(outputbase, datadir); 00053 } 00054 00055 TESS_API TessResultRenderer* TESS_CALL TessUnlvRendererCreate(const char* outputbase) 00056 { 00057 return new TessUnlvRenderer(outputbase); 00058 } 00059 00060 TESS_API TessResultRenderer* TESS_CALL TessBoxTextRendererCreate(const char* outputbase) 00061 { 00062 return new TessBoxTextRenderer(outputbase); 00063 } 00064 00065 TESS_API void TESS_CALL TessDeleteResultRenderer(TessResultRenderer* renderer) 00066 { 00067 delete renderer; 00068 } 00069 00070 TESS_API void TESS_CALL TessResultRendererInsert(TessResultRenderer* renderer, TessResultRenderer* next) 00071 { 00072 renderer->insert(next); 00073 } 00074 00075 TESS_API TessResultRenderer* TESS_CALL TessResultRendererNext(TessResultRenderer* renderer) 00076 { 00077 return renderer->next(); 00078 } 00079 00080 TESS_API BOOL TESS_CALL TessResultRendererBeginDocument(TessResultRenderer* renderer, const char* title) 00081 { 00082 return renderer->BeginDocument(title); 00083 } 00084 00085 TESS_API BOOL TESS_CALL TessResultRendererAddImage(TessResultRenderer* renderer, TessBaseAPI* api) 00086 { 00087 return renderer->AddImage(api); 00088 } 00089 00090 TESS_API BOOL TESS_CALL TessResultRendererEndDocument(TessResultRenderer* renderer) 00091 { 00092 return renderer->EndDocument(); 00093 } 00094 00095 TESS_API const char* TESS_CALL TessResultRendererExtention(TessResultRenderer* renderer) 00096 { 00097 return renderer->file_extension(); 00098 } 00099 00100 TESS_API const char* TESS_CALL TessResultRendererTitle(TessResultRenderer* renderer) 00101 { 00102 return renderer->title(); 00103 } 00104 00105 TESS_API int TESS_CALL TessResultRendererImageNum(TessResultRenderer* renderer) 00106 { 00107 return renderer->imagenum(); 00108 } 00109 00110 TESS_API TessBaseAPI* TESS_CALL TessBaseAPICreate() 00111 { 00112 return new TessBaseAPI; 00113 } 00114 00115 TESS_API void TESS_CALL TessBaseAPIDelete(TessBaseAPI* handle) 00116 { 00117 delete handle; 00118 } 00119 00120 TESS_API size_t TESS_CALL TessBaseAPIGetOpenCLDevice(TessBaseAPI* handle, void **device) 00121 { 00122 return handle->getOpenCLDevice(device); 00123 } 00124 00125 TESS_API void TESS_CALL TessBaseAPISetInputName(TessBaseAPI* handle, const char* name) 00126 { 00127 handle->SetInputName(name); 00128 } 00129 00130 TESS_API const char* TESS_CALL TessBaseAPIGetInputName(TessBaseAPI* handle) 00131 { 00132 return handle->GetInputName(); 00133 } 00134 00135 TESS_API void TESS_CALL TessBaseAPISetInputImage(TessBaseAPI* handle, Pix* pix) 00136 { 00137 handle->SetInputImage(pix); 00138 } 00139 00140 TESS_API Pix* TESS_CALL TessBaseAPIGetInputImage(TessBaseAPI* handle) 00141 { 00142 return handle->GetInputImage(); 00143 } 00144 00145 TESS_API int TESS_CALL TessBaseAPIGetSourceYResolution(TessBaseAPI* handle) 00146 { 00147 return handle->GetSourceYResolution(); 00148 } 00149 00150 TESS_API const char* TESS_CALL TessBaseAPIGetDatapath(TessBaseAPI* handle) 00151 { 00152 return handle->GetDatapath(); 00153 } 00154 00155 TESS_API void TESS_CALL TessBaseAPISetOutputName(TessBaseAPI* handle, const char* name) 00156 { 00157 handle->SetOutputName(name); 00158 } 00159 00160 TESS_API BOOL TESS_CALL TessBaseAPISetVariable(TessBaseAPI* handle, const char* name, const char* value) 00161 { 00162 return handle->SetVariable(name, value) ? TRUE : FALSE; 00163 } 00164 00165 TESS_API BOOL TESS_CALL TessBaseAPISetDebugVariable(TessBaseAPI* handle, const char* name, const char* value) 00166 { 00167 return handle->SetVariable(name, value) ? TRUE : FALSE; 00168 } 00169 00170 TESS_API BOOL TESS_CALL TessBaseAPIGetIntVariable(const TessBaseAPI* handle, const char* name, int* value) 00171 { 00172 return handle->GetIntVariable(name, value) ? TRUE : FALSE; 00173 } 00174 00175 TESS_API BOOL TESS_CALL TessBaseAPIGetBoolVariable(const TessBaseAPI* handle, const char* name, BOOL* value) 00176 { 00177 bool boolValue; 00178 if (handle->GetBoolVariable(name, &boolValue)) 00179 { 00180 *value = boolValue ? TRUE : FALSE; 00181 return TRUE; 00182 } 00183 else 00184 { 00185 return FALSE; 00186 } 00187 } 00188 00189 TESS_API BOOL TESS_CALL TessBaseAPIGetDoubleVariable(const TessBaseAPI* handle, const char* name, double* value) 00190 { 00191 return handle->GetDoubleVariable(name, value) ? TRUE : FALSE; 00192 } 00193 00194 TESS_API const char* TESS_CALL TessBaseAPIGetStringVariable(const TessBaseAPI* handle, const char* name) 00195 { 00196 return handle->GetStringVariable(name); 00197 } 00198 00199 TESS_API void TESS_CALL TessBaseAPIPrintVariables(const TessBaseAPI* handle, FILE* fp) 00200 { 00201 handle->PrintVariables(fp); 00202 } 00203 00204 TESS_API BOOL TESS_CALL TessBaseAPIPrintVariablesToFile(const TessBaseAPI* handle, const char* filename) 00205 { 00206 FILE* fp = fopen(filename, "w"); 00207 if (fp != NULL) 00208 { 00209 handle->PrintVariables(fp); 00210 fclose(fp); 00211 return TRUE; 00212 } 00213 return FALSE; 00214 } 00215 00216 TESS_API BOOL TESS_CALL TessBaseAPIGetVariableAsString(TessBaseAPI* handle, const char* name, STRING* val) 00217 { 00218 return handle->GetVariableAsString(name, val) ? TRUE : FALSE; 00219 } 00220 00221 TESS_API int TESS_CALL TessBaseAPIInit4(TessBaseAPI* handle, const char* datapath, const char* language, 00222 TessOcrEngineMode mode, char** configs, int configs_size, 00223 char** vars_vec, char** vars_values, size_t vars_vec_size, 00224 BOOL set_only_non_debug_params) 00225 { 00226 GenericVector<STRING> varNames; 00227 GenericVector<STRING> varValues; 00228 if (vars_vec != NULL && vars_values != NULL) { 00229 for (size_t i = 0; i < vars_vec_size; i++) { 00230 varNames.push_back(STRING(vars_vec[i])); 00231 varValues.push_back(STRING(vars_values[i])); 00232 } 00233 } 00234 00235 return handle->Init(datapath, language, mode, configs, configs_size, &varNames, &varValues, set_only_non_debug_params); 00236 } 00237 00238 00239 TESS_API int TESS_CALL TessBaseAPIInit1(TessBaseAPI* handle, const char* datapath, const char* language, TessOcrEngineMode oem, 00240 char** configs, int configs_size) 00241 { 00242 return handle->Init(datapath, language, oem, configs, configs_size, NULL, NULL, false); 00243 } 00244 00245 TESS_API int TESS_CALL TessBaseAPIInit2(TessBaseAPI* handle, const char* datapath, const char* language, TessOcrEngineMode oem) 00246 { 00247 return handle->Init(datapath, language, oem); 00248 } 00249 00250 TESS_API int TESS_CALL TessBaseAPIInit3(TessBaseAPI* handle, const char* datapath, const char* language) 00251 { 00252 return handle->Init(datapath, language); 00253 } 00254 00255 TESS_API const char* TESS_CALL TessBaseAPIGetInitLanguagesAsString(const TessBaseAPI* handle) 00256 { 00257 return handle->GetInitLanguagesAsString(); 00258 } 00259 00260 TESS_API char** TESS_CALL TessBaseAPIGetLoadedLanguagesAsVector(const TessBaseAPI* handle) 00261 { 00262 GenericVector<STRING> languages; 00263 handle->GetLoadedLanguagesAsVector(&languages); 00264 char** arr = new char*[languages.size() + 1]; 00265 for (int index = 0; index < languages.size(); ++index) 00266 arr[index] = languages[index].strdup(); 00267 arr[languages.size()] = NULL; 00268 return arr; 00269 } 00270 00271 TESS_API char** TESS_CALL TessBaseAPIGetAvailableLanguagesAsVector(const TessBaseAPI* handle) 00272 { 00273 GenericVector<STRING> languages; 00274 handle->GetAvailableLanguagesAsVector(&languages); 00275 char** arr = new char*[languages.size() + 1]; 00276 for (int index = 0; index < languages.size(); ++index) 00277 arr[index] = languages[index].strdup(); 00278 arr[languages.size()] = NULL; 00279 return arr; 00280 } 00281 00282 TESS_API int TESS_CALL TessBaseAPIInitLangMod(TessBaseAPI* handle, const char* datapath, const char* language) 00283 { 00284 return handle->InitLangMod(datapath, language); 00285 } 00286 00287 TESS_API void TESS_CALL TessBaseAPIInitForAnalysePage(TessBaseAPI* handle) 00288 { 00289 handle->InitForAnalysePage(); 00290 } 00291 00292 TESS_API void TESS_CALL TessBaseAPIReadConfigFile(TessBaseAPI* handle, const char* filename) 00293 { 00294 handle->ReadConfigFile(filename); 00295 } 00296 00297 TESS_API void TESS_CALL TessBaseAPIReadDebugConfigFile(TessBaseAPI* handle, const char* filename) 00298 { 00299 handle->ReadDebugConfigFile(filename); 00300 } 00301 00302 TESS_API void TESS_CALL TessBaseAPISetPageSegMode(TessBaseAPI* handle, TessPageSegMode mode) 00303 { 00304 handle->SetPageSegMode(mode); 00305 } 00306 00307 TESS_API TessPageSegMode TESS_CALL TessBaseAPIGetPageSegMode(const TessBaseAPI* handle) 00308 { 00309 return handle->GetPageSegMode(); 00310 } 00311 00312 TESS_API char* TESS_CALL TessBaseAPIRect(TessBaseAPI* handle, const unsigned char* imagedata, 00313 int bytes_per_pixel, int bytes_per_line, 00314 int left, int top, int width, int height) 00315 { 00316 return handle->TesseractRect(imagedata, bytes_per_pixel, bytes_per_line, left, top, width, height); 00317 } 00318 00319 TESS_API void TESS_CALL TessBaseAPIClearAdaptiveClassifier(TessBaseAPI* handle) 00320 { 00321 handle->ClearAdaptiveClassifier(); 00322 } 00323 00324 TESS_API void TESS_CALL TessBaseAPISetImage(TessBaseAPI* handle, const unsigned char* imagedata, int width, int height, 00325 int bytes_per_pixel, int bytes_per_line) 00326 { 00327 handle->SetImage(imagedata, width, height, bytes_per_pixel, bytes_per_line); 00328 } 00329 00330 TESS_API void TESS_CALL TessBaseAPISetImage2(TessBaseAPI* handle, struct Pix* pix) 00331 { 00332 return handle->SetImage(pix); 00333 } 00334 00335 TESS_API void TESS_CALL TessBaseAPISetSourceResolution(TessBaseAPI* handle, int ppi) 00336 { 00337 handle->SetSourceResolution(ppi); 00338 } 00339 00340 TESS_API void TESS_CALL TessBaseAPISetRectangle(TessBaseAPI* handle, int left, int top, int width, int height) 00341 { 00342 handle->SetRectangle(left, top, width, height); 00343 } 00344 00345 TESS_API void TESS_CALL TessBaseAPISetThresholder(TessBaseAPI* handle, TessImageThresholder* thresholder) 00346 { 00347 handle->SetThresholder(thresholder); 00348 } 00349 00350 TESS_API struct Pix* TESS_CALL TessBaseAPIGetThresholdedImage(TessBaseAPI* handle) 00351 { 00352 return handle->GetThresholdedImage(); 00353 } 00354 00355 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetRegions(TessBaseAPI* handle, struct Pixa** pixa) 00356 { 00357 return handle->GetRegions(pixa); 00358 } 00359 00360 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetTextlines(TessBaseAPI* handle, struct Pixa** pixa, int** blockids) 00361 { 00362 return handle->GetTextlines(pixa, blockids); 00363 } 00364 00365 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetTextlines1(TessBaseAPI* handle, const BOOL raw_image, const int raw_padding, 00366 struct Pixa** pixa, int** blockids, int** paraids) 00367 { 00368 return handle->GetTextlines(raw_image, raw_padding, pixa, blockids, paraids); 00369 } 00370 00371 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetStrips(TessBaseAPI* handle, struct Pixa** pixa, int** blockids) 00372 { 00373 return handle->GetStrips(pixa, blockids); 00374 } 00375 00376 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetWords(TessBaseAPI* handle, struct Pixa** pixa) 00377 { 00378 return handle->GetWords(pixa); 00379 } 00380 00381 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetConnectedComponents(TessBaseAPI* handle, struct Pixa** cc) 00382 { 00383 return handle->GetConnectedComponents(cc); 00384 } 00385 00386 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetComponentImages(TessBaseAPI* handle, TessPageIteratorLevel level, BOOL text_only, struct Pixa** pixa, int** blockids) 00387 { 00388 return handle->GetComponentImages(level, text_only != FALSE, pixa, blockids); 00389 } 00390 00391 TESS_API struct Boxa* 00392 TESS_CALL TessBaseAPIGetComponentImages1( TessBaseAPI* handle, const TessPageIteratorLevel level, const BOOL text_only, 00393 const BOOL raw_image, const int raw_padding, 00394 struct Pixa** pixa, int** blockids, int** paraids) 00395 { 00396 return handle->GetComponentImages(level, text_only != FALSE, raw_image, raw_padding, pixa, blockids, paraids); 00397 } 00398 00399 TESS_API int TESS_CALL TessBaseAPIGetThresholdedImageScaleFactor(const TessBaseAPI* handle) 00400 { 00401 return handle->GetThresholdedImageScaleFactor(); 00402 } 00403 00404 TESS_API void TESS_CALL TessBaseAPIDumpPGM(TessBaseAPI* handle, const char* filename) 00405 { 00406 handle->DumpPGM(filename); 00407 } 00408 00409 TESS_API TessPageIterator* TESS_CALL TessBaseAPIAnalyseLayout(TessBaseAPI* handle) 00410 { 00411 return handle->AnalyseLayout(); 00412 } 00413 00414 TESS_API int TESS_CALL TessBaseAPIRecognize(TessBaseAPI* handle, ETEXT_DESC* monitor) 00415 { 00416 return handle->Recognize(monitor); 00417 } 00418 00419 TESS_API int TESS_CALL TessBaseAPIRecognizeForChopTest(TessBaseAPI* handle, ETEXT_DESC* monitor) 00420 { 00421 return handle->RecognizeForChopTest(monitor); 00422 } 00423 00424 TESS_API BOOL TESS_CALL TessBaseAPIProcessPages(TessBaseAPI* handle, const char* filename, const char* retry_config, 00425 int timeout_millisec, TessResultRenderer* renderer) 00426 { 00427 if (handle->ProcessPages(filename, retry_config, timeout_millisec, renderer)) 00428 return TRUE; 00429 else 00430 return FALSE; 00431 } 00432 00433 TESS_API BOOL TESS_CALL TessBaseAPIProcessPage(TessBaseAPI* handle, struct Pix* pix, int page_index, const char* filename, 00434 const char* retry_config, int timeout_millisec, TessResultRenderer* renderer) 00435 { 00436 if (handle->ProcessPage(pix, page_index, filename, retry_config, timeout_millisec, renderer)) 00437 return TRUE; 00438 else 00439 return FALSE; 00440 } 00441 00442 TESS_API TessResultIterator* TESS_CALL TessBaseAPIGetIterator(TessBaseAPI* handle) 00443 { 00444 return handle->GetIterator(); 00445 } 00446 00447 TESS_API TessMutableIterator* TESS_CALL TessBaseAPIGetMutableIterator(TessBaseAPI* handle) 00448 { 00449 return handle->GetMutableIterator(); 00450 } 00451 00452 TESS_API char* TESS_CALL TessBaseAPIGetUTF8Text(TessBaseAPI* handle) 00453 { 00454 return handle->GetUTF8Text(); 00455 } 00456 00457 TESS_API char* TESS_CALL TessBaseAPIGetHOCRText(TessBaseAPI* handle, int page_number) 00458 { 00459 return handle->GetHOCRText(page_number); 00460 } 00461 00462 TESS_API char* TESS_CALL TessBaseAPIGetBoxText(TessBaseAPI* handle, int page_number) 00463 { 00464 return handle->GetBoxText(page_number); 00465 } 00466 00467 TESS_API char* TESS_CALL TessBaseAPIGetUNLVText(TessBaseAPI* handle) 00468 { 00469 return handle->GetUNLVText(); 00470 } 00471 00472 TESS_API int TESS_CALL TessBaseAPIMeanTextConf(TessBaseAPI* handle) 00473 { 00474 return handle->MeanTextConf(); 00475 } 00476 00477 TESS_API int* TESS_CALL TessBaseAPIAllWordConfidences(TessBaseAPI* handle) 00478 { 00479 return handle->AllWordConfidences(); 00480 } 00481 00482 TESS_API BOOL TESS_CALL TessBaseAPIAdaptToWordStr(TessBaseAPI* handle, TessPageSegMode mode, const char* wordstr) 00483 { 00484 return handle->AdaptToWordStr(mode, wordstr) ? TRUE : FALSE; 00485 } 00486 00487 TESS_API void TESS_CALL TessBaseAPIClear(TessBaseAPI* handle) 00488 { 00489 handle->Clear(); 00490 } 00491 00492 TESS_API void TESS_CALL TessBaseAPIEnd(TessBaseAPI* handle) 00493 { 00494 handle->End(); 00495 } 00496 00497 TESS_API int TESS_CALL TessBaseAPIIsValidWord(TessBaseAPI* handle, const char* word) 00498 { 00499 return handle->IsValidWord(word); 00500 } 00501 00502 TESS_API BOOL TESS_CALL TessBaseAPIGetTextDirection(TessBaseAPI* handle, int* out_offset, float* out_slope) 00503 { 00504 return handle->GetTextDirection(out_offset, out_slope) ? TRUE : FALSE; 00505 } 00506 00507 TESS_API void TESS_CALL TessBaseAPISetDictFunc(TessBaseAPI* handle, TessDictFunc f) 00508 { 00509 handle->SetDictFunc(f); 00510 } 00511 00512 TESS_API void TESS_CALL TessBaseAPIClearPersistentCache(TessBaseAPI* handle) 00513 { 00514 handle->ClearPersistentCache(); 00515 } 00516 00517 TESS_API void TESS_CALL TessBaseAPISetProbabilityInContextFunc(TessBaseAPI* handle, TessProbabilityInContextFunc f) 00518 { 00519 handle->SetProbabilityInContextFunc(f); 00520 } 00521 00522 TESS_API BOOL TESS_CALL TessBaseAPIDetectOS(TessBaseAPI* handle, OSResults* results) 00523 { 00524 return handle->DetectOS(results) ? TRUE : FALSE; 00525 } 00526 00527 TESS_API void TESS_CALL TessBaseAPIGetFeaturesForBlob(TessBaseAPI* handle, TBLOB* blob, INT_FEATURE_STRUCT* int_features, 00528 int* num_features, int* FeatureOutlineIndex) 00529 { 00530 handle->GetFeaturesForBlob(blob, int_features, num_features, FeatureOutlineIndex); 00531 } 00532 00533 TESS_API ROW* TESS_CALL TessFindRowForBox(BLOCK_LIST* blocks, int left, int top, int right, int bottom) 00534 { 00535 return TessBaseAPI::FindRowForBox(blocks, left, top, right, bottom); 00536 } 00537 00538 TESS_API void TESS_CALL TessBaseAPIRunAdaptiveClassifier(TessBaseAPI* handle, TBLOB* blob, int num_max_matches, 00539 int* unichar_ids, float* ratings, int* num_matches_returned) 00540 { 00541 handle->RunAdaptiveClassifier(blob, num_max_matches, unichar_ids, ratings, num_matches_returned); 00542 } 00543 00544 TESS_API const char* TESS_CALL TessBaseAPIGetUnichar(TessBaseAPI* handle, int unichar_id) 00545 { 00546 return handle->GetUnichar(unichar_id); 00547 } 00548 00549 TESS_API const TessDawg* TESS_CALL TessBaseAPIGetDawg(const TessBaseAPI* handle, int i) 00550 { 00551 return handle->GetDawg(i); 00552 } 00553 00554 TESS_API int TESS_CALL TessBaseAPINumDawgs(const TessBaseAPI* handle) 00555 { 00556 return handle->NumDawgs(); 00557 } 00558 00559 TESS_API ROW* TESS_CALL TessMakeTessOCRRow(float baseline, float xheight, float descender, float ascender) 00560 { 00561 return TessBaseAPI::MakeTessOCRRow(baseline, xheight, descender, ascender); 00562 } 00563 00564 TESS_API TBLOB* TESS_CALL TessMakeTBLOB(struct Pix* pix) 00565 { 00566 return TessBaseAPI::MakeTBLOB(pix); 00567 } 00568 00569 TESS_API void TESS_CALL TessNormalizeTBLOB(TBLOB* tblob, ROW* row, BOOL numeric_mode) 00570 { 00571 TessBaseAPI::NormalizeTBLOB(tblob, row, numeric_mode != FALSE); 00572 } 00573 00574 TESS_API TessOcrEngineMode TESS_CALL TessBaseAPIOem(const TessBaseAPI* handle) 00575 { 00576 return handle->oem(); 00577 } 00578 00579 TESS_API void TESS_CALL TessBaseAPIInitTruthCallback(TessBaseAPI* handle, TessTruthCallback* cb) 00580 { 00581 handle->InitTruthCallback(cb); 00582 } 00583 00584 #ifndef NO_CUBE_BUILD 00585 TESS_API TessCubeRecoContext* TESS_CALL TessBaseAPIGetCubeRecoContext(const TessBaseAPI* handle) 00586 { 00587 return handle->GetCubeRecoContext(); 00588 } 00589 #endif // NO_CUBE_BUILD 00590 00591 TESS_API void TESS_CALL TessBaseAPISetMinOrientationMargin(TessBaseAPI* handle, double margin) 00592 { 00593 handle->set_min_orientation_margin(margin); 00594 } 00595 00596 TESS_API void TESS_CALL TessBaseGetBlockTextOrientations(TessBaseAPI* handle, int** block_orientation, bool** vertical_writing) 00597 { 00598 handle->GetBlockTextOrientations(block_orientation, vertical_writing); 00599 } 00600 00601 TESS_API BLOCK_LIST* TESS_CALL TessBaseAPIFindLinesCreateBlockList(TessBaseAPI* handle) 00602 { 00603 return handle->FindLinesCreateBlockList(); 00604 } 00605 00606 TESS_API void TESS_CALL TessPageIteratorDelete(TessPageIterator* handle) 00607 { 00608 delete handle; 00609 } 00610 00611 TESS_API TessPageIterator* TESS_CALL TessPageIteratorCopy(const TessPageIterator* handle) 00612 { 00613 return new TessPageIterator(*handle); 00614 } 00615 00616 TESS_API void TESS_CALL TessPageIteratorBegin(TessPageIterator* handle) 00617 { 00618 handle->Begin(); 00619 } 00620 00621 TESS_API BOOL TESS_CALL TessPageIteratorNext(TessPageIterator* handle, TessPageIteratorLevel level) 00622 { 00623 return handle->Next(level) ? TRUE : FALSE; 00624 } 00625 00626 TESS_API BOOL TESS_CALL TessPageIteratorIsAtBeginningOf(const TessPageIterator* handle, TessPageIteratorLevel level) 00627 { 00628 return handle->IsAtBeginningOf(level) ? TRUE : FALSE; 00629 } 00630 00631 TESS_API BOOL TESS_CALL TessPageIteratorIsAtFinalElement(const TessPageIterator* handle, TessPageIteratorLevel level, 00632 TessPageIteratorLevel element) 00633 { 00634 return handle->IsAtFinalElement(level, element) ? TRUE : FALSE; 00635 } 00636 00637 TESS_API BOOL TESS_CALL TessPageIteratorBoundingBox(const TessPageIterator* handle, TessPageIteratorLevel level, 00638 int* left, int* top, int* right, int* bottom) 00639 { 00640 return handle->BoundingBox(level, left, top, right, bottom) ? TRUE : FALSE; 00641 } 00642 00643 TESS_API TessPolyBlockType TESS_CALL TessPageIteratorBlockType(const TessPageIterator* handle) 00644 { 00645 return handle->BlockType(); 00646 } 00647 00648 TESS_API struct Pix* TESS_CALL TessPageIteratorGetBinaryImage(const TessPageIterator* handle, TessPageIteratorLevel level) 00649 { 00650 return handle->GetBinaryImage(level); 00651 } 00652 00653 TESS_API struct Pix* TESS_CALL TessPageIteratorGetImage(const TessPageIterator* handle, TessPageIteratorLevel level, int padding, 00654 struct Pix* original_image, int* left, int* top) 00655 { 00656 return handle->GetImage(level, padding, original_image, left, top); 00657 } 00658 00659 TESS_API BOOL TESS_CALL TessPageIteratorBaseline(const TessPageIterator* handle, TessPageIteratorLevel level, 00660 int* x1, int* y1, int* x2, int* y2) 00661 { 00662 return handle->Baseline(level, x1, y1, x2, y2) ? TRUE : FALSE; 00663 } 00664 00665 TESS_API void TESS_CALL TessPageIteratorOrientation(TessPageIterator* handle, TessOrientation* orientation, 00666 TessWritingDirection* writing_direction, TessTextlineOrder* textline_order, 00667 float* deskew_angle) 00668 { 00669 handle->Orientation(orientation, writing_direction, textline_order, deskew_angle); 00670 } 00671 00672 TESS_API void TESS_CALL TessPageIteratorParagraphInfo(TessPageIterator* handle, TessParagraphJustification* justification, 00673 BOOL *is_list_item, BOOL *is_crown, int *first_line_indent) 00674 { 00675 bool bool_is_list_item, bool_is_crown; 00676 handle->ParagraphInfo(justification, &bool_is_list_item, &bool_is_crown, first_line_indent); 00677 if (is_list_item) 00678 *is_list_item = bool_is_list_item ? TRUE : FALSE; 00679 if (is_crown) 00680 *is_crown = bool_is_crown ? TRUE : FALSE; 00681 } 00682 00683 00684 TESS_API void TESS_CALL TessResultIteratorDelete(TessResultIterator* handle) 00685 { 00686 delete handle; 00687 } 00688 00689 TESS_API TessResultIterator* TESS_CALL TessResultIteratorCopy(const TessResultIterator* handle) 00690 { 00691 return new TessResultIterator(*handle); 00692 } 00693 00694 TESS_API TessPageIterator* TESS_CALL TessResultIteratorGetPageIterator(TessResultIterator* handle) 00695 { 00696 return handle; 00697 } 00698 00699 TESS_API const TessPageIterator* TESS_CALL TessResultIteratorGetPageIteratorConst(const TessResultIterator* handle) 00700 { 00701 return handle; 00702 } 00703 00704 TESS_API TessChoiceIterator* TESS_CALL TessResultIteratorGetChoiceIterator(const TessResultIterator* handle) 00705 { 00706 return new TessChoiceIterator(*handle); 00707 } 00708 00709 TESS_API BOOL TESS_CALL TessResultIteratorNext(TessResultIterator* handle, TessPageIteratorLevel level) 00710 { 00711 return handle->Next(level); 00712 } 00713 00714 TESS_API char* TESS_CALL TessResultIteratorGetUTF8Text(const TessResultIterator* handle, TessPageIteratorLevel level) 00715 { 00716 return handle->GetUTF8Text(level); 00717 } 00718 00719 TESS_API float TESS_CALL TessResultIteratorConfidence(const TessResultIterator* handle, TessPageIteratorLevel level) 00720 { 00721 return handle->Confidence(level); 00722 } 00723 00724 TESS_API const char* TESS_CALL TessResultIteratorWordRecognitionLanguage(const TessResultIterator* handle) 00725 { 00726 return handle->WordRecognitionLanguage(); 00727 } 00728 00729 TESS_API const char* TESS_CALL TessResultIteratorWordFontAttributes(const TessResultIterator* handle, BOOL* is_bold, BOOL* is_italic, 00730 BOOL* is_underlined, BOOL* is_monospace, BOOL* is_serif, 00731 BOOL* is_smallcaps, int* pointsize, int* font_id) 00732 { 00733 bool bool_is_bold, bool_is_italic, bool_is_underlined, bool_is_monospace, bool_is_serif, bool_is_smallcaps; 00734 const char* ret = handle->WordFontAttributes(&bool_is_bold, &bool_is_italic, &bool_is_underlined, &bool_is_monospace, &bool_is_serif, 00735 &bool_is_smallcaps, pointsize, font_id); 00736 if (is_bold) 00737 *is_bold = bool_is_bold ? TRUE : FALSE; 00738 if (is_italic) 00739 *is_italic = bool_is_italic ? TRUE : FALSE; 00740 if (is_underlined) 00741 *is_underlined = bool_is_underlined ? TRUE : FALSE; 00742 if (is_monospace) 00743 *is_monospace = bool_is_monospace ? TRUE : FALSE; 00744 if (is_serif) 00745 *is_serif = bool_is_serif ? TRUE : FALSE; 00746 if (is_smallcaps) 00747 *is_smallcaps = bool_is_smallcaps ? TRUE : FALSE; 00748 return ret; 00749 } 00750 00751 TESS_API BOOL TESS_CALL TessResultIteratorWordIsFromDictionary(const TessResultIterator* handle) 00752 { 00753 return handle->WordIsFromDictionary() ? TRUE : FALSE; 00754 } 00755 00756 TESS_API BOOL TESS_CALL TessResultIteratorWordIsNumeric(const TessResultIterator* handle) 00757 { 00758 return handle->WordIsNumeric() ? TRUE : FALSE; 00759 } 00760 00761 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsSuperscript(const TessResultIterator* handle) 00762 { 00763 return handle->SymbolIsSuperscript() ? TRUE : FALSE; 00764 } 00765 00766 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsSubscript(const TessResultIterator* handle) 00767 { 00768 return handle->SymbolIsSubscript() ? TRUE : FALSE; 00769 } 00770 00771 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsDropcap(const TessResultIterator* handle) 00772 { 00773 return handle->SymbolIsDropcap() ? TRUE : FALSE; 00774 } 00775 00776 TESS_API void TESS_CALL TessChoiceIteratorDelete(TessChoiceIterator* handle) 00777 { 00778 delete handle; 00779 } 00780 00781 TESS_API BOOL TESS_CALL TessChoiceIteratorNext(TessChoiceIterator* handle) 00782 { 00783 return handle->Next(); 00784 } 00785 00786 TESS_API const char* TESS_CALL TessChoiceIteratorGetUTF8Text(const TessChoiceIterator* handle) 00787 { 00788 return handle->GetUTF8Text(); 00789 } 00790 00791 TESS_API float TESS_CALL TessChoiceIteratorConfidence(const TessChoiceIterator* handle) 00792 { 00793 return handle->Confidence(); 00794 }