Advertisement
Guest User

Untitled

a guest
May 8th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.74 KB | None | 0 0
  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.  
  18. import core.stdc.stdio;
  19.  
  20. extern (C):
  21.  
  22. alias BOOL = int;
  23. enum TRUE = 1;
  24. enum FALSE = 0;
  25.  
  26. // typedef tesseract::ParamsModelClassifyFunc TessParamsModelClassifyFunc;
  27.  
  28. struct TessResultRenderer;
  29. struct TessTextRenderer;
  30. struct TessHOcrRenderer;
  31. struct TessPDFRenderer;
  32. struct TessUnlvRenderer;
  33. struct TessBoxTextRenderer;
  34. struct TessBaseAPI;
  35. struct TessPageIterator;
  36. struct TessResultIterator;
  37. struct TessMutableIterator;
  38. struct TessChoiceIterator;
  39.  
  40. enum TessOcrEngineMode
  41. {
  42. OEM_TESSERACT_ONLY = 0,
  43. OEM_LSTM_ONLY = 1,
  44. OEM_TESSERACT_LSTM_COMBINED = 2,
  45. OEM_DEFAULT = 3
  46. }
  47.  
  48. enum TessPageSegMode
  49. {
  50. PSM_OSD_ONLY = 0,
  51. PSM_AUTO_OSD = 1,
  52. PSM_AUTO_ONLY = 2,
  53. PSM_AUTO = 3,
  54. PSM_SINGLE_COLUMN = 4,
  55. PSM_SINGLE_BLOCK_VERT_TEXT = 5,
  56. PSM_SINGLE_BLOCK = 6,
  57. PSM_SINGLE_LINE = 7,
  58. PSM_SINGLE_WORD = 8,
  59. PSM_CIRCLE_WORD = 9,
  60. PSM_SINGLE_CHAR = 10,
  61. PSM_SPARSE_TEXT = 11,
  62. PSM_SPARSE_TEXT_OSD = 12,
  63. PSM_COUNT = 13
  64. }
  65.  
  66. enum TessPageIteratorLevel
  67. {
  68. RIL_BLOCK = 0,
  69. RIL_PARA = 1,
  70. RIL_TEXTLINE = 2,
  71. RIL_WORD = 3,
  72. RIL_SYMBOL = 4
  73. }
  74.  
  75. enum TessPolyBlockType
  76. {
  77. PT_UNKNOWN = 0,
  78. PT_FLOWING_TEXT = 1,
  79. PT_HEADING_TEXT = 2,
  80. PT_PULLOUT_TEXT = 3,
  81. PT_EQUATION = 4,
  82. PT_INLINE_EQUATION = 5,
  83. PT_TABLE = 6,
  84. PT_VERTICAL_TEXT = 7,
  85. PT_CAPTION_TEXT = 8,
  86. PT_FLOWING_IMAGE = 9,
  87. PT_HEADING_IMAGE = 10,
  88. PT_PULLOUT_IMAGE = 11,
  89. PT_HORZ_LINE = 12,
  90. PT_VERT_LINE = 13,
  91. PT_NOISE = 14,
  92. PT_COUNT = 15
  93. }
  94.  
  95. enum TessOrientation
  96. {
  97. ORIENTATION_PAGE_UP = 0,
  98. ORIENTATION_PAGE_RIGHT = 1,
  99. ORIENTATION_PAGE_DOWN = 2,
  100. ORIENTATION_PAGE_LEFT = 3
  101. }
  102.  
  103. enum TessParagraphJustification
  104. {
  105. JUSTIFICATION_UNKNOWN = 0,
  106. JUSTIFICATION_LEFT = 1,
  107. JUSTIFICATION_CENTER = 2,
  108. JUSTIFICATION_RIGHT = 3
  109. }
  110.  
  111. enum TessWritingDirection
  112. {
  113. WRITING_DIRECTION_LEFT_TO_RIGHT = 0,
  114. WRITING_DIRECTION_RIGHT_TO_LEFT = 1,
  115. WRITING_DIRECTION_TOP_TO_BOTTOM = 2
  116. }
  117.  
  118. enum TessTextlineOrder
  119. {
  120. TEXTLINE_ORDER_LEFT_TO_RIGHT = 0,
  121. TEXTLINE_ORDER_RIGHT_TO_LEFT = 1,
  122. TEXTLINE_ORDER_TOP_TO_BOTTOM = 2
  123. }
  124.  
  125. struct ETEXT_DESC;
  126.  
  127. alias TessCancelFunc = bool function (void* cancel_this, int words);
  128. alias TessProgressFunc = bool function (
  129. ETEXT_DESC* ths,
  130. int left,
  131. int right,
  132. int top,
  133. int bottom);
  134.  
  135. struct Pix;
  136. struct Boxa;
  137. struct Pixa;
  138.  
  139. /* General free functions */
  140.  
  141. const(char)* TessVersion ();
  142. void TessDeleteText (char* text);
  143. void TessDeleteTextArray (char** arr);
  144. void TessDeleteIntArray (int* arr);
  145.  
  146. /* Renderer API */
  147. TessResultRenderer* TessTextRendererCreate (const(char)* outputbase);
  148. TessResultRenderer* TessHOcrRendererCreate (const(char)* outputbase);
  149. TessResultRenderer* TessHOcrRendererCreate2 (const(char)* outputbase, int font_info);
  150. TessResultRenderer* TessPDFRendererCreate (
  151. const(char)* outputbase,
  152. const(char)* datadir,
  153. int textonly);
  154. TessResultRenderer* TessUnlvRendererCreate (const(char)* outputbase);
  155. TessResultRenderer* TessBoxTextRendererCreate (const(char)* outputbase);
  156.  
  157. void TessDeleteResultRenderer (TessResultRenderer* renderer);
  158. void TessResultRendererInsert (TessResultRenderer* renderer, TessResultRenderer* next);
  159. TessResultRenderer* TessResultRendererNext (TessResultRenderer* renderer);
  160. int TessResultRendererBeginDocument (TessResultRenderer* renderer, const(char)* title);
  161. int TessResultRendererAddImage (TessResultRenderer* renderer, TessBaseAPI* api);
  162. int TessResultRendererEndDocument (TessResultRenderer* renderer);
  163.  
  164. const(char)* TessResultRendererExtention (TessResultRenderer* renderer);
  165. const(char)* TessResultRendererTitle (TessResultRenderer* renderer);
  166. int TessResultRendererImageNum (TessResultRenderer* renderer);
  167.  
  168. /* Base API */
  169.  
  170. TessBaseAPI* TessBaseAPICreate ();
  171. void TessBaseAPIDelete (TessBaseAPI* handle);
  172.  
  173. size_t TessBaseAPIGetOpenCLDevice (TessBaseAPI* handle, void** device);
  174.  
  175. void TessBaseAPISetInputName (TessBaseAPI* handle, const(char)* name);
  176. const(char)* TessBaseAPIGetInputName (TessBaseAPI* handle);
  177.  
  178. void TessBaseAPISetInputImage (TessBaseAPI* handle, Pix* pix);
  179. Pix* TessBaseAPIGetInputImage (TessBaseAPI* handle);
  180.  
  181. int TessBaseAPIGetSourceYResolution (TessBaseAPI* handle);
  182. const(char)* TessBaseAPIGetDatapath (TessBaseAPI* handle);
  183.  
  184. void TessBaseAPISetOutputName (TessBaseAPI* handle, const(char)* name);
  185.  
  186. int TessBaseAPISetVariable (TessBaseAPI* handle, const(char)* name, const(char)* value);
  187. int TessBaseAPISetDebugVariable (TessBaseAPI* handle, const(char)* name, const(char)* value);
  188.  
  189. int TessBaseAPIGetIntVariable (const(TessBaseAPI)* handle, const(char)* name, int* value);
  190. int TessBaseAPIGetBoolVariable (const(TessBaseAPI)* handle, const(char)* name, int* value);
  191. int TessBaseAPIGetDoubleVariable (const(TessBaseAPI)* handle, const(char)* name, double* value);
  192. const(char)* TessBaseAPIGetStringVariable (
  193. const(TessBaseAPI)* handle,
  194. const(char)* name);
  195.  
  196. void TessBaseAPIPrintVariables (const(TessBaseAPI)* handle, FILE* fp);
  197. int TessBaseAPIPrintVariablesToFile (const(TessBaseAPI)* handle, const(char)* filename);
  198.  
  199. // def TESS_CAPI_INCLUDE_BASEAPI
  200.  
  201. int TessBaseAPIInit1 (
  202. TessBaseAPI* handle,
  203. const(char)* datapath,
  204. const(char)* language,
  205. TessOcrEngineMode oem,
  206. char** configs,
  207. int configs_size);
  208. int TessBaseAPIInit2 (TessBaseAPI* handle, const(char)* datapath, const(char)* language, TessOcrEngineMode oem);
  209. int TessBaseAPIInit3 (TessBaseAPI* handle, const(char)* datapath, const(char)* language);
  210.  
  211. int TessBaseAPIInit4 (
  212. TessBaseAPI* handle,
  213. const(char)* datapath,
  214. const(char)* language,
  215. TessOcrEngineMode mode,
  216. char** configs,
  217. int configs_size,
  218. char** vars_vec,
  219. char** vars_values,
  220. size_t vars_vec_size,
  221. int set_only_non_debug_params);
  222.  
  223. const(char)* TessBaseAPIGetInitLanguagesAsString (const(TessBaseAPI)* handle);
  224. char** TessBaseAPIGetLoadedLanguagesAsVector (const(TessBaseAPI)* handle);
  225. char** TessBaseAPIGetAvailableLanguagesAsVector (const(TessBaseAPI)* handle);
  226.  
  227. int TessBaseAPIInitLangMod (TessBaseAPI* handle, const(char)* datapath, const(char)* language);
  228. void TessBaseAPIInitForAnalysePage (TessBaseAPI* handle);
  229.  
  230. void TessBaseAPIReadConfigFile (TessBaseAPI* handle, const(char)* filename);
  231. void TessBaseAPIReadDebugConfigFile (TessBaseAPI* handle, const(char)* filename);
  232.  
  233. void TessBaseAPISetPageSegMode (TessBaseAPI* handle, TessPageSegMode mode);
  234. TessPageSegMode TessBaseAPIGetPageSegMode (const(TessBaseAPI)* handle);
  235.  
  236. char* TessBaseAPIRect (
  237. TessBaseAPI* handle,
  238. const(ubyte)* imagedata,
  239. int bytes_per_pixel,
  240. int bytes_per_line,
  241. int left,
  242. int top,
  243. int width,
  244. int height);
  245.  
  246. void TessBaseAPIClearAdaptiveClassifier (TessBaseAPI* handle);
  247.  
  248. void TessBaseAPISetImage (
  249. TessBaseAPI* handle,
  250. const(ubyte)* imagedata,
  251. int width,
  252. int height,
  253. int bytes_per_pixel,
  254. int bytes_per_line);
  255. void TessBaseAPISetImage2 (TessBaseAPI* handle, Pix* pix);
  256.  
  257. void TessBaseAPISetSourceResolution (TessBaseAPI* handle, int ppi);
  258.  
  259. void TessBaseAPISetRectangle (TessBaseAPI* handle, int left, int top, int width, int height);
  260.  
  261. Pix* TessBaseAPIGetThresholdedImage (TessBaseAPI* handle);
  262. Boxa* TessBaseAPIGetRegions (TessBaseAPI* handle, Pixa** pixa);
  263. Boxa* TessBaseAPIGetTextlines (
  264. TessBaseAPI* handle,
  265. Pixa** pixa,
  266. int** blockids);
  267. Boxa* TessBaseAPIGetTextlines1 (
  268. TessBaseAPI* handle,
  269. const int raw_image,
  270. const int raw_padding,
  271. Pixa** pixa,
  272. int** blockids,
  273. int** paraids);
  274. Boxa* TessBaseAPIGetStrips (TessBaseAPI* handle, Pixa** pixa, int** blockids);
  275. Boxa* TessBaseAPIGetWords (TessBaseAPI* handle, Pixa** pixa);
  276. Boxa* TessBaseAPIGetConnectedComponents (TessBaseAPI* handle, Pixa** cc);
  277. Boxa* TessBaseAPIGetComponentImages (
  278. TessBaseAPI* handle,
  279. const TessPageIteratorLevel level,
  280. const int text_only,
  281. Pixa** pixa,
  282. int** blockids);
  283. Boxa* TessBaseAPIGetComponentImages1 (
  284. TessBaseAPI* handle,
  285. const TessPageIteratorLevel level,
  286. const int text_only,
  287. const int raw_image,
  288. const int raw_padding,
  289. Pixa** pixa,
  290. int** blockids,
  291. int** paraids);
  292.  
  293. int TessBaseAPIGetThresholdedImageScaleFactor (const(TessBaseAPI)* handle);
  294.  
  295. TessPageIterator* TessBaseAPIAnalyseLayout (TessBaseAPI* handle);
  296.  
  297. int TessBaseAPIRecognize (TessBaseAPI* handle, ETEXT_DESC* monitor);
  298.  
  299. int TessBaseAPIRecognizeForChopTest (TessBaseAPI* handle, ETEXT_DESC* monitor);
  300.  
  301. int TessBaseAPIProcessPages (
  302. TessBaseAPI* handle,
  303. const(char)* filename,
  304. const(char)* retry_config,
  305. int timeout_millisec,
  306. TessResultRenderer* renderer);
  307. int TessBaseAPIProcessPage (
  308. TessBaseAPI* handle,
  309. Pix* pix,
  310. int page_index,
  311. const(char)* filename,
  312. const(char)* retry_config,
  313. int timeout_millisec,
  314. TessResultRenderer* renderer);
  315.  
  316. TessResultIterator* TessBaseAPIGetIterator (TessBaseAPI* handle);
  317. TessMutableIterator* TessBaseAPIGetMutableIterator (TessBaseAPI* handle);
  318.  
  319. char* TessBaseAPIGetUTF8Text (TessBaseAPI* handle);
  320. char* TessBaseAPIGetHOCRText (TessBaseAPI* handle, int page_number);
  321.  
  322. char* TessBaseAPIGetBoxText (TessBaseAPI* handle, int page_number);
  323.  
  324. char* TessBaseAPIGetUNLVText (TessBaseAPI* handle);
  325. int TessBaseAPIMeanTextConf (TessBaseAPI* handle);
  326.  
  327. int* TessBaseAPIAllWordConfidences (TessBaseAPI* handle);
  328.  
  329. int TessBaseAPIAdaptToWordStr (TessBaseAPI* handle, TessPageSegMode mode, const(char)* wordstr);
  330. // ndef DISABLED_LEGACY_ENGINE
  331.  
  332. void TessBaseAPIClear (TessBaseAPI* handle);
  333. void TessBaseAPIEnd (TessBaseAPI* handle);
  334.  
  335. int TessBaseAPIIsValidWord (TessBaseAPI* handle, const(char)* word);
  336. int TessBaseAPIGetTextDirection (TessBaseAPI* handle, int* out_offset, float* out_slope);
  337.  
  338. // Call TessDeleteText(*best_script_name) to free memory allocated by this function
  339.  
  340. // def TESS_CAPI_INCLUDE_BASEAPI
  341.  
  342. const(char)* TessBaseAPIGetUnichar (TessBaseAPI* handle, int unichar_id);
  343.  
  344. void TessBaseAPISetMinOrientationMargin (TessBaseAPI* handle, double margin);
  345.  
  346. /* Page iterator */
  347.  
  348. void TessPageIteratorDelete (TessPageIterator* handle);
  349.  
  350. TessPageIterator* TessPageIteratorCopy (const(TessPageIterator)* handle);
  351.  
  352. void TessPageIteratorBegin (TessPageIterator* handle);
  353.  
  354. int TessPageIteratorNext (TessPageIterator* handle, TessPageIteratorLevel level);
  355.  
  356. int TessPageIteratorIsAtBeginningOf (const(TessPageIterator)* handle, TessPageIteratorLevel level);
  357.  
  358. int TessPageIteratorIsAtFinalElement (
  359. const(TessPageIterator)* handle,
  360. TessPageIteratorLevel level,
  361. TessPageIteratorLevel element);
  362.  
  363. int TessPageIteratorBoundingBox (
  364. const(TessPageIterator)* handle,
  365. TessPageIteratorLevel level,
  366. int* left,
  367. int* top,
  368. int* right,
  369. int* bottom);
  370.  
  371. TessPolyBlockType TessPageIteratorBlockType (const(TessPageIterator)* handle);
  372.  
  373. Pix* TessPageIteratorGetBinaryImage (
  374. const(TessPageIterator)* handle,
  375. TessPageIteratorLevel level);
  376.  
  377. Pix* TessPageIteratorGetImage (
  378. const(TessPageIterator)* handle,
  379. TessPageIteratorLevel level,
  380. int padding,
  381. Pix* original_image,
  382. int* left,
  383. int* top);
  384.  
  385. int TessPageIteratorBaseline (
  386. const(TessPageIterator)* handle,
  387. TessPageIteratorLevel level,
  388. int* x1,
  389. int* y1,
  390. int* x2,
  391. int* y2);
  392.  
  393. void TessPageIteratorOrientation (
  394. TessPageIterator* handle,
  395. TessOrientation* orientation,
  396. TessWritingDirection* writing_direction,
  397. TessTextlineOrder* textline_order,
  398. float* deskew_angle);
  399.  
  400. void TessPageIteratorParagraphInfo (
  401. TessPageIterator* handle,
  402. TessParagraphJustification* justification,
  403. int* is_list_item,
  404. int* is_crown,
  405. int* first_line_indent);
  406.  
  407. /* Result iterator */
  408.  
  409. void TessResultIteratorDelete (TessResultIterator* handle);
  410. TessResultIterator* TessResultIteratorCopy (const(TessResultIterator)* handle);
  411. TessPageIterator* TessResultIteratorGetPageIterator (
  412. TessResultIterator* handle);
  413. const(TessPageIterator)* TessResultIteratorGetPageIteratorConst (
  414. const(TessResultIterator)* handle);
  415. TessChoiceIterator* TessResultIteratorGetChoiceIterator (
  416. const(TessResultIterator)* handle);
  417.  
  418. int TessResultIteratorNext (TessResultIterator* handle, TessPageIteratorLevel level);
  419. char* TessResultIteratorGetUTF8Text (const(TessResultIterator)* handle, TessPageIteratorLevel level);
  420. float TessResultIteratorConfidence (const(TessResultIterator)* handle, TessPageIteratorLevel level);
  421. const(char)* TessResultIteratorWordRecognitionLanguage (
  422. const(TessResultIterator)* handle);
  423. const(char)* TessResultIteratorWordFontAttributes (
  424. const(TessResultIterator)* handle,
  425. int* is_bold,
  426. int* is_italic,
  427. int* is_underlined,
  428. int* is_monospace,
  429. int* is_serif,
  430. int* is_smallcaps,
  431. int* pointsize,
  432. int* font_id);
  433.  
  434. int TessResultIteratorWordIsFromDictionary (const(TessResultIterator)* handle);
  435. int TessResultIteratorWordIsNumeric (const(TessResultIterator)* handle);
  436. int TessResultIteratorSymbolIsSuperscript (const(TessResultIterator)* handle);
  437. int TessResultIteratorSymbolIsSubscript (const(TessResultIterator)* handle);
  438. int TessResultIteratorSymbolIsDropcap (const(TessResultIterator)* handle);
  439.  
  440. void TessChoiceIteratorDelete (TessChoiceIterator* handle);
  441. int TessChoiceIteratorNext (TessChoiceIterator* handle);
  442. const(char)* TessChoiceIteratorGetUTF8Text (const(TessChoiceIterator)* handle);
  443. float TessChoiceIteratorConfidence (const(TessChoiceIterator)* handle);
  444.  
  445. /* Progress monitor */
  446.  
  447. ETEXT_DESC* TessMonitorCreate ();
  448. void TessMonitorDelete (ETEXT_DESC* monitor);
  449. void TessMonitorSetCancelFunc (ETEXT_DESC* monitor, TessCancelFunc cancelFunc);
  450. void TessMonitorSetCancelThis (ETEXT_DESC* monitor, void* cancelThis);
  451. void* TessMonitorGetCancelThis (ETEXT_DESC* monitor);
  452. void TessMonitorSetProgressFunc (ETEXT_DESC* monitor, TessProgressFunc progressFunc);
  453. int TessMonitorGetProgress (ETEXT_DESC* monitor);
  454. void TessMonitorSetDeadlineMSecs (ETEXT_DESC* monitor, int deadline);
  455.  
  456. // def TESS_CAPI_INCLUDE_BASEAPI
  457.  
  458. // ndef DISABLED_LEGACY_ENGINE
  459.  
  460. // API_CAPI_H_
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement