motion-ocr 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +10 -0
  4. data/LICENSE +28 -0
  5. data/README.md +22 -0
  6. data/Rakefile +17 -0
  7. data/app/app_delegate.rb +2 -0
  8. data/lib/motion-ocr.rb +26 -0
  9. data/lib/motion-ocr/version.rb +3 -0
  10. data/motion-ocr.gemspec +20 -0
  11. data/resources/tessdata/configs/nodict +3 -0
  12. data/resources/tessdata/eng.traineddata +0 -0
  13. data/spec/motion_ocr_spec.rb +23 -0
  14. data/spec/support/phototest.gif +0 -0
  15. data/vendor/MotionOCR/MotionOCR.bridgesupport +14722 -0
  16. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.pbxproj +390 -0
  17. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  18. data/vendor/MotionOCR/MotionOCR.xcodeproj/project.xcworkspace/xcuserdata/fer.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  19. data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/MotionOCR.xcscheme +59 -0
  20. data/vendor/MotionOCR/MotionOCR.xcodeproj/xcuserdata/fer.xcuserdatad/xcschemes/xcschememanagement.plist +22 -0
  21. data/vendor/MotionOCR/MotionOCR/MotionOCR-Prefix.pch +7 -0
  22. data/vendor/MotionOCR/MotionOCR/MotionOCR.h +22 -0
  23. data/vendor/MotionOCR/MotionOCR/MotionOCR.mm +89 -0
  24. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/allheaders.h +32 -0
  25. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/alltypes.h +49 -0
  26. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/array.h +125 -0
  27. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/arrayaccess.h +194 -0
  28. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bbuffer.h +46 -0
  29. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmf.h +51 -0
  30. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/bmp.h +74 -0
  31. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ccbord.h +103 -0
  32. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/dewarp.h +57 -0
  33. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/endianness.h +11 -0
  34. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/environ.h +281 -0
  35. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/freetype.h +23 -0
  36. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/gplot.h +77 -0
  37. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/heap.h +73 -0
  38. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/imageio.h +153 -0
  39. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/jbclass.h +122 -0
  40. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptprotos.h +2058 -0
  41. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/leptwin.h +34 -0
  42. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/list.h +76 -0
  43. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/morph.h +218 -0
  44. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/pix.h +945 -0
  45. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/ptra.h +80 -0
  46. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/queue.h +63 -0
  47. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/readbarcode.h +220 -0
  48. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/regutils.h +122 -0
  49. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/stack.h +55 -0
  50. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/sudoku.h +62 -0
  51. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/leptonica/watershed.h +52 -0
  52. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/apitypes.h +31 -0
  53. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/baseapi.h +664 -0
  54. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/errcode.h +104 -0
  55. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/genericvector.h +763 -0
  56. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/helpers.h +139 -0
  57. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/host.h +180 -0
  58. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ndminx.h +31 -0
  59. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/ocrclass.h +335 -0
  60. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/platform.h +48 -0
  61. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/publictypes.h +202 -0
  62. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/tesscallback.h +1238 -0
  63. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/thresholder.h +170 -0
  64. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/include/tesseract/unichar.h +85 -0
  65. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/liblept.a +0 -0
  66. data/vendor/MotionOCR/MotionOCR/build_dependencies/dependencies/lib/libtesseract_all.a +0 -0
  67. metadata +113 -0
