tesseract_bin 1.0.0

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 (612) hide show
  1. data/.document +5 -0
  2. data/Gemfile +14 -0
  3. data/Gemfile.lock +23 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +19 -0
  6. data/Rakefile +46 -0
  7. data/VERSION +1 -0
  8. data/ext/tesseract_bin/extconf.rb +17 -0
  9. data/lib/tesseract_bin.rb +12 -0
  10. data/tesseract_bin.gemspec +660 -0
  11. data/test/helper.rb +18 -0
  12. data/test/test_tesseract_bin.rb +7 -0
  13. data/vendor/tesseract-2.04/AUTHORS +8 -0
  14. data/vendor/tesseract-2.04/COPYING +23 -0
  15. data/vendor/tesseract-2.04/ChangeLog +71 -0
  16. data/vendor/tesseract-2.04/INSTALL +229 -0
  17. data/vendor/tesseract-2.04/Makefile.am +20 -0
  18. data/vendor/tesseract-2.04/Makefile.in +641 -0
  19. data/vendor/tesseract-2.04/NEWS +1 -0
  20. data/vendor/tesseract-2.04/README +138 -0
  21. data/vendor/tesseract-2.04/ReleaseNotes +213 -0
  22. data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
  23. data/vendor/tesseract-2.04/StdAfx.h +24 -0
  24. data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
  25. data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
  26. data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
  27. data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
  28. data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
  29. data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
  30. data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
  31. data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
  32. data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
  33. data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
  34. data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
  35. data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
  36. data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
  37. data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
  38. data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
  39. data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
  40. data/vendor/tesseract-2.04/ccmain/control.h +198 -0
  41. data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
  42. data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
  43. data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
  44. data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
  45. data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
  46. data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
  47. data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
  48. data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
  49. data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
  50. data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
  51. data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
  52. data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
  53. data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
  54. data/vendor/tesseract-2.04/ccmain/output.h +116 -0
  55. data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
  56. data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
  57. data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
  58. data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
  59. data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
  60. data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
  61. data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
  62. data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
  63. data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
  64. data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
  65. data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
  66. data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
  67. data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
  68. data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
  69. data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
  70. data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
  71. data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
  72. data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
  73. data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
  74. data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
  75. data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
  76. data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
  77. data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
  78. data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
  79. data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
  80. data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
  81. data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
  82. data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
  83. data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
  84. data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
  85. data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
  86. data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
  87. data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
  88. data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
  89. data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
  90. data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
  91. data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
  92. data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
  93. data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
  94. data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
  95. data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
  96. data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
  97. data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
  98. data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
  99. data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
  100. data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
  101. data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
  102. data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
  103. data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
  104. data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
  105. data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
  106. data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
  107. data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
  108. data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
  109. data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
  110. data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
  111. data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
  112. data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
  113. data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
  114. data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
  115. data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
  116. data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
  117. data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
  118. data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
  119. data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
  120. data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
  121. data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
  122. data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
  123. data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
  124. data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
  125. data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
  126. data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
  127. data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
  128. data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
  129. data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
  130. data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
  131. data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
  132. data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
  133. data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
  134. data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
  135. data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
  136. data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
  137. data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
  138. data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
  139. data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
  140. data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
  141. data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
  142. data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
  143. data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
  144. data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
  145. data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
  146. data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
  147. data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
  148. data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
  149. data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
  150. data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
  151. data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
  152. data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
  153. data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
  154. data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
  155. data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
  156. data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
  157. data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
  158. data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
  159. data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
  160. data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
  161. data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
  162. data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
  163. data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
  164. data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
  165. data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
  166. data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
  167. data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
  168. data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
  169. data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
  170. data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
  171. data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
  172. data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
  173. data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
  174. data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
  175. data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
  176. data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
  177. data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
  178. data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
  179. data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
  180. data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
  181. data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
  182. data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
  183. data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
  184. data/vendor/tesseract-2.04/ccutil/host.h +180 -0
  185. data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
  186. data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
  187. data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
  188. data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
  189. data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
  190. data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
  191. data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
  192. data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
  193. data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
  194. data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
  195. data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
  196. data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
  197. data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
  198. data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
  199. data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
  200. data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
  201. data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
  202. data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
  203. data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
  204. data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
  205. data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
  206. data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
  207. data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
  208. data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
  209. data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
  210. data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
  211. data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
  212. data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
  213. data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
  214. data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
  215. data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
  216. data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
  217. data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
  218. data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
  219. data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
  220. data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
  221. data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
  222. data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
  223. data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
  224. data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
  225. data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
  226. data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
  227. data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
  228. data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
  229. data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
  230. data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
  231. data/vendor/tesseract-2.04/classify/baseline.h +91 -0
  232. data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
  233. data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
  234. data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
  235. data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
  236. data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
  237. data/vendor/tesseract-2.04/classify/cluster.h +158 -0
  238. data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
  239. data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
  240. data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
  241. data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
  242. data/vendor/tesseract-2.04/classify/extern.h +32 -0
  243. data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
  244. data/vendor/tesseract-2.04/classify/extract.h +36 -0
  245. data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
  246. data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
  247. data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
  248. data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
  249. data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
  250. data/vendor/tesseract-2.04/classify/float2int.h +65 -0
  251. data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
  252. data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
  253. data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
  254. data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
  255. data/vendor/tesseract-2.04/classify/fxid.h +69 -0
  256. data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
  257. data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
  258. data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
  259. data/vendor/tesseract-2.04/classify/intfx.h +63 -0
  260. data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
  261. data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
  262. data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
  263. data/vendor/tesseract-2.04/classify/intproto.h +320 -0
  264. data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
  265. data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
  266. data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
  267. data/vendor/tesseract-2.04/classify/mf.h +43 -0
  268. data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
  269. data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
  270. data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
  271. data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
  272. data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
  273. data/vendor/tesseract-2.04/classify/mfx.h +52 -0
  274. data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
  275. data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
  276. data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
  277. data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
  278. data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
  279. data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
  280. data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
  281. data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
  282. data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
  283. data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
  284. data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
  285. data/vendor/tesseract-2.04/classify/protos.h +258 -0
  286. data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
  287. data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
  288. data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
  289. data/vendor/tesseract-2.04/classify/speckle.h +69 -0
  290. data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
  291. data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
  292. data/vendor/tesseract-2.04/config/config.guess +1466 -0
  293. data/vendor/tesseract-2.04/config/config.h.in +188 -0
  294. data/vendor/tesseract-2.04/config/config.sub +1579 -0
  295. data/vendor/tesseract-2.04/config/depcomp +530 -0
  296. data/vendor/tesseract-2.04/config/install-sh +269 -0
  297. data/vendor/tesseract-2.04/config/missing +198 -0
  298. data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
  299. data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
  300. data/vendor/tesseract-2.04/configure +10424 -0
  301. data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
  302. data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
  303. data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
  304. data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
  305. data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
  306. data/vendor/tesseract-2.04/cutil/const.h +108 -0
  307. data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
  308. data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
  309. data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
  310. data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
  311. data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
  312. data/vendor/tesseract-2.04/cutil/debug.h +348 -0
  313. data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
  314. data/vendor/tesseract-2.04/cutil/efio.h +32 -0
  315. data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
  316. data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
  317. data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
  318. data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
  319. data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
  320. data/vendor/tesseract-2.04/cutil/general.h +33 -0
  321. data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
  322. data/vendor/tesseract-2.04/cutil/globals.h +70 -0
  323. data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
  324. data/vendor/tesseract-2.04/cutil/listio.h +43 -0
  325. data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
  326. data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
  327. data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
  328. data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
  329. data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
  330. data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
  331. data/vendor/tesseract-2.04/cutil/structures.h +112 -0
  332. data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
  333. data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
  334. data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
  335. data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
  336. data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
  337. data/vendor/tesseract-2.04/cutil/variables.h +170 -0
  338. data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
  339. data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
  340. data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
  341. data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
  342. data/vendor/tesseract-2.04/dict/choices.h +241 -0
  343. data/vendor/tesseract-2.04/dict/context.cpp +270 -0
  344. data/vendor/tesseract-2.04/dict/context.h +82 -0
  345. data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
  346. data/vendor/tesseract-2.04/dict/dawg.h +394 -0
  347. data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
  348. data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
  349. data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
  350. data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
  351. data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
  352. data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
  353. data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
  354. data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
  355. data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
  356. data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
  357. data/vendor/tesseract-2.04/dict/permngram.h +33 -0
  358. data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
  359. data/vendor/tesseract-2.04/dict/permnum.h +83 -0
  360. data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
  361. data/vendor/tesseract-2.04/dict/permute.h +93 -0
  362. data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
  363. data/vendor/tesseract-2.04/dict/reduce.h +112 -0
  364. data/vendor/tesseract-2.04/dict/states.cpp +382 -0
  365. data/vendor/tesseract-2.04/dict/states.h +111 -0
  366. data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
  367. data/vendor/tesseract-2.04/dict/stopper.h +103 -0
  368. data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
  369. data/vendor/tesseract-2.04/dict/trie.h +190 -0
  370. data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
  371. data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
  372. data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
  373. data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
  374. data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
  375. data/vendor/tesseract-2.04/eurotext.tif +0 -0
  376. data/vendor/tesseract-2.04/image/Makefile.am +10 -0
  377. data/vendor/tesseract-2.04/image/Makefile.in +596 -0
  378. data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
  379. data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
  380. data/vendor/tesseract-2.04/image/img.h +336 -0
  381. data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
  382. data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
  383. data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
  384. data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
  385. data/vendor/tesseract-2.04/image/imgio.h +22 -0
  386. data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
  387. data/vendor/tesseract-2.04/image/imgs.h +102 -0
  388. data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
  389. data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
  390. data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
  391. data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
  392. data/vendor/tesseract-2.04/image/svshowim.h +25 -0
  393. data/vendor/tesseract-2.04/java/Makefile.am +4 -0
  394. data/vendor/tesseract-2.04/java/Makefile.in +473 -0
  395. data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
  396. data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
  397. data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
  398. data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
  399. data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
  400. data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
  401. data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
  402. data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
  403. data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
  404. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
  405. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
  406. data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
  407. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
  408. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
  409. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
  410. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
  411. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
  412. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
  413. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
  414. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
  415. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
  416. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
  417. data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
  418. data/vendor/tesseract-2.04/java/makefile +55 -0
  419. data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
  420. data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
  421. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
  422. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
  423. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
  424. data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
  425. data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
  426. data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
  427. data/vendor/tesseract-2.04/phototest.tif +0 -0
  428. data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
  429. data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
  430. data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
  431. data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
  432. data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
  433. data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
  434. data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
  435. data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
  436. data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
  437. data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
  438. data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
  439. data/vendor/tesseract-2.04/tessdata/confsets +3 -0
  440. data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
  441. data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
  442. data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
  443. data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
  444. data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
  445. data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
  446. data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
  447. data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
  448. data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
  449. data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
  450. data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
  451. data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
  452. data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
  453. data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
  454. data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
  455. data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
  456. data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
  457. data/vendor/tesseract-2.04/tessdll.cpp +351 -0
  458. data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
  459. data/vendor/tesseract-2.04/tessdll.h +143 -0
  460. data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
  461. data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
  462. data/vendor/tesseract-2.04/tesseract.dsw +116 -0
  463. data/vendor/tesseract-2.04/tesseract.sln +59 -0
  464. data/vendor/tesseract-2.04/tesseract.spec +188 -0
  465. data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
  466. data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
  467. data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
  468. data/vendor/tesseract-2.04/testing/README +43 -0
  469. data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
  470. data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
  471. data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
  472. data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
  473. data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
  474. data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
  475. data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
  476. data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
  477. data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
  478. data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
  479. data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
  480. data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
  481. data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
  482. data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
  483. data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
  484. data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
  485. data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
  486. data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
  487. data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
  488. data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
  489. data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
  490. data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
  491. data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
  492. data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
  493. data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
  494. data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
  495. data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
  496. data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
  497. data/vendor/tesseract-2.04/textord/makerow.h +295 -0
  498. data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
  499. data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
  500. data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
  501. data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
  502. data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
  503. data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
  504. data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
  505. data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
  506. data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
  507. data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
  508. data/vendor/tesseract-2.04/textord/tessout.h +76 -0
  509. data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
  510. data/vendor/tesseract-2.04/textord/topitch.h +195 -0
  511. data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
  512. data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
  513. data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
  514. data/vendor/tesseract-2.04/textord/tospace.h +193 -0
  515. data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
  516. data/vendor/tesseract-2.04/textord/tovars.h +94 -0
  517. data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
  518. data/vendor/tesseract-2.04/textord/underlin.h +53 -0
  519. data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
  520. data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
  521. data/vendor/tesseract-2.04/training/Makefile.am +54 -0
  522. data/vendor/tesseract-2.04/training/Makefile.in +720 -0
  523. data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
  524. data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
  525. data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
  526. data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
  527. data/vendor/tesseract-2.04/training/mergenf.h +106 -0
  528. data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
  529. data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
  530. data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
  531. data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
  532. data/vendor/tesseract-2.04/training/name2char.h +38 -0
  533. data/vendor/tesseract-2.04/training/training.cpp +190 -0
  534. data/vendor/tesseract-2.04/training/training.h +130 -0
  535. data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
  536. data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
  537. data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
  538. data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
  539. data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
  540. data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
  541. data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
  542. data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
  543. data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
  544. data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
  545. data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
  546. data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
  547. data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
  548. data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
  549. data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
  550. data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
  551. data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
  552. data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
  553. data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
  554. data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
  555. data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
  556. data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
  557. data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
  558. data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
  559. data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
  560. data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
  561. data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
  562. data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
  563. data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
  564. data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
  565. data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
  566. data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
  567. data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
  568. data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
  569. data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
  570. data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
  571. data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
  572. data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
  573. data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
  574. data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
  575. data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
  576. data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
  577. data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
  578. data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
  579. data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
  580. data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
  581. data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
  582. data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
  583. data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
  584. data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
  585. data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
  586. data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
  587. data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
  588. data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
  589. data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
  590. data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
  591. data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
  592. data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
  593. data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
  594. data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
  595. data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
  596. data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
  597. data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
  598. data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
  599. data/vendor/tesseract-2.04/wordrec/render.h +58 -0
  600. data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
  601. data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
  602. data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
  603. data/vendor/tesseract-2.04/wordrec/split.h +115 -0
  604. data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
  605. data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
  606. data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
  607. data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
  608. data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
  609. data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
  610. data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
  611. data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
  612. metadata +708 -0
