motion-ocr 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 */