@@ -0,0 +1,23 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2008 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_FREETYPE_H
17
+ #define LEPTONICA_FREETYPE_H
18
+
19
+ #define LEPTONICA_FT_RESOLUTION 96
20
+
21
+ typedef struct ft_library_st FT_LIBRARY;
22
+
23
+ #endif /* LEPTONICA_FREETYPE_H */
@@ -0,0 +1,77 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_GPLOT_H
17
+ #define LEPTONICA_GPLOT_H
18
+
19
+ /*
20
+ * gplot.h
21
+ *
22
+ * Data structures and parameters for generating gnuplot files
23
+ */
24
+
25
+ #define GPLOT_VERSION_NUMBER 1
26
+
27
+ #define NUM_GPLOT_STYLES 5
28
+ enum GPLOT_STYLE {
29
+ GPLOT_LINES = 0,
30
+ GPLOT_POINTS = 1,
31
+ GPLOT_IMPULSES = 2,
32
+ GPLOT_LINESPOINTS = 3,
33
+ GPLOT_DOTS = 4
34
+ };
35
+
36
+ #define NUM_GPLOT_OUTPUTS 6
37
+ enum GPLOT_OUTPUT {
38
+ GPLOT_NONE = 0,
39
+ GPLOT_PNG = 1,
40
+ GPLOT_PS = 2,
41
+ GPLOT_EPS = 3,
42
+ GPLOT_X11 = 4,
43
+ GPLOT_LATEX = 5
44
+ };
45
+
46
+ enum GPLOT_SCALING {
47
+ GPLOT_LINEAR_SCALE = 0, /* default */
48
+ GPLOT_LOG_SCALE_X = 1,
49
+ GPLOT_LOG_SCALE_Y = 2,
50
+ GPLOT_LOG_SCALE_X_Y = 3
51
+ };
52
+
53
+ extern const char *gplotstylenames[]; /* used in gnuplot cmd file */
54
+ extern const char *gplotfilestyles[]; /* used in simple file input */
55
+ extern const char *gplotfileoutputs[]; /* used in simple file input */
56
+
57
+ struct GPlot
58
+ {
59
+ char *rootname; /* for cmd, data, output */
60
+ char *cmdname; /* command file name */
61
+ struct Sarray *cmddata; /* command file contents */
62
+ struct Sarray *datanames; /* data file names */
63
+ struct Sarray *plotdata; /* plot data (1 string/file) */
64
+ struct Sarray *plottitles; /* title for each individual plot */
65
+ struct Numa *plotstyles; /* plot style for individual plots */
66
+ l_int32 nplots; /* current number of plots */
67
+ char *outname; /* output file name */
68
+ l_int32 outformat; /* GPLOT_OUTPUT values */
69
+ l_int32 scaling; /* GPLOT_SCALING values */
70
+ char *title; /* optional */
71
+ char *xlabel; /* optional x axis label */
72
+ char *ylabel; /* optional y axis label */
73
+ };
74
+ typedef struct GPlot GPLOT;
75
+
76
+
77
+ #endif /* LEPTONICA_GPLOT_H */
@@ -0,0 +1,73 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_HEAP_H
17
+ #define LEPTONICA_HEAP_H
18
+
19
+ /*
20
+ * heap.h
21
+ *
22
+ * Expandable priority queue configured as a heap for arbitrary void* data
23
+ *
24
+ * The L_Heap is used to implement a priority queue. The elements
25
+ * in the heap are ordered in either increasing or decreasing key value.
26
+ * The key is a float field 'keyval' that is required to be
27
+ * contained in the elements of the queue.
28
+ *
29
+ * The heap is a simple binary tree with the following constraints:
30
+ * - the key of each node is >= the keys of the two children
31
+ * - the tree is complete, meaning that each level (1, 2, 4, ...)
32
+ * is filled and the last level is filled from left to right
33
+ *
34
+ * The tree structure is implicit in the queue array, with the
35
+ * array elements numbered as a breadth-first search of the tree
36
+ * from left to right. It is thus guaranteed that the largest
37
+ * (or smallest) key belongs to the first element in the array.
38
+ *
39
+ * Heap sort is used to sort the array. Once an array has been
40
+ * sorted as a heap, it is convenient to use it as a priority queue,
41
+ * because the min (or max) elements are always at the root of
42
+ * the tree (element 0), and once removed, the heap can be
43
+ * resorted in not more than log[n] steps, where n is the number
44
+ * of elements on the heap. Likewise, if an arbitrary element is
45
+ * added to the end of the array A, the sorted heap can be restored
46
+ * in not more than log[n] steps.
47
+ *
48
+ * A L_Heap differs from a L_Queue in that the elements in the former
49
+ * are sorted by a key. Internally, the array is maintained
50
+ * as a queue, with a pointer to the end of the array. The
51
+ * head of the array always remains at array[0]. The array is
52
+ * maintained (sorted) as a heap. When an item is removed from
53
+ * the head, the last item takes its place (thus reducing the
54
+ * array length by 1), and this is followed by array element
55
+ * swaps to restore the heap property. When an item is added,
56
+ * it goes at the end of the array, and is swapped up to restore
57
+ * the heap. If the ptr array is full, adding another item causes
58
+ * the ptr array size to double.
59
+ *
60
+ * For further implementation details, see heap.c.
61
+ */
62
+
63
+ struct L_Heap
64
+ {
65
+ l_int32 nalloc; /* size of allocated ptr array */
66
+ l_int32 n; /* number of elements stored in the heap */
67
+ void **array; /* ptr array */
68
+ l_int32 direction; /* L_SORT_INCREASING or L_SORT_DECREASING */
69
+ };
70
+ typedef struct L_Heap L_HEAP;
71
+
72
+
73
+ #endif /* LEPTONICA_HEAP_H */
@@ -0,0 +1,153 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_IMAGEIO_H
17
+ #define LEPTONICA_IMAGEIO_H
18
+
19
+ /* ------------------ Image file format types -------------- */
20
+ /*
21
+ * The IFF_DEFAULT flag is used to write the file out in the
22
+ * same (input) file format that the pix was read from. If the pix
23
+ * was not read from file, the input format field will be
24
+ * IFF_UNKNOWN and the output file format will be chosen to
25
+ * be compressed and lossless; namely, IFF_TIFF_G4 for d = 1
26
+ * and IFF_PNG for everything else. IFF_JP2 is for jpeg2000, which
27
+ * is not supported in leptonica.
28
+ *
29
+ * In the future, new format types that have defined extensions
30
+ * will be added before IFF_DEFAULT, and will be kept in sync with
31
+ * the file format extensions in writefile.c. The positions of
32
+ * file formats before IFF_DEFAULT will remain invariant.
33
+ */
34
+ enum {
35
+ IFF_UNKNOWN = 0,
36
+ IFF_BMP = 1,
37
+ IFF_JFIF_JPEG = 2,
38
+ IFF_PNG = 3,
39
+ IFF_TIFF = 4,
40
+ IFF_TIFF_PACKBITS = 5,
41
+ IFF_TIFF_RLE = 6,
42
+ IFF_TIFF_G3 = 7,
43
+ IFF_TIFF_G4 = 8,
44
+ IFF_TIFF_LZW = 9,
45
+ IFF_TIFF_ZIP = 10,
46
+ IFF_PNM = 11,
47
+ IFF_PS = 12,
48
+ IFF_GIF = 13,
49
+ IFF_JP2 = 14,
50
+ IFF_WEBP = 15,
51
+ IFF_LPDF = 16,
52
+ IFF_DEFAULT = 17,
53
+ IFF_SPIX = 18
54
+ };
55
+
56
+
57
+ /* ---------------------- Format header ids --------------------- */
58
+ enum {
59
+ BMP_ID = 0x4d42,
60
+ TIFF_BIGEND_ID = 0x4d4d, /* MM - for 'motorola' */
61
+ TIFF_LITTLEEND_ID = 0x4949 /* II - for 'intel' */
62
+ };
63
+
64
+
65
+ /* ------------------ Gray hinting in jpeg reader --------------- */
66
+ enum {
67
+ L_HINT_GRAY = 1, /* only want grayscale information */
68
+ };
69
+
70
+
71
+ /* ------------------ Pdf formated encoding types --------------- */
72
+ enum {
73
+ L_JPEG_ENCODE = 1, /* use dct encoding: 8 and 32 bpp, no cmap */
74
+ L_G4_ENCODE = 2, /* use ccitt g4 fax encoding: 1 bpp */
75
+ L_FLATE_ENCODE = 3 /* use flate encoding: any depth, cmap ok */
76
+ };
77
+
78
+
79
+ /* ------------------ Compressed image data --------------------- */
80
+ /*
81
+ * In use, either datacomp or data85 will be produced, depending
82
+ * on whether the data needs to be ascii85 encoded. PostScript
83
+ * requires ascii85 encoding; pdf does not.
84
+ *
85
+ * For the colormap (flate compression only), PostScript uses ascii85
86
+ * encoding and pdf uses a bracketed array of space-separated
87
+ * hex-encoded rgb triples. Only tiff g4 (type == L_G4_ENCODE) uses
88
+ * the minisblack field.
89
+ */
90
+ struct L_Compressed_Data
91
+ {
92
+ l_int32 type; /* encoding type: L_JPEG_ENCODE, etc */
93
+ l_uint8 *datacomp; /* gzipped raster data */
94
+ size_t nbytescomp; /* number of compressed bytes */
95
+ char *data85; /* ascii85-encoded gzipped raster data */
96
+ size_t nbytes85; /* number of ascii85 encoded bytes */
97
+ char *cmapdata85; /* ascii85-encoded uncompressed cmap */
98
+ char *cmapdatahex; /* hex pdf array for the cmap */
99
+ l_int32 ncolors; /* number of colors in cmap */
100
+ l_int32 w; /* image width */
101
+ l_int32 h; /* image height */
102
+ l_int32 bps; /* bits/sample; typ. 1, 2, 4 or 8 */
103
+ l_int32 spp; /* samples/pixel; typ. 1 or 3 */
104
+ l_int32 minisblack; /* tiff g4 photometry */
105
+ size_t nbytes; /* number of uncompressed raster bytes */
106
+ l_int32 res; /* resolution (ppi) */
107
+ };
108
+ typedef struct L_Compressed_Data L_COMPRESSED_DATA;
109
+
110
+
111
+ /* ------------------------ Pdf multi-image flags ------------------------ */
112
+ enum {
113
+ L_FIRST_IMAGE = 1, /* first image to be used */
114
+ L_NEXT_IMAGE = 2, /* intermediate image; not first or last */
115
+ L_LAST_IMAGE = 3 /* last image to be used */
116
+ };
117
+
118
+
119
+ /* ------------------ Intermediate pdf generation data -------------------- */
120
+ /*
121
+ * This accumulates data for generating a pdf of a single page consisting
122
+ * of an arbitrary number of images.
123
+ *
124
+ * None of the strings have a trailing newline.
125
+ */
126
+ struct L_Pdf_Data
127
+ {
128
+ char *title; /* optional title for pdf */
129
+ l_int32 n; /* number of images */
130
+ l_int32 ncmap; /* number of colormaps */
131
+ struct L_Ptra *cida; /* array of compressed image data */
132
+ char *id; /* %PDF-1.2 id string */
133
+ char *obj1; /* catalog string */
134
+ char *obj2; /* metadata string */
135
+ char *obj3; /* pages string */
136
+ char *obj4; /* page string (variable data) */
137
+ char *obj5; /* content string (variable data) */
138
+ char *poststream; /* post-binary-stream string */
139
+ char *trailer; /* trailer string (variable data) */
140
+ struct Pta *xy; /* store (xpt, ypt) array */
141
+ struct Pta *wh; /* store (wpt, hpt) array */
142
+ struct Box *mediabox; /* bounding region for all images */
143
+ struct Sarray *saprex; /* pre-binary-stream xobject strings */
144
+ struct Sarray *sacmap; /* colormap pdf object strings */
145
+ struct Numa *objsize; /* sizes of each pdf string object */
146
+ struct Numa *objloc; /* location of each pdf string object */
147
+ l_int32 xrefloc; /* location of xref */
148
+ };
149
+ typedef struct L_Pdf_Data L_PDF_DATA;
150
+
151
+
152
+ #endif /* LEPTONICA_IMAGEIO_H */
153
+
@@ -0,0 +1,122 @@
1
+ /*====================================================================*
2
+ - Copyright (C) 2001 Leptonica. All rights reserved.
3
+ - This software is distributed in the hope that it will be
4
+ - useful, but with NO WARRANTY OF ANY KIND.
5
+ - No author or distributor accepts responsibility to anyone for the
6
+ - consequences of using this software, or for whether it serves any
7
+ - particular purpose or works at all, unless he or she says so in
8
+ - writing. Everyone is granted permission to copy, modify and
9
+ - redistribute this source code, for commercial or non-commercial
10
+ - purposes, with the following restrictions: (1) the origin of this
11
+ - source code must not be misrepresented; (2) modified versions must
12
+ - be plainly marked as such; and (3) this notice may not be removed
13
+ - or altered from any source or modified source distribution.
14
+ *====================================================================*/
15
+
16
+ #ifndef LEPTONICA_JBCLASS_H
17
+ #define LEPTONICA_JBCLASS_H
18
+
19
+ /*
20
+ * jbclass.h
21
+ *
22
+ * JbClasser
23
+ * JbData
24
+ */
25
+
26
+
27
+ /* The JbClasser struct holds all the data accumulated during the
28
+ * classification process that can be used for a compressed
29
+ * jbig2-type representation of a set of images. This is created
30
+ * in an initialization process and added to as the selected components
31
+ * on each successive page are analyzed. */
32
+ struct JbClasser
33
+ {
34
+ struct Sarray *safiles; /* input page image file names */
35
+ l_int32 method; /* JB_RANKHAUS, JB_CORRELATION */
36
+ l_int32 components; /* JB_CONN_COMPS, JB_CHARACTERS or */
37
+ /* JB_WORDS */
38
+ l_int32 maxwidth; /* max component width allowed */
39
+ l_int32 maxheight; /* max component height allowed */
40
+ l_int32 npages; /* number of pages already processed */
41
+ l_int32 baseindex; /* number of components already processed */
42
+ /* on fully processed pages */
43
+ struct Numa *nacomps; /* number of components on each page */
44
+ l_int32 sizehaus; /* size of square struct element for haus */
45
+ l_float32 rankhaus; /* rank val of haus match, each way */
46
+ l_float32 thresh; /* thresh value for correlation score */
47
+ l_float32 weightfactor; /* corrects thresh value for heaver */
48
+ /* components; use 0 for no correction */
49
+ struct Numa *naarea; /* w * h of each template, without extra */
50
+ /* border pixels */
51
+ l_int32 w; /* max width of original src images */
52
+ l_int32 h; /* max height of original src images */
53
+ l_int32 nclass; /* current number of classes */
54
+ l_int32 keep_pixaa; /* If zero, pixaa isn't filled */
55
+ struct Pixaa *pixaa; /* instances for each class; unbordered */
56
+ struct Pixa *pixat; /* templates for each class; bordered */
57
+ /* and not dilated */
58
+ struct Pixa *pixatd; /* templates for each class; bordered */
59
+ /* and dilated */
60
+ struct NumaHash *nahash; /* Hash table to find templates by size */
61
+ struct Numa *nafgt; /* fg areas of undilated templates; */
62
+ /* only used for rank < 1.0 */
63
+ struct Pta *ptac; /* centroids of all bordered cc */
64
+ struct Pta *ptact; /* centroids of all bordered template cc */
65
+ struct Numa *naclass; /* array of class ids for each component */
66
+ struct Numa *napage; /* array of page nums for each component */
67
+ struct Pta *ptaul; /* array of UL corners at which the */
68
+ /* template is to be placed for each */
69
+ /* component */
70
+ struct Pta *ptall; /* similar to ptaul, but for LL corners */
71
+ };
72
+ typedef struct JbClasser JBCLASSER;
73
+
74
+
75
+ /* The JbData struct holds all the data required for
76
+ * the compressed jbig-type representation of a set of images.
77
+ * The data can be written to file, read back, and used
78
+ * to regenerate an approximate version of the original,
79
+ * which differs in two ways from the original:
80
+ * (1) It uses a template image for each c.c. instead of the
81
+ * original instance, for each occurrence on each page.
82
+ * (2) It discards components with either a height or width larger
83
+ * than the maximuma, given here by the lattice dimensions
84
+ * used for storing the templates. */
85
+ struct JbData
86
+ {
87
+ struct Pix *pix; /* template composite for all classes */
88
+ l_int32 npages; /* number of pages */
89
+ l_int32 w; /* max width of original page images */
90
+ l_int32 h; /* max height of original page images */
91
+ l_int32 nclass; /* number of classes */
92
+ l_int32 latticew; /* lattice width for template composite */
93
+ l_int32 latticeh; /* lattice height for template composite */
94
+ struct Numa *naclass; /* array of class ids for each component */
95
+ struct Numa *napage; /* array of page nums for each component */
96
+ struct Pta *ptaul; /* array of UL corners at which the */
97
+ /* template is to be placed for each */
98
+ /* component */
99
+ };
100
+ typedef struct JbData JBDATA;
101
+
102
+
103
+ /* Classifier methods */
104
+ enum {
105
+ JB_RANKHAUS = 0,
106
+ JB_CORRELATION = 1
107
+ };
108
+
109
+ /* For jbGetComponents(): type of component to extract from images */
110
+ enum {
111
+ JB_CONN_COMPS = 0,
112
+ JB_CHARACTERS = 1,
113
+ JB_WORDS = 2
114
+ };
115
+
116
+ /* These parameters are used for naming the two files
117
+ * in which the jbig2-like compressed data is stored. */
118
+ #define JB_TEMPLATE_EXT ".templates.png"
119
+ #define JB_DATA_EXT ".data"
120
+
121
+
122
+ #endif /* LEPTONICA_JBCLASS_H */