@@ -0,0 +1,134 @@
1
+ /**********************************************************************
2
+ * File: pithsync.h (Formerly pitsync2.h)
3
+ * Description: Code to find the optimum fixed pitch segmentation of some blobs.
4
+ * Author: Ray Smith
5
+ * Created: Thu Nov 19 11:48:05 GMT 1992
6
+ *
7
+ * (C) Copyright 1992, Hewlett-Packard Ltd.
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
+ *
18
+ **********************************************************************/
19
+
20
+ #ifndef PITHSYNC_H
21
+ #define PITHSYNC_H
22
+
23
+ #include "blobbox.h"
24
+ #include "varable.h"
25
+ #include "statistc.h"
26
+ #include "notdll.h"
27
+
28
+ class FPSEGPT_LIST;
29
+
30
+ class FPCUTPT
31
+ {
32
+ public:
33
+ FPCUTPT() { //empty
34
+ }
35
+ void setup ( //start of cut
36
+ FPCUTPT cutpts[], //predecessors
37
+ inT16 array_origin, //start coord
38
+ STATS * projection, //occupation
39
+ inT16 zero_count, //official zero
40
+ inT16 pitch, //proposed pitch
41
+ inT16 x, //position
42
+ inT16 offset); //dist to gap
43
+
44
+ void assign ( //evaluate cut
45
+ FPCUTPT cutpts[], //predecessors
46
+ inT16 array_origin, //start coord
47
+ inT16 x, //position
48
+ BOOL8 faking, //faking this one
49
+ BOOL8 mid_cut, //doing free cut
50
+ inT16 offset, //extra cost dist
51
+ STATS * projection, //occupation
52
+ float projection_scale, //scaling
53
+ inT16 zero_count, //official zero
54
+ inT16 pitch, //proposed pitch
55
+ inT16 pitch_error); //allowed tolerance
56
+
57
+ void assign_cheap ( //evaluate cut
58
+ FPCUTPT cutpts[], //predecessors
59
+ inT16 array_origin, //start coord
60
+ inT16 x, //position
61
+ BOOL8 faking, //faking this one
62
+ BOOL8 mid_cut, //doing free cut
63
+ inT16 offset, //extra cost dist
64
+ STATS * projection, //occupation
65
+ float projection_scale, //scaling
66
+ inT16 zero_count, //official zero
67
+ inT16 pitch, //proposed pitch
68
+ inT16 pitch_error); //allowed tolerance
69
+
70
+ inT32 position() { //acces func
71
+ return xpos;
72
+ }
73
+ double cost_function() {
74
+ return cost;
75
+ }
76
+ double squares() {
77
+ return sq_sum;
78
+ }
79
+ double sum() {
80
+ return mean_sum;
81
+ }
82
+ FPCUTPT *previous() {
83
+ return pred;
84
+ }
85
+ inT16 cheap_cuts() const { //no of mi cuts
86
+ return mid_cuts;
87
+ }
88
+ inT16 index() const {
89
+ return region_index;
90
+ }
91
+
92
+ BOOL8 faked; //faked split point
93
+ BOOL8 terminal; //successful end
94
+ inT16 fake_count; //total fakes to here
95
+
96
+ private:
97
+ inT16 region_index; //cut serial number
98
+ inT16 mid_cuts; //no of cheap cuts
99
+ inT32 xpos; //location
100
+ uinT32 back_balance; //proj backwards
101
+ uinT32 fwd_balance; //proj forwards
102
+ FPCUTPT *pred; //optimal previous
103
+ double mean_sum; //mean so far
104
+ double sq_sum; //summed distsances
105
+ double cost; //cost function
106
+ };
107
+ double check_pitch_sync2( //find segmentation
108
+ BLOBNBOX_IT *blob_it, //blobs to do
109
+ inT16 blob_count, //no of blobs
110
+ inT16 pitch, //pitch estimate
111
+ inT16 pitch_error, //tolerance
112
+ STATS *projection, //vertical
113
+ inT16 projection_left, //edges //scale factor
114
+ inT16 projection_right,
115
+ float projection_scale,
116
+ inT16 &occupation_count, //no of occupied cells
117
+ FPSEGPT_LIST *seg_list, //output list
118
+ inT16 start, //start of good range
119
+ inT16 end //end of good range
120
+ );
121
+ double check_pitch_sync3( //find segmentation
122
+ inT16 projection_left, //edges //to be considered 0
123
+ inT16 projection_right,
124
+ inT16 zero_count,
125
+ inT16 pitch, //pitch estimate
126
+ inT16 pitch_error, //tolerance
127
+ STATS *projection, //vertical
128
+ float projection_scale, //scale factor
129
+ inT16 &occupation_count, //no of occupied cells
130
+ FPSEGPT_LIST *seg_list, //output list
131
+ inT16 start, //start of good range
132
+ inT16 end //end of good range
133
+ );
134
+ #endif
@@ -0,0 +1,425 @@
1
+ /**********************************************************************
2
+ * File: pitsync1.cpp (Formerly pitsync.c)
3
+ * Description: Code to find the optimum fixed pitch segmentation of some blobs.
4
+ * Author: Ray Smith
5
+ * Created: Thu Nov 19 11:48:05 GMT 1992
6
+ *
7
+ * (C) Copyright 1992, Hewlett-Packard Ltd.
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
+ *
18
+ **********************************************************************/
19
+
20
+ #include "mfcpch.h"
21
+ #ifdef __UNIX__
22
+ #include <assert.h>
23
+ #endif
24
+ #include <math.h>
25
+ #include "memry.h"
26
+ #include "pitsync1.h"
27
+
28
+ #include "notdll.h"
29
+
30
+ ELISTIZE (FPSEGPT) CLISTIZE (FPSEGPT_LIST)
31
+ #define EXTERN
32
+ EXTERN
33
+ INT_VAR (pitsync_linear_version, 6, "Use new fast algorithm");
34
+ EXTERN
35
+ double_VAR (pitsync_joined_edge, 0.75,
36
+ "Dist inside big blob for chopping");
37
+ EXTERN
38
+ double_VAR (pitsync_offset_freecut_fraction, 0.25,
39
+ "Fraction of cut for free cuts");
40
+ EXTERN
41
+ INT_VAR (pitsync_fake_depth, 1, "Max advance fake generation");
42
+
43
+ /**********************************************************************
44
+ * FPSEGPT::FPSEGPT
45
+ *
46
+ * Constructor to make a new FPSEGPT.
47
+ * The existing FPCUTPT is duplicated.
48
+ **********************************************************************/
49
+
50
+ FPSEGPT::FPSEGPT( //constructor
51
+ FPCUTPT *cutpt //create from new form
52
+ ) {
53
+ pred = NULL;
54
+ mean_sum = cutpt->sum ();
55
+ sq_sum = cutpt->squares ();
56
+ cost = cutpt->cost_function ();
57
+ faked = cutpt->faked;
58
+ terminal = cutpt->terminal;
59
+ fake_count = cutpt->fake_count;
60
+ xpos = cutpt->position ();
61
+ mid_cuts = cutpt->cheap_cuts ();
62
+ }
63
+
64
+
65
+ /**********************************************************************
66
+ * FPSEGPT::FPSEGPT
67
+ *
68
+ * Constructor to make a new FPSEGPT.
69
+ **********************************************************************/
70
+
71
+ FPSEGPT::FPSEGPT ( //constructor
72
+ inT16 x //position
73
+ ):xpos (x) {
74
+ pred = NULL;
75
+ mean_sum = 0;
76
+ sq_sum = 0;
77
+ cost = 0;
78
+ faked = FALSE;
79
+ terminal = FALSE;
80
+ fake_count = 0;
81
+ mid_cuts = 0;
82
+ }
83
+
84
+
85
+ /**********************************************************************
86
+ * FPSEGPT::FPSEGPT
87
+ *
88
+ * Constructor to make a new FPSEGPT.
89
+ **********************************************************************/
90
+
91
+ FPSEGPT::FPSEGPT ( //constructor
92
+ inT16 x, //position
93
+ BOOL8 faking, //faking this one
94
+ inT16 offset, //dist to gap
95
+ inT16 region_index, //segment number
96
+ inT16 pitch, //proposed pitch
97
+ inT16 pitch_error, //allowed tolerance
98
+ FPSEGPT_LIST * prev_list //previous segment
99
+ ):xpos (x) {
100
+ inT16 best_fake; //on previous
101
+ FPSEGPT *segpt; //segment point
102
+ inT32 dist; //from prev segment
103
+ double sq_dist; //squared distance
104
+ double mean; //mean pitch
105
+ double total; //total dists
106
+ double factor; //cost function
107
+ FPSEGPT_IT pred_it = prev_list;//for previuos segment
108
+
109
+ cost = MAX_FLOAT32;
110
+ pred = NULL;
111
+ faked = faking;
112
+ terminal = FALSE;
113
+ best_fake = MAX_INT16;
114
+ mid_cuts = 0;
115
+ for (pred_it.mark_cycle_pt (); !pred_it.cycled_list (); pred_it.forward ()) {
116
+ segpt = pred_it.data ();
117
+ if (segpt->fake_count < best_fake)
118
+ best_fake = segpt->fake_count;
119
+ dist = x - segpt->xpos;
120
+ if (dist >= pitch - pitch_error && dist <= pitch + pitch_error
121
+ && !segpt->terminal) {
122
+ total = segpt->mean_sum + dist;
123
+ sq_dist = dist * dist + segpt->sq_sum + offset * offset;
124
+ //sum of squarees
125
+ mean = total / region_index;
126
+ factor = mean - pitch;
127
+ factor *= factor;
128
+ factor += sq_dist / (region_index) - mean * mean;
129
+ if (factor < cost) {
130
+ cost = factor; //find least cost
131
+ pred = segpt; //save path
132
+ mean_sum = total;
133
+ sq_sum = sq_dist;
134
+ fake_count = segpt->fake_count + faked;
135
+ }
136
+ }
137
+ }
138
+ if (fake_count > best_fake + 1)
139
+ pred = NULL; //fail it
140
+ }
141
+
142
+
143
+ /**********************************************************************
144
+ * check_pitch_sync
145
+ *
146
+ * Construct the lattice of possible segmentation points and choose the
147
+ * optimal path. Return the optimal path only.
148
+ * The return value is a measure of goodness of the sync.
149
+ **********************************************************************/
150
+
151
+ double check_pitch_sync( //find segmentation
152
+ BLOBNBOX_IT *blob_it, //blobs to do
153
+ inT16 blob_count, //no of blobs
154
+ inT16 pitch, //pitch estimate
155
+ inT16 pitch_error, //tolerance
156
+ STATS *projection, //vertical
157
+ FPSEGPT_LIST *seg_list //output list
158
+ ) {
159
+ inT16 x; //current coord
160
+ inT16 min_index; //blob number
161
+ inT16 max_index; //blob number
162
+ inT16 left_edge; //of word
163
+ inT16 right_edge; //of word
164
+ inT16 right_max; //max allowed x
165
+ inT16 min_x; //in this region
166
+ inT16 max_x;
167
+ inT16 region_index;
168
+ inT16 best_region_index = 0; //for best result
169
+ inT16 offset; //dist to legal area
170
+ inT16 left_best_x; //edge of good region
171
+ inT16 right_best_x; //right edge
172
+ TBOX min_box; //bounding box
173
+ TBOX max_box; //bounding box
174
+ TBOX next_box; //box of next blob
175
+ FPSEGPT *segpt; //segment point
176
+ FPSEGPT_LIST *segpts; //points in a segment
177
+ double best_cost; //best path
178
+ double mean_sum; //computes result
179
+ FPSEGPT *best_end; //end of best path
180
+ BLOBNBOX_IT min_it; //copy iterator
181
+ BLOBNBOX_IT max_it; //copy iterator
182
+ FPSEGPT_IT segpt_it; //iterator
183
+ //output segments
184
+ FPSEGPT_IT outseg_it = seg_list;
185
+ FPSEGPT_LIST_CLIST lattice; //list of lists
186
+ //region iterator
187
+ FPSEGPT_LIST_C_IT lattice_it = &lattice;
188
+
189
+ // tprintf("Computing sync on word of %d blobs with pitch %d\n",
190
+ // blob_count, pitch);
191
+ // if (blob_count==8 && pitch==27)
192
+ // projection->print(stdout,TRUE);
193
+ if (pitch < 3)
194
+ pitch = 3; //nothing ludicrous
195
+ if ((pitch - 3) / 2 < pitch_error)
196
+ pitch_error = (pitch - 3) / 2;
197
+ min_it = *blob_it;
198
+ min_box = box_next (&min_it); //get box
199
+ // if (blob_count==8 && pitch==27)
200
+ // tprintf("1st box at (%d,%d)->(%d,%d)\n",
201
+ // min_box.left(),min_box.bottom(),
202
+ // min_box.right(),min_box.top());
203
+ //left of word
204
+ left_edge = min_box.left () + pitch_error;
205
+ for (min_index = 1; min_index < blob_count; min_index++) {
206
+ min_box = box_next (&min_it);
207
+ // if (blob_count==8 && pitch==27)
208
+ // tprintf("Box at (%d,%d)->(%d,%d)\n",
209
+ // min_box.left(),min_box.bottom(),
210
+ // min_box.right(),min_box.top());
211
+ }
212
+ right_edge = min_box.right (); //end of word
213
+ max_x = left_edge;
214
+ //min permissible
215
+ min_x = max_x - pitch + pitch_error * 2 + 1;
216
+ right_max = right_edge + pitch - pitch_error - 1;
217
+ segpts = new FPSEGPT_LIST; //list of points
218
+ segpt_it.set_to_list (segpts);
219
+ for (x = min_x; x <= max_x; x++) {
220
+ segpt = new FPSEGPT (x); //make a new one
221
+ //put in list
222
+ segpt_it.add_after_then_move (segpt);
223
+ }
224
+ //first segment
225
+ lattice_it.add_before_then_move (segpts);
226
+ min_index = 0;
227
+ region_index = 1;
228
+ best_cost = MAX_FLOAT32;
229
+ best_end = NULL;
230
+ min_it = *blob_it;
231
+ min_box = box_next (&min_it); //first box
232
+ do {
233
+ left_best_x = -1;
234
+ right_best_x = -1;
235
+ segpts = new FPSEGPT_LIST; //list of points
236
+ segpt_it.set_to_list (segpts);
237
+ min_x += pitch - pitch_error;//next limits
238
+ max_x += pitch + pitch_error;
239
+ while (min_box.right () < min_x && min_index < blob_count) {
240
+ min_index++;
241
+ min_box = box_next (&min_it);
242
+ }
243
+ max_it = min_it;
244
+ max_index = min_index;
245
+ max_box = min_box;
246
+ next_box = box_next (&max_it);
247
+ for (x = min_x; x <= max_x && x <= right_max; x++) {
248
+ while (x < right_edge && max_index < blob_count
249
+ && x > max_box.right ()) {
250
+ max_index++;
251
+ max_box = next_box;
252
+ next_box = box_next (&max_it);
253
+ }
254
+ if (x <= max_box.left () + pitch_error
255
+ || x >= max_box.right () - pitch_error || x >= right_edge
256
+ || (max_index < blob_count - 1 && x >= next_box.left ())
257
+ || (x - max_box.left () > pitch * pitsync_joined_edge
258
+ && max_box.right () - x > pitch * pitsync_joined_edge)) {
259
+ // || projection->local_min(x))
260
+ if (x - max_box.left () > 0
261
+ && x - max_box.left () <= pitch_error)
262
+ //dist to real break
263
+ offset = x - max_box.left ();
264
+ else if (max_box.right () - x > 0
265
+ && max_box.right () - x <= pitch_error
266
+ && (max_index >= blob_count - 1
267
+ || x < next_box.left ()))
268
+ offset = max_box.right () - x;
269
+ else
270
+ offset = 0;
271
+ // offset=pitsync_offset_freecut_fraction*projection->pile_count(x);
272
+ segpt = new FPSEGPT (x, FALSE, offset, region_index,
273
+ pitch, pitch_error, lattice_it.data ());
274
+ }
275
+ else {
276
+ offset = projection->pile_count (x);
277
+ segpt = new FPSEGPT (x, TRUE, offset, region_index,
278
+ pitch, pitch_error, lattice_it.data ());
279
+ }
280
+ if (segpt->previous () != NULL) {
281
+ segpt_it.add_after_then_move (segpt);
282
+ if (x >= right_edge - pitch_error) {
283
+ segpt->terminal = TRUE;//no more wanted
284
+ if (segpt->cost_function () < best_cost) {
285
+ best_cost = segpt->cost_function ();
286
+ //find least
287
+ best_end = segpt;
288
+ best_region_index = region_index;
289
+ left_best_x = x;
290
+ right_best_x = x;
291
+ }
292
+ else if (segpt->cost_function () == best_cost
293
+ && right_best_x == x - 1)
294
+ right_best_x = x;
295
+ }
296
+ }
297
+ else {
298
+ delete segpt; //no good
299
+ }
300
+ }
301
+ if (segpts->empty ()) {
302
+ if (best_end != NULL)
303
+ break; //already found one
304
+ make_illegal_segment (lattice_it.data (), min_box, min_it,
305
+ region_index, pitch, pitch_error, segpts);
306
+ }
307
+ else {
308
+ if (right_best_x > left_best_x + 1) {
309
+ left_best_x = (left_best_x + right_best_x + 1) / 2;
310
+ for (segpt_it.mark_cycle_pt (); !segpt_it.cycled_list ()
311
+ && segpt_it.data ()->position () != left_best_x;
312
+ segpt_it.forward ());
313
+ if (segpt_it.data ()->position () == left_best_x)
314
+ //middle of region
315
+ best_end = segpt_it.data ();
316
+ }
317
+ }
318
+ //new segment
319
+ lattice_it.add_before_then_move (segpts);
320
+ region_index++;
321
+ }
322
+ while (min_x < right_edge);
323
+ ASSERT_HOST (best_end != NULL);//must always find some
324
+
325
+ for (lattice_it.mark_cycle_pt (); !lattice_it.cycled_list ();
326
+ lattice_it.forward ()) {
327
+ segpts = lattice_it.data ();
328
+ segpt_it.set_to_list (segpts);
329
+ // if (blob_count==8 && pitch==27)
330
+ // {
331
+ // for (segpt_it.mark_cycle_pt();!segpt_it.cycled_list();segpt_it.forward())
332
+ // {
333
+ // segpt=segpt_it.data();
334
+ // tprintf("At %d, (%x) cost=%g, m=%g, sq=%g, pred=%x\n",
335
+ // segpt->position(),segpt,segpt->cost_function(),
336
+ // segpt->sum(),segpt->squares(),segpt->previous());
337
+ // }
338
+ // tprintf("\n");
339
+ // }
340
+ for (segpt_it.mark_cycle_pt (); !segpt_it.cycled_list ()
341
+ && segpt_it.data () != best_end; segpt_it.forward ());
342
+ if (segpt_it.data () == best_end) {
343
+ //save good one
344
+ segpt = segpt_it.extract ();
345
+ outseg_it.add_before_then_move (segpt);
346
+ best_end = segpt->previous ();
347
+ }
348
+ }
349
+ ASSERT_HOST (best_end == NULL);
350
+ ASSERT_HOST (!outseg_it.empty ());
351
+ outseg_it.move_to_last ();
352
+ mean_sum = outseg_it.data ()->sum ();
353
+ mean_sum = mean_sum * mean_sum / best_region_index;
354
+ if (outseg_it.data ()->squares () - mean_sum < 0)
355
+ tprintf ("Impossible sqsum=%g, mean=%g, total=%d\n",
356
+ outseg_it.data ()->squares (), outseg_it.data ()->sum (),
357
+ best_region_index);
358
+ lattice.deep_clear (); //shift the lot
359
+ return outseg_it.data ()->squares () - mean_sum;
360
+ }
361
+
362
+
363
+ /**********************************************************************
364
+ * make_illegal_segment
365
+ *
366
+ * Make a fake set of chop points due to having no legal places.
367
+ **********************************************************************/
368
+
369
+ void make_illegal_segment( //find segmentation
370
+ FPSEGPT_LIST *prev_list, //previous segments
371
+ TBOX blob_box, //bounding box
372
+ BLOBNBOX_IT blob_it, //iterator
373
+ inT16 region_index, //number of segment
374
+ inT16 pitch, //pitch estimate
375
+ inT16 pitch_error, //tolerance
376
+ FPSEGPT_LIST *seg_list //output list
377
+ ) {
378
+ inT16 x; //current coord
379
+ inT16 min_x = 0; //in this region
380
+ inT16 max_x = 0;
381
+ inT16 offset; //dist to edge
382
+ FPSEGPT *segpt; //segment point
383
+ FPSEGPT *prevpt; //previous point
384
+ float best_cost; //best path
385
+ FPSEGPT_IT segpt_it = seg_list;//iterator
386
+ //previous points
387
+ FPSEGPT_IT prevpt_it = prev_list;
388
+
389
+ best_cost = MAX_FLOAT32;
390
+ for (prevpt_it.mark_cycle_pt (); !prevpt_it.cycled_list ();
391
+ prevpt_it.forward ()) {
392
+ prevpt = prevpt_it.data ();
393
+ if (prevpt->cost_function () < best_cost) {
394
+ //find least
395
+ best_cost = prevpt->cost_function ();
396
+ min_x = prevpt->position ();
397
+ max_x = min_x; //limits on coords
398
+ }
399
+ else if (prevpt->cost_function () == best_cost) {
400
+ max_x = prevpt->position ();
401
+ }
402
+ }
403
+ min_x += pitch - pitch_error;
404
+ max_x += pitch + pitch_error;
405
+ for (x = min_x; x <= max_x; x++) {
406
+ while (x > blob_box.right ()) {
407
+ blob_box = box_next (&blob_it);
408
+ }
409
+ offset = x - blob_box.left ();
410
+ if (blob_box.right () - x < offset)
411
+ offset = blob_box.right () - x;
412
+ segpt = new FPSEGPT (x, FALSE, offset,
413
+ region_index, pitch, pitch_error, prev_list);
414
+ if (segpt->previous () != NULL) {
415
+ ASSERT_HOST (offset >= 0);
416
+ fprintf (stderr, "made fake at %d\n", x);
417
+ //make one up
418
+ segpt_it.add_after_then_move (segpt);
419
+ segpt->faked = TRUE;
420
+ segpt->fake_count++;
421
+ }
422
+ else
423
+ delete segpt;
424
+ }
425
+ }
@@ -0,0 +1,135 @@
1
+ /**********************************************************************
2
+ * File: pitsync1.h (Formerly pitsync.h)
3
+ * Description: Code to find the optimum fixed pitch segmentation of some blobs.
4
+ * Author: Ray Smith
5
+ * Created: Thu Nov 19 11:48:05 GMT 1992
6
+ *
7
+ * (C) Copyright 1992, Hewlett-Packard Ltd.
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
+ *
18
+ **********************************************************************/
19
+
20
+ #ifndef PITSYNC1_H
21
+ #define PITSYNC1_H
22
+
23
+ #include "elst.h"
24
+ #include "clst.h"
25
+ #include "blobbox.h"
26
+ #include "varable.h"
27
+ #include "statistc.h"
28
+ #include "pithsync.h"
29
+ #include "notdll.h"
30
+ #include "notdll.h"
31
+
32
+ class FPSEGPT_LIST;
33
+
34
+ class FPSEGPT:public ELIST_LINK
35
+ {
36
+ public:
37
+ FPSEGPT() { //empty
38
+ }
39
+ FPSEGPT( //constructor
40
+ inT16 x); //position
41
+ FPSEGPT( //constructor
42
+ inT16 x, //position
43
+ BOOL8 faking, //faking this one
44
+ inT16 offset, //extra cost dist
45
+ inT16 region_index, //segment number
46
+ inT16 pitch, //proposed pitch
47
+ inT16 pitch_error, //allowed tolerance
48
+ FPSEGPT_LIST *prev_list); //previous segment
49
+ FPSEGPT(FPCUTPT *cutpt); //build from new type
50
+
51
+ inT32 position() { //acces func
52
+ return xpos;
53
+ }
54
+ double cost_function() {
55
+ return cost;
56
+ }
57
+ double squares() {
58
+ return sq_sum;
59
+ }
60
+ double sum() {
61
+ return mean_sum;
62
+ }
63
+ FPSEGPT *previous() {
64
+ return pred;
65
+ }
66
+ inT16 cheap_cuts() const { //no of cheap cuts
67
+ return mid_cuts;
68
+ }
69
+
70
+ //faked split point
71
+ NEWDELETE2 (FPSEGPT) BOOL8 faked;
72
+ BOOL8 terminal; //successful end
73
+ inT16 fake_count; //total fakes to here
74
+
75
+ private:
76
+ inT16 mid_cuts; //no of cheap cuts
77
+ inT32 xpos; //location
78
+ FPSEGPT *pred; //optimal previous
79
+ double mean_sum; //mean so far
80
+ double sq_sum; //summed distsances
81
+ double cost; //cost function
82
+ };
83
+
84
+ ELISTIZEH (FPSEGPT) CLISTIZEH (FPSEGPT_LIST)
85
+ extern
86
+ BOOL_VAR_H (pitsync_projection_fix, FALSE,
87
+ "Fix bug in projection profile");
88
+ extern
89
+ INT_VAR_H (pitsync_linear_version, 0, "Use new fast algorithm");
90
+ extern
91
+ double_VAR_H (pitsync_joined_edge, 0.75,
92
+ "Dist inside big blob for chopping");
93
+ extern
94
+ double_VAR_H (pitsync_offset_freecut_fraction, 0.25,
95
+ "Fraction of cut for free cuts");
96
+ extern
97
+ INT_VAR_H (pitsync_fake_depth, 1, "Max advance fake generation");
98
+ double check_pitch_sync( //find segmentation
99
+ BLOBNBOX_IT *blob_it, //blobs to do
100
+ inT16 blob_count, //no of blobs
101
+ inT16 pitch, //pitch estimate
102
+ inT16 pitch_error, //tolerance
103
+ STATS *projection, //vertical
104
+ FPSEGPT_LIST *seg_list //output list
105
+ );
106
+ void make_illegal_segment( //find segmentation
107
+ FPSEGPT_LIST *prev_list, //previous segments
108
+ TBOX blob_box, //bounding box
109
+ BLOBNBOX_IT blob_it, //iterator
110
+ inT16 region_index, //number of segment
111
+ inT16 pitch, //pitch estimate
112
+ inT16 pitch_error, //tolerance
113
+ FPSEGPT_LIST *seg_list //output list
114
+ );
115
+ inT16 vertical_torow_projection( //project whole row
116
+ TO_ROW *row, //row to do
117
+ STATS *projection //output
118
+ );
119
+ void vertical_blob_projection( //project outlines
120
+ PBLOB *blob, //blob to project
121
+ STATS *stats //output
122
+ );
123
+ void vertical_outline_projection( //project outlines
124
+ OUTLINE *outline, //outline to project
125
+ STATS *stats //output
126
+ );
127
+ void vertical_cblob_projection( //project outlines
128
+ C_BLOB *blob, //blob to project
129
+ STATS *stats //output
130
+ );
131
+ void vertical_coutline_projection( //project outlines
132
+ C_OUTLINE *outline, //outline to project
133
+ STATS *stats //output
134
+ );
135
+ #endif