capi.h 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628
  1. ///////////////////////////////////////////////////////////////////////
  2. // File: capi.h
  3. // Description: C-API TessBaseAPI
  4. //
  5. // (C) Copyright 2012, Google Inc.
  6. // Licensed under the Apache License, Version 2.0 (the "License");
  7. // you may not use this file except in compliance with the License.
  8. // You may obtain a copy of the License at
  9. // http://www.apache.org/licenses/LICENSE-2.0
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. // See the License for the specific language governing permissions and
  14. // limitations under the License.
  15. //
  16. ///////////////////////////////////////////////////////////////////////
  17. #ifndef API_CAPI_H_
  18. #define API_CAPI_H_
  19. #if defined(TESSERACT_API_BASEAPI_H_) && !defined(TESS_CAPI_INCLUDE_BASEAPI)
  20. # define TESS_CAPI_INCLUDE_BASEAPI
  21. #endif
  22. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  23. # include "baseapi.h"
  24. # include "ocrclass.h"
  25. # include "pageiterator.h"
  26. # include "renderer.h"
  27. # include "resultiterator.h"
  28. #else
  29. # include <stdbool.h>
  30. # include <stdio.h>
  31. # include "platform.h"
  32. #endif
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. #ifndef TESS_CALL
  37. # if defined(WIN32)
  38. # define TESS_CALL __cdecl
  39. # else
  40. # define TESS_CALL
  41. # endif
  42. #endif
  43. #ifndef BOOL
  44. # define BOOL int
  45. # define TRUE 1
  46. # define FALSE 0
  47. #endif
  48. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  49. typedef tesseract::TessResultRenderer TessResultRenderer;
  50. typedef tesseract::TessTextRenderer TessTextRenderer;
  51. typedef tesseract::TessHOcrRenderer TessHOcrRenderer;
  52. typedef tesseract::TessAltoRenderer TessAltoRenderer;
  53. typedef tesseract::TessTsvRenderer TessTsvRenderer;
  54. typedef tesseract::TessPDFRenderer TessPDFRenderer;
  55. typedef tesseract::TessUnlvRenderer TessUnlvRenderer;
  56. typedef tesseract::TessBoxTextRenderer TessBoxTextRenderer;
  57. typedef tesseract::TessWordStrBoxRenderer TessWordStrBoxRenderer;
  58. typedef tesseract::TessLSTMBoxRenderer TessLSTMBoxRenderer;
  59. typedef tesseract::TessBaseAPI TessBaseAPI;
  60. typedef tesseract::PageIterator TessPageIterator;
  61. typedef tesseract::ResultIterator TessResultIterator;
  62. typedef tesseract::MutableIterator TessMutableIterator;
  63. typedef tesseract::ChoiceIterator TessChoiceIterator;
  64. typedef tesseract::OcrEngineMode TessOcrEngineMode;
  65. typedef tesseract::PageSegMode TessPageSegMode;
  66. typedef tesseract::ImageThresholder TessImageThresholder;
  67. typedef tesseract::PageIteratorLevel TessPageIteratorLevel;
  68. typedef tesseract::DictFunc TessDictFunc;
  69. typedef tesseract::ProbabilityInContextFunc TessProbabilityInContextFunc;
  70. // typedef tesseract::ParamsModelClassifyFunc TessParamsModelClassifyFunc;
  71. typedef tesseract::FillLatticeFunc TessFillLatticeFunc;
  72. typedef tesseract::Dawg TessDawg;
  73. typedef tesseract::TruthCallback TessTruthCallback;
  74. typedef tesseract::Orientation TessOrientation;
  75. typedef tesseract::ParagraphJustification TessParagraphJustification;
  76. typedef tesseract::WritingDirection TessWritingDirection;
  77. typedef tesseract::TextlineOrder TessTextlineOrder;
  78. typedef PolyBlockType TessPolyBlockType;
  79. #else
  80. typedef struct TessResultRenderer TessResultRenderer;
  81. typedef struct TessTextRenderer TessTextRenderer;
  82. typedef struct TessHOcrRenderer TessHOcrRenderer;
  83. typedef struct TessPDFRenderer TessPDFRenderer;
  84. typedef struct TessUnlvRenderer TessUnlvRenderer;
  85. typedef struct TessBoxTextRenderer TessBoxTextRenderer;
  86. typedef struct TessBaseAPI TessBaseAPI;
  87. typedef struct TessPageIterator TessPageIterator;
  88. typedef struct TessResultIterator TessResultIterator;
  89. typedef struct TessMutableIterator TessMutableIterator;
  90. typedef struct TessChoiceIterator TessChoiceIterator;
  91. typedef enum TessOcrEngineMode {
  92. OEM_TESSERACT_ONLY,
  93. OEM_LSTM_ONLY,
  94. OEM_TESSERACT_LSTM_COMBINED,
  95. OEM_DEFAULT
  96. } TessOcrEngineMode;
  97. typedef enum TessPageSegMode {
  98. PSM_OSD_ONLY,
  99. PSM_AUTO_OSD,
  100. PSM_AUTO_ONLY,
  101. PSM_AUTO,
  102. PSM_SINGLE_COLUMN,
  103. PSM_SINGLE_BLOCK_VERT_TEXT,
  104. PSM_SINGLE_BLOCK,
  105. PSM_SINGLE_LINE,
  106. PSM_SINGLE_WORD,
  107. PSM_CIRCLE_WORD,
  108. PSM_SINGLE_CHAR,
  109. PSM_SPARSE_TEXT,
  110. PSM_SPARSE_TEXT_OSD,
  111. PSM_COUNT
  112. } TessPageSegMode;
  113. typedef enum TessPageIteratorLevel {
  114. RIL_BLOCK,
  115. RIL_PARA,
  116. RIL_TEXTLINE,
  117. RIL_WORD,
  118. RIL_SYMBOL
  119. } TessPageIteratorLevel;
  120. typedef enum TessPolyBlockType {
  121. PT_UNKNOWN,
  122. PT_FLOWING_TEXT,
  123. PT_HEADING_TEXT,
  124. PT_PULLOUT_TEXT,
  125. PT_EQUATION,
  126. PT_INLINE_EQUATION,
  127. PT_TABLE,
  128. PT_VERTICAL_TEXT,
  129. PT_CAPTION_TEXT,
  130. PT_FLOWING_IMAGE,
  131. PT_HEADING_IMAGE,
  132. PT_PULLOUT_IMAGE,
  133. PT_HORZ_LINE,
  134. PT_VERT_LINE,
  135. PT_NOISE,
  136. PT_COUNT
  137. } TessPolyBlockType;
  138. typedef enum TessOrientation {
  139. ORIENTATION_PAGE_UP,
  140. ORIENTATION_PAGE_RIGHT,
  141. ORIENTATION_PAGE_DOWN,
  142. ORIENTATION_PAGE_LEFT
  143. } TessOrientation;
  144. typedef enum TessParagraphJustification {
  145. JUSTIFICATION_UNKNOWN,
  146. JUSTIFICATION_LEFT,
  147. JUSTIFICATION_CENTER,
  148. JUSTIFICATION_RIGHT
  149. } TessParagraphJustification;
  150. typedef enum TessWritingDirection {
  151. WRITING_DIRECTION_LEFT_TO_RIGHT,
  152. WRITING_DIRECTION_RIGHT_TO_LEFT,
  153. WRITING_DIRECTION_TOP_TO_BOTTOM
  154. } TessWritingDirection;
  155. typedef enum TessTextlineOrder {
  156. TEXTLINE_ORDER_LEFT_TO_RIGHT,
  157. TEXTLINE_ORDER_RIGHT_TO_LEFT,
  158. TEXTLINE_ORDER_TOP_TO_BOTTOM
  159. } TessTextlineOrder;
  160. typedef struct ETEXT_DESC ETEXT_DESC;
  161. #endif
  162. typedef bool (*TessCancelFunc)(void* cancel_this, int words);
  163. typedef bool (*TessProgressFunc)(ETEXT_DESC* ths, int left, int right, int top,
  164. int bottom);
  165. struct Pix;
  166. struct Boxa;
  167. struct Pixa;
  168. /* General free functions */
  169. TESS_API const char* TESS_CALL TessVersion();
  170. TESS_API void TESS_CALL TessDeleteText(const char* text);
  171. TESS_API void TESS_CALL TessDeleteTextArray(char** arr);
  172. TESS_API void TESS_CALL TessDeleteIntArray(const int* arr);
  173. /* Renderer API */
  174. TESS_API TessResultRenderer* TESS_CALL
  175. TessTextRendererCreate(const char* outputbase);
  176. TESS_API TessResultRenderer* TESS_CALL
  177. TessHOcrRendererCreate(const char* outputbase);
  178. TESS_API TessResultRenderer* TESS_CALL
  179. TessHOcrRendererCreate2(const char* outputbase, BOOL font_info);
  180. TESS_API TessResultRenderer* TESS_CALL
  181. TessAltoRendererCreate(const char* outputbase);
  182. TESS_API TessResultRenderer* TESS_CALL
  183. TessTsvRendererCreate(const char* outputbase);
  184. TESS_API TessResultRenderer* TESS_CALL TessPDFRendererCreate(
  185. const char* outputbase, const char* datadir, BOOL textonly);
  186. TESS_API TessResultRenderer* TESS_CALL
  187. TessUnlvRendererCreate(const char* outputbase);
  188. TESS_API TessResultRenderer* TESS_CALL
  189. TessBoxTextRendererCreate(const char* outputbase);
  190. TESS_API TessResultRenderer* TESS_CALL
  191. TessLSTMBoxRendererCreate(const char* outputbase);
  192. TESS_API TessResultRenderer* TESS_CALL
  193. TessWordStrBoxRendererCreate(const char* outputbase);
  194. TESS_API void TESS_CALL TessDeleteResultRenderer(TessResultRenderer* renderer);
  195. TESS_API void TESS_CALL TessResultRendererInsert(TessResultRenderer* renderer,
  196. TessResultRenderer* next);
  197. TESS_API TessResultRenderer* TESS_CALL
  198. TessResultRendererNext(TessResultRenderer* renderer);
  199. TESS_API BOOL TESS_CALL TessResultRendererBeginDocument(
  200. TessResultRenderer* renderer, const char* title);
  201. TESS_API BOOL TESS_CALL TessResultRendererAddImage(TessResultRenderer* renderer,
  202. TessBaseAPI* api);
  203. TESS_API BOOL TESS_CALL
  204. TessResultRendererEndDocument(TessResultRenderer* renderer);
  205. TESS_API const char* TESS_CALL
  206. TessResultRendererExtention(TessResultRenderer* renderer);
  207. TESS_API const char* TESS_CALL
  208. TessResultRendererTitle(TessResultRenderer* renderer);
  209. TESS_API int TESS_CALL TessResultRendererImageNum(TessResultRenderer* renderer);
  210. /* Base API */
  211. TESS_API TessBaseAPI* TESS_CALL TessBaseAPICreate();
  212. TESS_API void TESS_CALL TessBaseAPIDelete(TessBaseAPI* handle);
  213. TESS_API size_t TESS_CALL TessBaseAPIGetOpenCLDevice(TessBaseAPI* handle,
  214. void** device);
  215. TESS_API void TESS_CALL TessBaseAPISetInputName(TessBaseAPI* handle,
  216. const char* name);
  217. TESS_API const char* TESS_CALL TessBaseAPIGetInputName(TessBaseAPI* handle);
  218. TESS_API void TESS_CALL TessBaseAPISetInputImage(TessBaseAPI* handle,
  219. struct Pix* pix);
  220. TESS_API struct Pix* TESS_CALL TessBaseAPIGetInputImage(TessBaseAPI* handle);
  221. TESS_API int TESS_CALL TessBaseAPIGetSourceYResolution(TessBaseAPI* handle);
  222. TESS_API const char* TESS_CALL TessBaseAPIGetDatapath(TessBaseAPI* handle);
  223. TESS_API void TESS_CALL TessBaseAPISetOutputName(TessBaseAPI* handle,
  224. const char* name);
  225. TESS_API BOOL TESS_CALL TessBaseAPISetVariable(TessBaseAPI* handle,
  226. const char* name,
  227. const char* value);
  228. TESS_API BOOL TESS_CALL TessBaseAPISetDebugVariable(TessBaseAPI* handle,
  229. const char* name,
  230. const char* value);
  231. TESS_API BOOL TESS_CALL TessBaseAPIGetIntVariable(const TessBaseAPI* handle,
  232. const char* name, int* value);
  233. TESS_API BOOL TESS_CALL TessBaseAPIGetBoolVariable(const TessBaseAPI* handle,
  234. const char* name,
  235. BOOL* value);
  236. TESS_API BOOL TESS_CALL TessBaseAPIGetDoubleVariable(const TessBaseAPI* handle,
  237. const char* name,
  238. double* value);
  239. TESS_API const char* TESS_CALL
  240. TessBaseAPIGetStringVariable(const TessBaseAPI* handle, const char* name);
  241. TESS_API void TESS_CALL TessBaseAPIPrintVariables(const TessBaseAPI* handle,
  242. FILE* fp);
  243. TESS_API BOOL TESS_CALL TessBaseAPIPrintVariablesToFile(
  244. const TessBaseAPI* handle, const char* filename);
  245. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  246. TESS_API BOOL TESS_CALL TessBaseAPIGetVariableAsString(TessBaseAPI* handle,
  247. const char* name,
  248. STRING* val);
  249. TESS_API int TESS_CALL TessBaseAPIInit(
  250. TessBaseAPI* handle, const char* datapath, const char* language,
  251. TessOcrEngineMode mode, char** configs, int configs_size,
  252. const STRING* vars_vec, size_t vars_vec_size, const STRING* vars_values,
  253. size_t vars_values_size, BOOL set_only_init_params);
  254. #endif // def TESS_CAPI_INCLUDE_BASEAPI
  255. TESS_API int TESS_CALL TessBaseAPIInit1(TessBaseAPI* handle,
  256. const char* datapath,
  257. const char* language,
  258. TessOcrEngineMode oem, char** configs,
  259. int configs_size);
  260. TESS_API int TESS_CALL TessBaseAPIInit2(TessBaseAPI* handle,
  261. const char* datapath,
  262. const char* language,
  263. TessOcrEngineMode oem);
  264. TESS_API int TESS_CALL TessBaseAPIInit3(TessBaseAPI* handle,
  265. const char* datapath,
  266. const char* language);
  267. TESS_API int TESS_CALL TessBaseAPIInit4(
  268. TessBaseAPI* handle, const char* datapath, const char* language,
  269. TessOcrEngineMode mode, char** configs, int configs_size, char** vars_vec,
  270. char** vars_values, size_t vars_vec_size, BOOL set_only_non_debug_params);
  271. TESS_API const char* TESS_CALL
  272. TessBaseAPIGetInitLanguagesAsString(const TessBaseAPI* handle);
  273. TESS_API char** TESS_CALL
  274. TessBaseAPIGetLoadedLanguagesAsVector(const TessBaseAPI* handle);
  275. TESS_API char** TESS_CALL
  276. TessBaseAPIGetAvailableLanguagesAsVector(const TessBaseAPI* handle);
  277. TESS_API int TESS_CALL TessBaseAPIInitLangMod(TessBaseAPI* handle,
  278. const char* datapath,
  279. const char* language);
  280. TESS_API void TESS_CALL TessBaseAPIInitForAnalysePage(TessBaseAPI* handle);
  281. TESS_API void TESS_CALL TessBaseAPIReadConfigFile(TessBaseAPI* handle,
  282. const char* filename);
  283. TESS_API void TESS_CALL TessBaseAPIReadDebugConfigFile(TessBaseAPI* handle,
  284. const char* filename);
  285. TESS_API void TESS_CALL TessBaseAPISetPageSegMode(TessBaseAPI* handle,
  286. TessPageSegMode mode);
  287. TESS_API TessPageSegMode TESS_CALL
  288. TessBaseAPIGetPageSegMode(const TessBaseAPI* handle);
  289. TESS_API char* TESS_CALL TessBaseAPIRect(TessBaseAPI* handle,
  290. const unsigned char* imagedata,
  291. int bytes_per_pixel,
  292. int bytes_per_line, int left, int top,
  293. int width, int height);
  294. TESS_API void TESS_CALL TessBaseAPIClearAdaptiveClassifier(TessBaseAPI* handle);
  295. TESS_API void TESS_CALL TessBaseAPISetImage(TessBaseAPI* handle,
  296. const unsigned char* imagedata,
  297. int width, int height,
  298. int bytes_per_pixel,
  299. int bytes_per_line);
  300. TESS_API void TESS_CALL TessBaseAPISetImage2(TessBaseAPI* handle,
  301. struct Pix* pix);
  302. TESS_API void TESS_CALL TessBaseAPISetSourceResolution(TessBaseAPI* handle,
  303. int ppi);
  304. TESS_API void TESS_CALL TessBaseAPISetRectangle(TessBaseAPI* handle, int left,
  305. int top, int width, int height);
  306. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  307. TESS_API void TESS_CALL TessBaseAPISetThresholder(
  308. TessBaseAPI* handle, TessImageThresholder* thresholder);
  309. #endif
  310. TESS_API struct Pix* TESS_CALL
  311. TessBaseAPIGetThresholdedImage(TessBaseAPI* handle);
  312. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetRegions(TessBaseAPI* handle,
  313. struct Pixa** pixa);
  314. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetTextlines(TessBaseAPI* handle,
  315. struct Pixa** pixa,
  316. int** blockids);
  317. TESS_API struct Boxa* TESS_CALL
  318. TessBaseAPIGetTextlines1(TessBaseAPI* handle, BOOL raw_image, int raw_padding,
  319. struct Pixa** pixa, int** blockids, int** paraids);
  320. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetStrips(TessBaseAPI* handle,
  321. struct Pixa** pixa,
  322. int** blockids);
  323. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetWords(TessBaseAPI* handle,
  324. struct Pixa** pixa);
  325. TESS_API struct Boxa* TESS_CALL
  326. TessBaseAPIGetConnectedComponents(TessBaseAPI* handle, struct Pixa** cc);
  327. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetComponentImages(
  328. TessBaseAPI* handle, TessPageIteratorLevel level, BOOL text_only,
  329. struct Pixa** pixa, int** blockids);
  330. TESS_API struct Boxa* TESS_CALL TessBaseAPIGetComponentImages1(
  331. TessBaseAPI* handle, TessPageIteratorLevel level, BOOL text_only,
  332. BOOL raw_image, int raw_padding, struct Pixa** pixa, int** blockids,
  333. int** paraids);
  334. TESS_API int TESS_CALL
  335. TessBaseAPIGetThresholdedImageScaleFactor(const TessBaseAPI* handle);
  336. TESS_API TessPageIterator* TESS_CALL
  337. TessBaseAPIAnalyseLayout(TessBaseAPI* handle);
  338. TESS_API int TESS_CALL TessBaseAPIRecognize(TessBaseAPI* handle,
  339. ETEXT_DESC* monitor);
  340. #ifndef DISABLED_LEGACY_ENGINE
  341. TESS_API int TESS_CALL TessBaseAPIRecognizeForChopTest(TessBaseAPI* handle,
  342. ETEXT_DESC* monitor);
  343. #endif
  344. TESS_API BOOL TESS_CALL TessBaseAPIProcessPages(TessBaseAPI* handle,
  345. const char* filename,
  346. const char* retry_config,
  347. int timeout_millisec,
  348. TessResultRenderer* renderer);
  349. TESS_API BOOL TESS_CALL TessBaseAPIProcessPage(TessBaseAPI* handle,
  350. struct Pix* pix, int page_index,
  351. const char* filename,
  352. const char* retry_config,
  353. int timeout_millisec,
  354. TessResultRenderer* renderer);
  355. TESS_API TessResultIterator* TESS_CALL
  356. TessBaseAPIGetIterator(TessBaseAPI* handle);
  357. TESS_API TessMutableIterator* TESS_CALL
  358. TessBaseAPIGetMutableIterator(TessBaseAPI* handle);
  359. TESS_API char* TESS_CALL TessBaseAPIGetUTF8Text(TessBaseAPI* handle);
  360. TESS_API char* TESS_CALL TessBaseAPIGetHOCRText(TessBaseAPI* handle,
  361. int page_number);
  362. TESS_API char* TESS_CALL TessBaseAPIGetAltoText(TessBaseAPI* handle,
  363. int page_number);
  364. TESS_API char* TESS_CALL TessBaseAPIGetTsvText(TessBaseAPI* handle,
  365. int page_number);
  366. TESS_API char* TESS_CALL TessBaseAPIGetBoxText(TessBaseAPI* handle,
  367. int page_number);
  368. TESS_API char* TESS_CALL TessBaseAPIGetLSTMBoxText(TessBaseAPI* handle,
  369. int page_number);
  370. TESS_API char* TESS_CALL TessBaseAPIGetWordStrBoxText(TessBaseAPI* handle,
  371. int page_number);
  372. TESS_API char* TESS_CALL TessBaseAPIGetUNLVText(TessBaseAPI* handle);
  373. TESS_API int TESS_CALL TessBaseAPIMeanTextConf(TessBaseAPI* handle);
  374. TESS_API int* TESS_CALL TessBaseAPIAllWordConfidences(TessBaseAPI* handle);
  375. #ifndef DISABLED_LEGACY_ENGINE
  376. TESS_API BOOL TESS_CALL TessBaseAPIAdaptToWordStr(TessBaseAPI* handle,
  377. TessPageSegMode mode,
  378. const char* wordstr);
  379. #endif // ndef DISABLED_LEGACY_ENGINE
  380. TESS_API void TESS_CALL TessBaseAPIClear(TessBaseAPI* handle);
  381. TESS_API void TESS_CALL TessBaseAPIEnd(TessBaseAPI* handle);
  382. TESS_API int TESS_CALL TessBaseAPIIsValidWord(TessBaseAPI* handle,
  383. const char* word);
  384. TESS_API BOOL TESS_CALL TessBaseAPIGetTextDirection(TessBaseAPI* handle,
  385. int* out_offset,
  386. float* out_slope);
  387. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  388. TESS_API void TESS_CALL TessBaseAPISetDictFunc(TessBaseAPI* handle,
  389. TessDictFunc f);
  390. TESS_API void TESS_CALL TessBaseAPIClearPersistentCache(TessBaseAPI* handle);
  391. TESS_API void TESS_CALL TessBaseAPISetProbabilityInContextFunc(
  392. TessBaseAPI* handle, TessProbabilityInContextFunc f);
  393. // Call TessDeleteText(*best_script_name) to free memory allocated by this
  394. // function
  395. TESS_API BOOL TESS_CALL TessBaseAPIDetectOrientationScript(
  396. TessBaseAPI* handle, int* orient_deg, float* orient_conf,
  397. const char** script_name, float* script_conf);
  398. #endif // def TESS_CAPI_INCLUDE_BASEAPI
  399. TESS_API const char* TESS_CALL TessBaseAPIGetUnichar(TessBaseAPI* handle,
  400. int unichar_id);
  401. TESS_API void TESS_CALL TessBaseAPISetMinOrientationMargin(TessBaseAPI* handle,
  402. double margin);
  403. #ifdef TESS_CAPI_INCLUDE_BASEAPI
  404. TESS_API const TessDawg* TESS_CALL TessBaseAPIGetDawg(const TessBaseAPI* handle,
  405. int i);
  406. TESS_API int TESS_CALL TessBaseAPINumDawgs(const TessBaseAPI* handle);
  407. TESS_API TessOcrEngineMode TESS_CALL TessBaseAPIOem(const TessBaseAPI* handle);
  408. TESS_API void TESS_CALL TessBaseAPIInitTruthCallback(TessBaseAPI* handle,
  409. TessTruthCallback* cb);
  410. TESS_API void TESS_CALL TessBaseGetBlockTextOrientations(
  411. TessBaseAPI* handle, int** block_orientation, bool** vertical_writing);
  412. #endif
  413. /* Page iterator */
  414. TESS_API void TESS_CALL TessPageIteratorDelete(TessPageIterator* handle);
  415. TESS_API TessPageIterator* TESS_CALL
  416. TessPageIteratorCopy(const TessPageIterator* handle);
  417. TESS_API void TESS_CALL TessPageIteratorBegin(TessPageIterator* handle);
  418. TESS_API BOOL TESS_CALL TessPageIteratorNext(TessPageIterator* handle,
  419. TessPageIteratorLevel level);
  420. TESS_API BOOL TESS_CALL TessPageIteratorIsAtBeginningOf(
  421. const TessPageIterator* handle, TessPageIteratorLevel level);
  422. TESS_API BOOL TESS_CALL TessPageIteratorIsAtFinalElement(
  423. const TessPageIterator* handle, TessPageIteratorLevel level,
  424. TessPageIteratorLevel element);
  425. TESS_API BOOL TESS_CALL TessPageIteratorBoundingBox(
  426. const TessPageIterator* handle, TessPageIteratorLevel level, int* left,
  427. int* top, int* right, int* bottom);
  428. TESS_API TessPolyBlockType TESS_CALL
  429. TessPageIteratorBlockType(const TessPageIterator* handle);
  430. TESS_API struct Pix* TESS_CALL TessPageIteratorGetBinaryImage(
  431. const TessPageIterator* handle, TessPageIteratorLevel level);
  432. TESS_API struct Pix* TESS_CALL TessPageIteratorGetImage(
  433. const TessPageIterator* handle, TessPageIteratorLevel level, int padding,
  434. struct Pix* original_image, int* left, int* top);
  435. TESS_API BOOL TESS_CALL TessPageIteratorBaseline(const TessPageIterator* handle,
  436. TessPageIteratorLevel level,
  437. int* x1, int* y1, int* x2,
  438. int* y2);
  439. TESS_API void TESS_CALL TessPageIteratorOrientation(
  440. TessPageIterator* handle, TessOrientation* orientation,
  441. TessWritingDirection* writing_direction, TessTextlineOrder* textline_order,
  442. float* deskew_angle);
  443. TESS_API void TESS_CALL TessPageIteratorParagraphInfo(
  444. TessPageIterator* handle, TessParagraphJustification* justification,
  445. BOOL* is_list_item, BOOL* is_crown, int* first_line_indent);
  446. /* Result iterator */
  447. TESS_API void TESS_CALL TessResultIteratorDelete(TessResultIterator* handle);
  448. TESS_API TessResultIterator* TESS_CALL
  449. TessResultIteratorCopy(const TessResultIterator* handle);
  450. TESS_API TessPageIterator* TESS_CALL
  451. TessResultIteratorGetPageIterator(TessResultIterator* handle);
  452. TESS_API const TessPageIterator* TESS_CALL
  453. TessResultIteratorGetPageIteratorConst(const TessResultIterator* handle);
  454. TESS_API TessChoiceIterator* TESS_CALL
  455. TessResultIteratorGetChoiceIterator(const TessResultIterator* handle);
  456. TESS_API BOOL TESS_CALL TessResultIteratorNext(TessResultIterator* handle,
  457. TessPageIteratorLevel level);
  458. TESS_API char* TESS_CALL TessResultIteratorGetUTF8Text(
  459. const TessResultIterator* handle, TessPageIteratorLevel level);
  460. TESS_API float TESS_CALL TessResultIteratorConfidence(
  461. const TessResultIterator* handle, TessPageIteratorLevel level);
  462. TESS_API const char* TESS_CALL
  463. TessResultIteratorWordRecognitionLanguage(const TessResultIterator* handle);
  464. TESS_API const char* TESS_CALL TessResultIteratorWordFontAttributes(
  465. const TessResultIterator* handle, BOOL* is_bold, BOOL* is_italic,
  466. BOOL* is_underlined, BOOL* is_monospace, BOOL* is_serif, BOOL* is_smallcaps,
  467. int* pointsize, int* font_id);
  468. TESS_API BOOL TESS_CALL
  469. TessResultIteratorWordIsFromDictionary(const TessResultIterator* handle);
  470. TESS_API BOOL TESS_CALL
  471. TessResultIteratorWordIsNumeric(const TessResultIterator* handle);
  472. TESS_API BOOL TESS_CALL
  473. TessResultIteratorSymbolIsSuperscript(const TessResultIterator* handle);
  474. TESS_API BOOL TESS_CALL
  475. TessResultIteratorSymbolIsSubscript(const TessResultIterator* handle);
  476. TESS_API BOOL TESS_CALL
  477. TessResultIteratorSymbolIsDropcap(const TessResultIterator* handle);
  478. TESS_API void TESS_CALL TessChoiceIteratorDelete(TessChoiceIterator* handle);
  479. TESS_API BOOL TESS_CALL TessChoiceIteratorNext(TessChoiceIterator* handle);
  480. TESS_API const char* TESS_CALL
  481. TessChoiceIteratorGetUTF8Text(const TessChoiceIterator* handle);
  482. TESS_API float TESS_CALL
  483. TessChoiceIteratorConfidence(const TessChoiceIterator* handle);
  484. /* Progress monitor */
  485. TESS_API ETEXT_DESC* TESS_CALL TessMonitorCreate();
  486. TESS_API void TESS_CALL TessMonitorDelete(ETEXT_DESC* monitor);
  487. TESS_API void TESS_CALL TessMonitorSetCancelFunc(ETEXT_DESC* monitor,
  488. TessCancelFunc cancelFunc);
  489. TESS_API void TESS_CALL TessMonitorSetCancelThis(ETEXT_DESC* monitor,
  490. void* cancelThis);
  491. TESS_API void* TESS_CALL TessMonitorGetCancelThis(ETEXT_DESC* monitor);
  492. TESS_API void TESS_CALL
  493. TessMonitorSetProgressFunc(ETEXT_DESC* monitor, TessProgressFunc progressFunc);
  494. TESS_API int TESS_CALL TessMonitorGetProgress(ETEXT_DESC* monitor);
  495. TESS_API void TESS_CALL TessMonitorSetDeadlineMSecs(ETEXT_DESC* monitor,
  496. int deadline);
  497. #ifndef DISABLED_LEGACY_ENGINE
  498. # ifdef TESS_CAPI_INCLUDE_BASEAPI
  499. TESS_API void TESS_CALL TessBaseAPISetFillLatticeFunc(TessBaseAPI* handle,
  500. TessFillLatticeFunc f);
  501. TESS_API void TESS_CALL TessBaseAPIGetFeaturesForBlob(
  502. TessBaseAPI* handle, TBLOB* blob, INT_FEATURE_STRUCT* int_features,
  503. int* num_features, int* FeatureOutlineIndex);
  504. TESS_API ROW* TESS_CALL TessFindRowForBox(BLOCK_LIST* blocks, int left, int top,
  505. int right, int bottom);
  506. TESS_API void TESS_CALL TessBaseAPIRunAdaptiveClassifier(
  507. TessBaseAPI* handle, TBLOB* blob, int num_max_matches, int* unichar_ids,
  508. float* ratings, int* num_matches_returned);
  509. TESS_API ROW* TESS_CALL TessMakeTessOCRRow(float baseline, float xheight,
  510. float descender, float ascender);
  511. TESS_API TBLOB* TESS_CALL TessMakeTBLOB(Pix* pix);
  512. TESS_API void TESS_CALL TessNormalizeTBLOB(TBLOB* tblob, ROW* row,
  513. BOOL numeric_mode);
  514. TESS_API BLOCK_LIST* TESS_CALL
  515. TessBaseAPIFindLinesCreateBlockList(TessBaseAPI* handle);
  516. TESS_API void TESS_CALL TessDeleteBlockList(BLOCK_LIST* block_list);
  517. # endif // def TESS_CAPI_INCLUDE_BASEAPI
  518. #endif // ndef DISABLED_LEGACY_ENGINE
  519. #ifdef __cplusplus
  520. }
  521. #endif
  522. #endif // API_CAPI_H_