Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
publictypes.h
Go to the documentation of this file.
1
2 // File: publictypes.h
3 // Description: Types used in both the API and internally
4 // Author: Ray Smith
5 // Created: Wed Mar 03 09:22:53 PST 2010
6 //
7 // (C) Copyright 2010, Google Inc.
8 // Licensed under the Apache License, Version 2.0 (the "License");
9 // you may not use this file except in compliance with the License.
10 // You may obtain a copy of the License at
11 // http://www.apache.org/licenses/LICENSE-2.0
12 // Unless required by applicable law or agreed to in writing, software
13 // distributed under the License is distributed on an "AS IS" BASIS,
14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 // See the License for the specific language governing permissions and
16 // limitations under the License.
17 //
19
20 #ifndef TESSERACT_CCSTRUCT_PUBLICTYPES_H__
21 #define TESSERACT_CCSTRUCT_PUBLICTYPES_H__
22
23 // This file contains types that are used both by the API and internally
24 // to Tesseract. In order to decouple the API from Tesseract and prevent cyclic
25 // dependencies, THIS FILE SHOULD NOT DEPEND ON ANY OTHER PART OF TESSERACT.
26 // Restated: It is OK for low-level Tesseract files to include publictypes.h,
27 // but not for the low-level tesseract code to include top-level API code.
28 // This file should not use other Tesseract types, as that would drag
29 // their includes into the API-level.
30 // API-level code should include apitypes.h in preference to this file.
31
33 const int kPointsPerInch = 72;
34
41 enum PolyBlockType {
42 PT_UNKNOWN, // Type is not yet known. Keep as the first element.
43 PT_FLOWING_TEXT, // Text that lives inside a column.
44 PT_HEADING_TEXT, // Text that spans more than one column.
45 PT_PULLOUT_TEXT, // Text that is in a cross-column pull-out region.
46 PT_EQUATION, // Partition belonging to an equation region.
47 PT_INLINE_EQUATION, // Partition has inline equation.
48 PT_TABLE, // Partition belonging to a table region.
49 PT_VERTICAL_TEXT, // Text-line runs vertically.
50 PT_CAPTION_TEXT, // Text that belongs to an image.
51 PT_FLOWING_IMAGE, // Image that lives inside a column.
52 PT_HEADING_IMAGE, // Image that spans more than one column.
53 PT_PULLOUT_IMAGE, // Image that is in a cross-column pull-out region.
54 PT_HORZ_LINE, // Horizontal Line.
55 PT_VERT_LINE, // Vertical Line.
56 PT_NOISE, // Lies outside of any column.
57 PT_COUNT
58 };
59
61 inline bool PTIsLineType(PolyBlockType type) {
62 return type == PT_HORZ_LINE || type == PT_VERT_LINE;
63 }
65 inline bool PTIsImageType(PolyBlockType type) {
66 return type == PT_FLOWING_IMAGE || type == PT_HEADING_IMAGE ||
67 type == PT_PULLOUT_IMAGE;
68 }
70 inline bool PTIsTextType(PolyBlockType type) {
71 return type == PT_FLOWING_TEXT || type == PT_HEADING_TEXT ||
72 type == PT_PULLOUT_TEXT || type == PT_TABLE ||
73 type == PT_VERTICAL_TEXT || type == PT_CAPTION_TEXT ||
74 type == PT_INLINE_EQUATION;
75 }
76
78 extern const char* kPolyBlockNames[];
79
80 namespace tesseract {
104 enum Orientation {
105 ORIENTATION_PAGE_UP = 0,
106 ORIENTATION_PAGE_RIGHT = 1,
107 ORIENTATION_PAGE_DOWN = 2,
108 ORIENTATION_PAGE_LEFT = 3,
109 };
110
119 enum WritingDirection {
120 WRITING_DIRECTION_LEFT_TO_RIGHT = 0,
121 WRITING_DIRECTION_RIGHT_TO_LEFT = 1,
122 WRITING_DIRECTION_TOP_TO_BOTTOM = 2,
123 };
124
136 enum TextlineOrder {
137 TEXTLINE_ORDER_LEFT_TO_RIGHT = 0,
138 TEXTLINE_ORDER_RIGHT_TO_LEFT = 1,
139 TEXTLINE_ORDER_TOP_TO_BOTTOM = 2,
140 };
141
147 enum PageSegMode {
148 PSM_OSD_ONLY,
149 PSM_AUTO_OSD,
150
151 PSM_AUTO_ONLY,
152 PSM_AUTO,
153 PSM_SINGLE_COLUMN,
154 PSM_SINGLE_BLOCK_VERT_TEXT,
155
156 PSM_SINGLE_BLOCK,
157 PSM_SINGLE_LINE,
158 PSM_SINGLE_WORD,
159 PSM_CIRCLE_WORD,
160 PSM_SINGLE_CHAR,
161
162 PSM_COUNT
163 };
164
170 #define PSM_OSD_ENABLED(pageseg_mode) ((pageseg_mode) <= PSM_AUTO_OSD)
171 #define PSM_COL_FIND_ENABLED(pageseg_mode) \
172 ((pageseg_mode) >= PSM_AUTO_OSD && (pageseg_mode) <= PSM_AUTO)
173 #define PSM_BLOCK_FIND_ENABLED(pageseg_mode) \
174 ((pageseg_mode) >= PSM_AUTO_OSD && (pageseg_mode) <= PSM_SINGLE_COLUMN)
175 #define PSM_LINE_FIND_ENABLED(pageseg_mode) \
176 ((pageseg_mode) >= PSM_AUTO_OSD && (pageseg_mode) <= PSM_SINGLE_BLOCK)
177 #define PSM_WORD_FIND_ENABLED(pageseg_mode) \
178 ((pageseg_mode) >= PSM_AUTO_OSD && (pageseg_mode) <= PSM_SINGLE_LINE)
179
185 enum PageIteratorLevel {
186 RIL_BLOCK, // Block of text/image/separator line.
187 RIL_PARA, // Paragraph within a block.
188 RIL_TEXTLINE, // Line within a paragraph.
189 RIL_WORD, // Word within a textline.
190 RIL_SYMBOL // Symbol/character within a word.
191 };
192
217 enum ParagraphJustification {
218 JUSTIFICATION_UNKNOWN,
219 JUSTIFICATION_LEFT,
220 JUSTIFICATION_CENTER,
221 JUSTIFICATION_RIGHT,
222 };
223
234 enum OcrEngineMode {
235 OEM_TESSERACT_ONLY, // Run Tesseract only - fastest
236 OEM_CUBE_ONLY, // Run Cube only - better accuracy, but slower
237 OEM_TESSERACT_CUBE_COMBINED, // Run both and combine results - best accuracy
238 OEM_DEFAULT // Specify this mode when calling init_*(),
239 // to indicate that any of the above modes
240 // should be automatically inferred from the
241 // variables in the language-specific config,
242 // command-line configs, or if not specified
243 // in any of the above should be set to the
244 // default OEM_TESSERACT_ONLY.
245 };
246
247 } // namespace tesseract.
248
249 #endif // TESSERACT_CCSTRUCT_PUBLICTYPES_H__