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.
- data/.document +5 -0
- data/Gemfile +14 -0
- data/Gemfile.lock +23 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +46 -0
- data/VERSION +1 -0
- data/ext/tesseract_bin/extconf.rb +17 -0
- data/lib/tesseract_bin.rb +12 -0
- data/tesseract_bin.gemspec +660 -0
- data/test/helper.rb +18 -0
- data/test/test_tesseract_bin.rb +7 -0
- data/vendor/tesseract-2.04/AUTHORS +8 -0
- data/vendor/tesseract-2.04/COPYING +23 -0
- data/vendor/tesseract-2.04/ChangeLog +71 -0
- data/vendor/tesseract-2.04/INSTALL +229 -0
- data/vendor/tesseract-2.04/Makefile.am +20 -0
- data/vendor/tesseract-2.04/Makefile.in +641 -0
- data/vendor/tesseract-2.04/NEWS +1 -0
- data/vendor/tesseract-2.04/README +138 -0
- data/vendor/tesseract-2.04/ReleaseNotes +213 -0
- data/vendor/tesseract-2.04/StdAfx.cpp +8 -0
- data/vendor/tesseract-2.04/StdAfx.h +24 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.am +63 -0
- data/vendor/tesseract-2.04/ccmain/Makefile.in +735 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.cpp +1082 -0
- data/vendor/tesseract-2.04/ccmain/adaptions.h +109 -0
- data/vendor/tesseract-2.04/ccmain/applybox.cpp +891 -0
- data/vendor/tesseract-2.04/ccmain/applybox.h +73 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.cpp +1105 -0
- data/vendor/tesseract-2.04/ccmain/baseapi.h +256 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.cpp +76 -0
- data/vendor/tesseract-2.04/ccmain/blobcmp.h +29 -0
- data/vendor/tesseract-2.04/ccmain/callnet.cpp +93 -0
- data/vendor/tesseract-2.04/ccmain/callnet.h +32 -0
- data/vendor/tesseract-2.04/ccmain/charcut.cpp +704 -0
- data/vendor/tesseract-2.04/ccmain/charcut.h +120 -0
- data/vendor/tesseract-2.04/ccmain/charsample.cpp +699 -0
- data/vendor/tesseract-2.04/ccmain/control.cpp +1842 -0
- data/vendor/tesseract-2.04/ccmain/control.h +198 -0
- data/vendor/tesseract-2.04/ccmain/docqual.cpp +1481 -0
- data/vendor/tesseract-2.04/ccmain/docqual.h +155 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.cpp +82 -0
- data/vendor/tesseract-2.04/ccmain/expandblob.h +13 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.cpp +989 -0
- data/vendor/tesseract-2.04/ccmain/fixspace.h +72 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.cpp +825 -0
- data/vendor/tesseract-2.04/ccmain/fixxht.h +93 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.cpp +154 -0
- data/vendor/tesseract-2.04/ccmain/imgscale.h +32 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.cpp +391 -0
- data/vendor/tesseract-2.04/ccmain/matmatch.h +48 -0
- data/vendor/tesseract-2.04/ccmain/output.cpp +1273 -0
- data/vendor/tesseract-2.04/ccmain/output.h +116 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.cpp +666 -0
- data/vendor/tesseract-2.04/ccmain/pagewalk.h +155 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.cpp +107 -0
- data/vendor/tesseract-2.04/ccmain/paircmp.h +43 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.cpp +1867 -0
- data/vendor/tesseract-2.04/ccmain/pgedit.h +181 -0
- data/vendor/tesseract-2.04/ccmain/reject.cpp +1775 -0
- data/vendor/tesseract-2.04/ccmain/reject.h +181 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.cpp +366 -0
- data/vendor/tesseract-2.04/ccmain/scaleimg.h +35 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.cpp +375 -0
- data/vendor/tesseract-2.04/ccmain/tessbox.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.cpp +278 -0
- data/vendor/tesseract-2.04/ccmain/tessedit.h +49 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.cpp +110 -0
- data/vendor/tesseract-2.04/ccmain/tessembedded.h +38 -0
- data/vendor/tesseract-2.04/ccmain/tesseractfull.cc +37 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.cpp +387 -0
- data/vendor/tesseract-2.04/ccmain/tesseractmain.h +58 -0
- data/vendor/tesseract-2.04/ccmain/tessio.h +110 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.cpp +38 -0
- data/vendor/tesseract-2.04/ccmain/tessvars.h +48 -0
- data/vendor/tesseract-2.04/ccmain/tfacep.h +62 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.cpp +443 -0
- data/vendor/tesseract-2.04/ccmain/tfacepp.h +85 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.cpp +549 -0
- data/vendor/tesseract-2.04/ccmain/tstruct.h +108 -0
- data/vendor/tesseract-2.04/ccmain/varabled.cpp +346 -0
- data/vendor/tesseract-2.04/ccmain/varabled.h +125 -0
- data/vendor/tesseract-2.04/ccmain/werdit.cpp +193 -0
- data/vendor/tesseract-2.04/ccmain/werdit.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.am +25 -0
- data/vendor/tesseract-2.04/ccstruct/Makefile.in +650 -0
- data/vendor/tesseract-2.04/ccstruct/blckerr.h +29 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.cpp +778 -0
- data/vendor/tesseract-2.04/ccstruct/blobbox.h +381 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.cpp +247 -0
- data/vendor/tesseract-2.04/ccstruct/blobs.h +119 -0
- data/vendor/tesseract-2.04/ccstruct/blread.cpp +537 -0
- data/vendor/tesseract-2.04/ccstruct/blread.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/callcpp.cpp +252 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.cpp +650 -0
- data/vendor/tesseract-2.04/ccstruct/coutln.h +186 -0
- data/vendor/tesseract-2.04/ccstruct/crakedge.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.cpp +133 -0
- data/vendor/tesseract-2.04/ccstruct/genblob.h +52 -0
- data/vendor/tesseract-2.04/ccstruct/hpddef.h +39 -0
- data/vendor/tesseract-2.04/ccstruct/hpdsizes.h +8 -0
- data/vendor/tesseract-2.04/ccstruct/ipoints.h +479 -0
- data/vendor/tesseract-2.04/ccstruct/labls.cpp +188 -0
- data/vendor/tesseract-2.04/ccstruct/labls.h +38 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.cpp +249 -0
- data/vendor/tesseract-2.04/ccstruct/linlsq.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.cpp +453 -0
- data/vendor/tesseract-2.04/ccstruct/lmedsq.h +84 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.cpp +100 -0
- data/vendor/tesseract-2.04/ccstruct/mod128.h +85 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.cpp +176 -0
- data/vendor/tesseract-2.04/ccstruct/normalis.h +108 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.cpp +369 -0
- data/vendor/tesseract-2.04/ccstruct/ocrblock.h +235 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.cpp +216 -0
- data/vendor/tesseract-2.04/ccstruct/ocrrow.h +133 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.cpp +879 -0
- data/vendor/tesseract-2.04/ccstruct/pageblk.h +318 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.cpp +330 -0
- data/vendor/tesseract-2.04/ccstruct/pageres.h +313 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.cpp +361 -0
- data/vendor/tesseract-2.04/ccstruct/pdblock.h +181 -0
- data/vendor/tesseract-2.04/ccstruct/pdclass.h +54 -0
- data/vendor/tesseract-2.04/ccstruct/points.cpp +102 -0
- data/vendor/tesseract-2.04/ccstruct/points.h +299 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.cpp +588 -0
- data/vendor/tesseract-2.04/ccstruct/polyaprx.h +51 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.cpp +398 -0
- data/vendor/tesseract-2.04/ccstruct/polyblk.h +122 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.cpp +357 -0
- data/vendor/tesseract-2.04/ccstruct/polyblob.h +102 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.cpp +23 -0
- data/vendor/tesseract-2.04/ccstruct/polyvert.h +58 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.cpp +441 -0
- data/vendor/tesseract-2.04/ccstruct/poutline.h +125 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.cpp +147 -0
- data/vendor/tesseract-2.04/ccstruct/quadlsq.h +67 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.cpp +21 -0
- data/vendor/tesseract-2.04/ccstruct/quadratc.h +63 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.cpp +382 -0
- data/vendor/tesseract-2.04/ccstruct/quspline.h +113 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.cpp +372 -0
- data/vendor/tesseract-2.04/ccstruct/ratngs.h +198 -0
- data/vendor/tesseract-2.04/ccstruct/rect.cpp +229 -0
- data/vendor/tesseract-2.04/ccstruct/rect.h +320 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.cpp +545 -0
- data/vendor/tesseract-2.04/ccstruct/rejctmap.h +284 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.cpp +89 -0
- data/vendor/tesseract-2.04/ccstruct/rwpoly.h +45 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.cpp +905 -0
- data/vendor/tesseract-2.04/ccstruct/statistc.h +135 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.cpp +296 -0
- data/vendor/tesseract-2.04/ccstruct/stepblob.h +88 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.cpp +230 -0
- data/vendor/tesseract-2.04/ccstruct/txtregn.h +155 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.cpp +63 -0
- data/vendor/tesseract-2.04/ccstruct/vecfuncs.h +91 -0
- data/vendor/tesseract-2.04/ccstruct/werd.cpp +967 -0
- data/vendor/tesseract-2.04/ccstruct/werd.h +277 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.am +19 -0
- data/vendor/tesseract-2.04/ccutil/Makefile.in +626 -0
- data/vendor/tesseract-2.04/ccutil/basedir.cpp +118 -0
- data/vendor/tesseract-2.04/ccutil/basedir.h +32 -0
- data/vendor/tesseract-2.04/ccutil/bits16.cpp +30 -0
- data/vendor/tesseract-2.04/ccutil/bits16.h +61 -0
- data/vendor/tesseract-2.04/ccutil/boxread.cpp +105 -0
- data/vendor/tesseract-2.04/ccutil/boxread.h +44 -0
- data/vendor/tesseract-2.04/ccutil/clst.cpp +626 -0
- data/vendor/tesseract-2.04/ccutil/clst.h +1085 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.cpp +500 -0
- data/vendor/tesseract-2.04/ccutil/debugwin.h +103 -0
- data/vendor/tesseract-2.04/ccutil/elst.cpp +593 -0
- data/vendor/tesseract-2.04/ccutil/elst.h +1125 -0
- data/vendor/tesseract-2.04/ccutil/elst2.cpp +606 -0
- data/vendor/tesseract-2.04/ccutil/elst2.h +1121 -0
- data/vendor/tesseract-2.04/ccutil/errcode.cpp +104 -0
- data/vendor/tesseract-2.04/ccutil/errcode.h +104 -0
- data/vendor/tesseract-2.04/ccutil/fileerr.h +34 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.cpp +115 -0
- data/vendor/tesseract-2.04/ccutil/globaloc.h +40 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.cpp +57 -0
- data/vendor/tesseract-2.04/ccutil/hashfn.h +30 -0
- data/vendor/tesseract-2.04/ccutil/host.h +180 -0
- data/vendor/tesseract-2.04/ccutil/hosthplb.h +1 -0
- data/vendor/tesseract-2.04/ccutil/lsterr.h +43 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.cpp +126 -0
- data/vendor/tesseract-2.04/ccutil/mainblk.h +39 -0
- data/vendor/tesseract-2.04/ccutil/memblk.cpp +1106 -0
- data/vendor/tesseract-2.04/ccutil/memblk.h +189 -0
- data/vendor/tesseract-2.04/ccutil/memry.cpp +532 -0
- data/vendor/tesseract-2.04/ccutil/memry.h +192 -0
- data/vendor/tesseract-2.04/ccutil/memryerr.h +38 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.cpp +5 -0
- data/vendor/tesseract-2.04/ccutil/mfcpch.h +37 -0
- data/vendor/tesseract-2.04/ccutil/ndminx.h +31 -0
- data/vendor/tesseract-2.04/ccutil/notdll.h +28 -0
- data/vendor/tesseract-2.04/ccutil/nwmain.h +176 -0
- data/vendor/tesseract-2.04/ccutil/ocrclass.h +345 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.cpp +772 -0
- data/vendor/tesseract-2.04/ccutil/ocrshell.h +191 -0
- data/vendor/tesseract-2.04/ccutil/platform.h +18 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.cpp +543 -0
- data/vendor/tesseract-2.04/ccutil/scanutils.h +55 -0
- data/vendor/tesseract-2.04/ccutil/secname.h +9 -0
- data/vendor/tesseract-2.04/ccutil/serialis.cpp +117 -0
- data/vendor/tesseract-2.04/ccutil/serialis.h +93 -0
- data/vendor/tesseract-2.04/ccutil/stderr.h +26 -0
- data/vendor/tesseract-2.04/ccutil/strngs.cpp +495 -0
- data/vendor/tesseract-2.04/ccutil/strngs.h +138 -0
- data/vendor/tesseract-2.04/ccutil/tessclas.h +135 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.cpp +61 -0
- data/vendor/tesseract-2.04/ccutil/tessopt.h +30 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.cpp +122 -0
- data/vendor/tesseract-2.04/ccutil/tprintf.h +35 -0
- data/vendor/tesseract-2.04/ccutil/unichar.cpp +144 -0
- data/vendor/tesseract-2.04/ccutil/unichar.h +84 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.cpp +172 -0
- data/vendor/tesseract-2.04/ccutil/unicharmap.h +82 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.cpp +307 -0
- data/vendor/tesseract-2.04/ccutil/unicharset.h +267 -0
- data/vendor/tesseract-2.04/ccutil/varable.cpp +672 -0
- data/vendor/tesseract-2.04/ccutil/varable.h +419 -0
- data/vendor/tesseract-2.04/classify/Makefile.am +24 -0
- data/vendor/tesseract-2.04/classify/Makefile.in +647 -0
- data/vendor/tesseract-2.04/classify/adaptive.cpp +535 -0
- data/vendor/tesseract-2.04/classify/adaptive.h +199 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.cpp +2958 -0
- data/vendor/tesseract-2.04/classify/adaptmatch.h +86 -0
- data/vendor/tesseract-2.04/classify/baseline.cpp +58 -0
- data/vendor/tesseract-2.04/classify/baseline.h +91 -0
- data/vendor/tesseract-2.04/classify/blobclass.cpp +123 -0
- data/vendor/tesseract-2.04/classify/blobclass.h +49 -0
- data/vendor/tesseract-2.04/classify/chartoname.cpp +74 -0
- data/vendor/tesseract-2.04/classify/chartoname.h +21 -0
- data/vendor/tesseract-2.04/classify/cluster.cpp +2834 -0
- data/vendor/tesseract-2.04/classify/cluster.h +158 -0
- data/vendor/tesseract-2.04/classify/clusttool.cpp +507 -0
- data/vendor/tesseract-2.04/classify/clusttool.h +70 -0
- data/vendor/tesseract-2.04/classify/cutoffs.cpp +73 -0
- data/vendor/tesseract-2.04/classify/cutoffs.h +49 -0
- data/vendor/tesseract-2.04/classify/extern.h +32 -0
- data/vendor/tesseract-2.04/classify/extract.cpp +100 -0
- data/vendor/tesseract-2.04/classify/extract.h +36 -0
- data/vendor/tesseract-2.04/classify/featdefs.cpp +244 -0
- data/vendor/tesseract-2.04/classify/featdefs.h +71 -0
- data/vendor/tesseract-2.04/classify/flexfx.cpp +87 -0
- data/vendor/tesseract-2.04/classify/flexfx.h +34 -0
- data/vendor/tesseract-2.04/classify/float2int.cpp +126 -0
- data/vendor/tesseract-2.04/classify/float2int.h +65 -0
- data/vendor/tesseract-2.04/classify/fpoint.cpp +73 -0
- data/vendor/tesseract-2.04/classify/fpoint.h +63 -0
- data/vendor/tesseract-2.04/classify/fxdefs.cpp +74 -0
- data/vendor/tesseract-2.04/classify/fxdefs.h +93 -0
- data/vendor/tesseract-2.04/classify/fxid.h +69 -0
- data/vendor/tesseract-2.04/classify/hideedge.cpp +35 -0
- data/vendor/tesseract-2.04/classify/hideedge.h +76 -0
- data/vendor/tesseract-2.04/classify/intfx.cpp +608 -0
- data/vendor/tesseract-2.04/classify/intfx.h +63 -0
- data/vendor/tesseract-2.04/classify/intmatcher.cpp +1524 -0
- data/vendor/tesseract-2.04/classify/intmatcher.h +199 -0
- data/vendor/tesseract-2.04/classify/intproto.cpp +1823 -0
- data/vendor/tesseract-2.04/classify/intproto.h +320 -0
- data/vendor/tesseract-2.04/classify/kdtree.cpp +884 -0
- data/vendor/tesseract-2.04/classify/kdtree.h +118 -0
- data/vendor/tesseract-2.04/classify/mf.cpp +106 -0
- data/vendor/tesseract-2.04/classify/mf.h +43 -0
- data/vendor/tesseract-2.04/classify/mfdefs.cpp +58 -0
- data/vendor/tesseract-2.04/classify/mfdefs.h +60 -0
- data/vendor/tesseract-2.04/classify/mfoutline.cpp +1087 -0
- data/vendor/tesseract-2.04/classify/mfoutline.h +277 -0
- data/vendor/tesseract-2.04/classify/mfx.cpp +436 -0
- data/vendor/tesseract-2.04/classify/mfx.h +52 -0
- data/vendor/tesseract-2.04/classify/normfeat.cpp +132 -0
- data/vendor/tesseract-2.04/classify/normfeat.h +63 -0
- data/vendor/tesseract-2.04/classify/normmatch.cpp +305 -0
- data/vendor/tesseract-2.04/classify/normmatch.h +38 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.cpp +310 -0
- data/vendor/tesseract-2.04/classify/ocrfeatures.h +148 -0
- data/vendor/tesseract-2.04/classify/outfeat.cpp +262 -0
- data/vendor/tesseract-2.04/classify/outfeat.h +76 -0
- data/vendor/tesseract-2.04/classify/picofeat.cpp +297 -0
- data/vendor/tesseract-2.04/classify/picofeat.h +65 -0
- data/vendor/tesseract-2.04/classify/protos.cpp +472 -0
- data/vendor/tesseract-2.04/classify/protos.h +258 -0
- data/vendor/tesseract-2.04/classify/sigmenu.cpp +225 -0
- data/vendor/tesseract-2.04/classify/sigmenu.h +39 -0
- data/vendor/tesseract-2.04/classify/speckle.cpp +127 -0
- data/vendor/tesseract-2.04/classify/speckle.h +69 -0
- data/vendor/tesseract-2.04/classify/xform2d.cpp +120 -0
- data/vendor/tesseract-2.04/classify/xform2d.h +60 -0
- data/vendor/tesseract-2.04/config/config.guess +1466 -0
- data/vendor/tesseract-2.04/config/config.h.in +188 -0
- data/vendor/tesseract-2.04/config/config.sub +1579 -0
- data/vendor/tesseract-2.04/config/depcomp +530 -0
- data/vendor/tesseract-2.04/config/install-sh +269 -0
- data/vendor/tesseract-2.04/config/missing +198 -0
- data/vendor/tesseract-2.04/config/mkinstalldirs +40 -0
- data/vendor/tesseract-2.04/config/stamp-h.in +0 -0
- data/vendor/tesseract-2.04/configure +10424 -0
- data/vendor/tesseract-2.04/cutil/Makefile.am +14 -0
- data/vendor/tesseract-2.04/cutil/Makefile.in +612 -0
- data/vendor/tesseract-2.04/cutil/bitvec.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/bitvec.h +100 -0
- data/vendor/tesseract-2.04/cutil/callcpp.h +190 -0
- data/vendor/tesseract-2.04/cutil/const.h +108 -0
- data/vendor/tesseract-2.04/cutil/cutil.cpp +92 -0
- data/vendor/tesseract-2.04/cutil/cutil.h +159 -0
- data/vendor/tesseract-2.04/cutil/danerror.cpp +144 -0
- data/vendor/tesseract-2.04/cutil/danerror.h +41 -0
- data/vendor/tesseract-2.04/cutil/debug.cpp +97 -0
- data/vendor/tesseract-2.04/cutil/debug.h +348 -0
- data/vendor/tesseract-2.04/cutil/efio.cpp +62 -0
- data/vendor/tesseract-2.04/cutil/efio.h +32 -0
- data/vendor/tesseract-2.04/cutil/emalloc.cpp +91 -0
- data/vendor/tesseract-2.04/cutil/emalloc.h +44 -0
- data/vendor/tesseract-2.04/cutil/freelist.cpp +75 -0
- data/vendor/tesseract-2.04/cutil/freelist.h +45 -0
- data/vendor/tesseract-2.04/cutil/funcdefs.h +35 -0
- data/vendor/tesseract-2.04/cutil/general.h +33 -0
- data/vendor/tesseract-2.04/cutil/globals.cpp +69 -0
- data/vendor/tesseract-2.04/cutil/globals.h +70 -0
- data/vendor/tesseract-2.04/cutil/listio.cpp +68 -0
- data/vendor/tesseract-2.04/cutil/listio.h +43 -0
- data/vendor/tesseract-2.04/cutil/minmax.h +40 -0
- data/vendor/tesseract-2.04/cutil/oldheap.cpp +337 -0
- data/vendor/tesseract-2.04/cutil/oldheap.h +126 -0
- data/vendor/tesseract-2.04/cutil/oldlist.cpp +393 -0
- data/vendor/tesseract-2.04/cutil/oldlist.h +350 -0
- data/vendor/tesseract-2.04/cutil/structures.cpp +66 -0
- data/vendor/tesseract-2.04/cutil/structures.h +112 -0
- data/vendor/tesseract-2.04/cutil/tessarray.cpp +115 -0
- data/vendor/tesseract-2.04/cutil/tessarray.h +166 -0
- data/vendor/tesseract-2.04/cutil/tordvars.cpp +95 -0
- data/vendor/tesseract-2.04/cutil/tordvars.h +61 -0
- data/vendor/tesseract-2.04/cutil/variables.cpp +317 -0
- data/vendor/tesseract-2.04/cutil/variables.h +170 -0
- data/vendor/tesseract-2.04/dict/Makefile.am +13 -0
- data/vendor/tesseract-2.04/dict/Makefile.in +609 -0
- data/vendor/tesseract-2.04/dict/choicearr.h +96 -0
- data/vendor/tesseract-2.04/dict/choices.cpp +210 -0
- data/vendor/tesseract-2.04/dict/choices.h +241 -0
- data/vendor/tesseract-2.04/dict/context.cpp +270 -0
- data/vendor/tesseract-2.04/dict/context.h +82 -0
- data/vendor/tesseract-2.04/dict/dawg.cpp +363 -0
- data/vendor/tesseract-2.04/dict/dawg.h +394 -0
- data/vendor/tesseract-2.04/dict/hyphen.cpp +84 -0
- data/vendor/tesseract-2.04/dict/hyphen.h +125 -0
- data/vendor/tesseract-2.04/dict/lookdawg.cpp +228 -0
- data/vendor/tesseract-2.04/dict/lookdawg.h +76 -0
- data/vendor/tesseract-2.04/dict/makedawg.cpp +449 -0
- data/vendor/tesseract-2.04/dict/makedawg.h +83 -0
- data/vendor/tesseract-2.04/dict/matchdefs.h +145 -0
- data/vendor/tesseract-2.04/dict/permdawg.cpp +415 -0
- data/vendor/tesseract-2.04/dict/permdawg.h +98 -0
- data/vendor/tesseract-2.04/dict/permngram.cpp +358 -0
- data/vendor/tesseract-2.04/dict/permngram.h +33 -0
- data/vendor/tesseract-2.04/dict/permnum.cpp +522 -0
- data/vendor/tesseract-2.04/dict/permnum.h +83 -0
- data/vendor/tesseract-2.04/dict/permute.cpp +1704 -0
- data/vendor/tesseract-2.04/dict/permute.h +93 -0
- data/vendor/tesseract-2.04/dict/reduce.cpp +424 -0
- data/vendor/tesseract-2.04/dict/reduce.h +112 -0
- data/vendor/tesseract-2.04/dict/states.cpp +382 -0
- data/vendor/tesseract-2.04/dict/states.h +111 -0
- data/vendor/tesseract-2.04/dict/stopper.cpp +1458 -0
- data/vendor/tesseract-2.04/dict/stopper.h +103 -0
- data/vendor/tesseract-2.04/dict/trie.cpp +683 -0
- data/vendor/tesseract-2.04/dict/trie.h +190 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.am +2 -0
- data/vendor/tesseract-2.04/dlltest/Makefile.in +388 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.cpp +163 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.dsp +186 -0
- data/vendor/tesseract-2.04/dlltest/dlltest.vcproj +637 -0
- data/vendor/tesseract-2.04/eurotext.tif +0 -0
- data/vendor/tesseract-2.04/image/Makefile.am +10 -0
- data/vendor/tesseract-2.04/image/Makefile.in +596 -0
- data/vendor/tesseract-2.04/image/bitstrm.cpp +157 -0
- data/vendor/tesseract-2.04/image/bitstrm.h +73 -0
- data/vendor/tesseract-2.04/image/img.h +336 -0
- data/vendor/tesseract-2.04/image/imgbmp.cpp +223 -0
- data/vendor/tesseract-2.04/image/imgbmp.h +50 -0
- data/vendor/tesseract-2.04/image/imgerrs.h +35 -0
- data/vendor/tesseract-2.04/image/imgio.cpp +321 -0
- data/vendor/tesseract-2.04/image/imgio.h +22 -0
- data/vendor/tesseract-2.04/image/imgs.cpp +1764 -0
- data/vendor/tesseract-2.04/image/imgs.h +102 -0
- data/vendor/tesseract-2.04/image/imgtiff.cpp +723 -0
- data/vendor/tesseract-2.04/image/imgtiff.h +89 -0
- data/vendor/tesseract-2.04/image/imgunpk.h +1377 -0
- data/vendor/tesseract-2.04/image/svshowim.cpp +40 -0
- data/vendor/tesseract-2.04/image/svshowim.h +25 -0
- data/vendor/tesseract-2.04/java/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.am +1 -0
- data/vendor/tesseract-2.04/java/com/google/Makefile.in +470 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.am +4 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/Makefile.in +473 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ScrollView.java +421 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.am +5 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/Makefile.in +474 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEvent.java +87 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventHandler.java +296 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/events/SVEventType.java +31 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.am +7 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/Makefile.in +476 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVAbstractMenuItem.java +58 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVCheckboxMenuItem.java +60 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVEmptyMenuItem.java +48 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVImageHandler.java +228 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuBar.java +130 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVMenuItem.java +61 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVPopupMenu.java +142 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVSubMenuItem.java +41 -0
- data/vendor/tesseract-2.04/java/com/google/scrollview/ui/SVWindow.java +643 -0
- data/vendor/tesseract-2.04/java/makefile +55 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.am +13 -0
- data/vendor/tesseract-2.04/pageseg/Makefile.in +596 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.cpp +363 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg.h +90 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.cpp +82 -0
- data/vendor/tesseract-2.04/pageseg/leptonica_pageseg_interface.h +30 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.cpp +170 -0
- data/vendor/tesseract-2.04/pageseg/pageseg.h +29 -0
- data/vendor/tesseract-2.04/phototest.tif +0 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.am +31 -0
- data/vendor/tesseract-2.04/tessdata/Makefile.in +529 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/configs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/configs/api_config +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train +19 -0
- data/vendor/tesseract-2.04/tessdata/configs/box.train.stderr +18 -0
- data/vendor/tesseract-2.04/tessdata/configs/inter +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/kannada +4 -0
- data/vendor/tesseract-2.04/tessdata/configs/makebox +1 -0
- data/vendor/tesseract-2.04/tessdata/configs/unlv +3 -0
- data/vendor/tesseract-2.04/tessdata/confsets +3 -0
- data/vendor/tesseract-2.04/tessdata/eng.DangAmbigs +39 -0
- data/vendor/tesseract-2.04/tessdata/eng.freq-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.inttemp +0 -0
- data/vendor/tesseract-2.04/tessdata/eng.normproto +1247 -0
- data/vendor/tesseract-2.04/tessdata/eng.pffmtable +111 -0
- data/vendor/tesseract-2.04/tessdata/eng.unicharset +113 -0
- data/vendor/tesseract-2.04/tessdata/eng.user-words +921 -0
- data/vendor/tesseract-2.04/tessdata/eng.word-dawg +0 -0
- data/vendor/tesseract-2.04/tessdata/makedummies +8 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.am +3 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/Makefile.in +344 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/batch.nochop +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/matdemo +7 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/msdemo +13 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/nobatch +2 -0
- data/vendor/tesseract-2.04/tessdata/tessconfigs/segdemo +9 -0
- data/vendor/tesseract-2.04/tessdll.cpp +351 -0
- data/vendor/tesseract-2.04/tessdll.dsp +2050 -0
- data/vendor/tesseract-2.04/tessdll.h +143 -0
- data/vendor/tesseract-2.04/tessdll.vcproj +5495 -0
- data/vendor/tesseract-2.04/tesseract.dsp +2124 -0
- data/vendor/tesseract-2.04/tesseract.dsw +116 -0
- data/vendor/tesseract-2.04/tesseract.sln +59 -0
- data/vendor/tesseract-2.04/tesseract.spec +188 -0
- data/vendor/tesseract-2.04/tesseract.vcproj +5859 -0
- data/vendor/tesseract-2.04/testing/Makefile.am +2 -0
- data/vendor/tesseract-2.04/testing/Makefile.in +312 -0
- data/vendor/tesseract-2.04/testing/README +43 -0
- data/vendor/tesseract-2.04/testing/counttestset.sh +61 -0
- data/vendor/tesseract-2.04/testing/reorgdata.sh +44 -0
- data/vendor/tesseract-2.04/testing/reports/1995.bus.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.doe3.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.mag.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/1995.news.3B.sum +1 -0
- data/vendor/tesseract-2.04/testing/reports/2.03.summary +9 -0
- data/vendor/tesseract-2.04/testing/reports/2.04.summary +9 -0
- data/vendor/tesseract-2.04/testing/runalltests.sh +110 -0
- data/vendor/tesseract-2.04/testing/runtestset.sh +61 -0
- data/vendor/tesseract-2.04/textord/Makefile.am +20 -0
- data/vendor/tesseract-2.04/textord/Makefile.in +624 -0
- data/vendor/tesseract-2.04/textord/blkocc.cpp +809 -0
- data/vendor/tesseract-2.04/textord/blkocc.h +327 -0
- data/vendor/tesseract-2.04/textord/blobcmpl.h +31 -0
- data/vendor/tesseract-2.04/textord/drawedg.cpp +77 -0
- data/vendor/tesseract-2.04/textord/drawedg.h +34 -0
- data/vendor/tesseract-2.04/textord/drawtord.cpp +469 -0
- data/vendor/tesseract-2.04/textord/drawtord.h +107 -0
- data/vendor/tesseract-2.04/textord/edgblob.cpp +412 -0
- data/vendor/tesseract-2.04/textord/edgblob.h +100 -0
- data/vendor/tesseract-2.04/textord/edgloop.cpp +211 -0
- data/vendor/tesseract-2.04/textord/edgloop.h +66 -0
- data/vendor/tesseract-2.04/textord/fpchop.cpp +1641 -0
- data/vendor/tesseract-2.04/textord/fpchop.h +238 -0
- data/vendor/tesseract-2.04/textord/gap_map.cpp +166 -0
- data/vendor/tesseract-2.04/textord/gap_map.h +40 -0
- data/vendor/tesseract-2.04/textord/makerow.cpp +2628 -0
- data/vendor/tesseract-2.04/textord/makerow.h +295 -0
- data/vendor/tesseract-2.04/textord/oldbasel.cpp +1761 -0
- data/vendor/tesseract-2.04/textord/oldbasel.h +195 -0
- data/vendor/tesseract-2.04/textord/pithsync.cpp +696 -0
- data/vendor/tesseract-2.04/textord/pithsync.h +134 -0
- data/vendor/tesseract-2.04/textord/pitsync1.cpp +425 -0
- data/vendor/tesseract-2.04/textord/pitsync1.h +135 -0
- data/vendor/tesseract-2.04/textord/scanedg.cpp +452 -0
- data/vendor/tesseract-2.04/textord/scanedg.h +74 -0
- data/vendor/tesseract-2.04/textord/sortflts.cpp +80 -0
- data/vendor/tesseract-2.04/textord/sortflts.h +64 -0
- data/vendor/tesseract-2.04/textord/tessout.h +76 -0
- data/vendor/tesseract-2.04/textord/topitch.cpp +2019 -0
- data/vendor/tesseract-2.04/textord/topitch.h +195 -0
- data/vendor/tesseract-2.04/textord/tordmain.cpp +907 -0
- data/vendor/tesseract-2.04/textord/tordmain.h +132 -0
- data/vendor/tesseract-2.04/textord/tospace.cpp +1939 -0
- data/vendor/tesseract-2.04/textord/tospace.h +193 -0
- data/vendor/tesseract-2.04/textord/tovars.cpp +87 -0
- data/vendor/tesseract-2.04/textord/tovars.h +94 -0
- data/vendor/tesseract-2.04/textord/underlin.cpp +312 -0
- data/vendor/tesseract-2.04/textord/underlin.h +53 -0
- data/vendor/tesseract-2.04/textord/wordseg.cpp +620 -0
- data/vendor/tesseract-2.04/textord/wordseg.h +70 -0
- data/vendor/tesseract-2.04/training/Makefile.am +54 -0
- data/vendor/tesseract-2.04/training/Makefile.in +720 -0
- data/vendor/tesseract-2.04/training/cnTraining.cpp +855 -0
- data/vendor/tesseract-2.04/training/cntraining.dsp +243 -0
- data/vendor/tesseract-2.04/training/cntraining.vcproj +950 -0
- data/vendor/tesseract-2.04/training/mergenf.cpp +451 -0
- data/vendor/tesseract-2.04/training/mergenf.h +106 -0
- data/vendor/tesseract-2.04/training/mfTraining.cpp +1341 -0
- data/vendor/tesseract-2.04/training/mftraining.dsp +285 -0
- data/vendor/tesseract-2.04/training/mftraining.vcproj +1055 -0
- data/vendor/tesseract-2.04/training/name2char.cpp +166 -0
- data/vendor/tesseract-2.04/training/name2char.h +38 -0
- data/vendor/tesseract-2.04/training/training.cpp +190 -0
- data/vendor/tesseract-2.04/training/training.h +130 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.cpp +140 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.dsp +335 -0
- data/vendor/tesseract-2.04/training/unicharset_extractor.vcproj +769 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.cpp +69 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.dsp +319 -0
- data/vendor/tesseract-2.04/training/wordlist2dawg.vcproj +1113 -0
- data/vendor/tesseract-2.04/viewer/Makefile.am +9 -0
- data/vendor/tesseract-2.04/viewer/Makefile.in +591 -0
- data/vendor/tesseract-2.04/viewer/scrollview.cpp +825 -0
- data/vendor/tesseract-2.04/viewer/scrollview.h +414 -0
- data/vendor/tesseract-2.04/viewer/svmnode.cpp +140 -0
- data/vendor/tesseract-2.04/viewer/svmnode.h +94 -0
- data/vendor/tesseract-2.04/viewer/svpaint.cpp +220 -0
- data/vendor/tesseract-2.04/viewer/svutil.cpp +347 -0
- data/vendor/tesseract-2.04/viewer/svutil.h +138 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.am +23 -0
- data/vendor/tesseract-2.04/wordrec/Makefile.in +641 -0
- data/vendor/tesseract-2.04/wordrec/associate.cpp +62 -0
- data/vendor/tesseract-2.04/wordrec/associate.h +93 -0
- data/vendor/tesseract-2.04/wordrec/badwords.cpp +106 -0
- data/vendor/tesseract-2.04/wordrec/badwords.h +51 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.cpp +526 -0
- data/vendor/tesseract-2.04/wordrec/bestfirst.h +203 -0
- data/vendor/tesseract-2.04/wordrec/charsample.h +208 -0
- data/vendor/tesseract-2.04/wordrec/chop.cpp +458 -0
- data/vendor/tesseract-2.04/wordrec/chop.h +153 -0
- data/vendor/tesseract-2.04/wordrec/chopper.cpp +750 -0
- data/vendor/tesseract-2.04/wordrec/chopper.h +104 -0
- data/vendor/tesseract-2.04/wordrec/closed.cpp +136 -0
- data/vendor/tesseract-2.04/wordrec/closed.h +65 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/djmenus.h +33 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.cpp +92 -0
- data/vendor/tesseract-2.04/wordrec/drawfx.h +33 -0
- data/vendor/tesseract-2.04/wordrec/findseam.cpp +566 -0
- data/vendor/tesseract-2.04/wordrec/findseam.h +69 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.cpp +226 -0
- data/vendor/tesseract-2.04/wordrec/gradechop.h +91 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.cpp +194 -0
- data/vendor/tesseract-2.04/wordrec/heuristic.h +120 -0
- data/vendor/tesseract-2.04/wordrec/makechop.cpp +281 -0
- data/vendor/tesseract-2.04/wordrec/makechop.h +69 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.cpp +191 -0
- data/vendor/tesseract-2.04/wordrec/matchtab.h +45 -0
- data/vendor/tesseract-2.04/wordrec/matrix.cpp +118 -0
- data/vendor/tesseract-2.04/wordrec/matrix.h +104 -0
- data/vendor/tesseract-2.04/wordrec/measure.h +135 -0
- data/vendor/tesseract-2.04/wordrec/metrics.cpp +363 -0
- data/vendor/tesseract-2.04/wordrec/metrics.h +130 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.cpp +51 -0
- data/vendor/tesseract-2.04/wordrec/mfvars.h +27 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.cpp +110 -0
- data/vendor/tesseract-2.04/wordrec/msmenus.h +45 -0
- data/vendor/tesseract-2.04/wordrec/olutil.cpp +153 -0
- data/vendor/tesseract-2.04/wordrec/olutil.h +128 -0
- data/vendor/tesseract-2.04/wordrec/outlines.cpp +172 -0
- data/vendor/tesseract-2.04/wordrec/outlines.h +148 -0
- data/vendor/tesseract-2.04/wordrec/pieces.cpp +410 -0
- data/vendor/tesseract-2.04/wordrec/pieces.h +154 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.cpp +134 -0
- data/vendor/tesseract-2.04/wordrec/plotedges.h +71 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.cpp +116 -0
- data/vendor/tesseract-2.04/wordrec/plotseg.h +73 -0
- data/vendor/tesseract-2.04/wordrec/render.cpp +152 -0
- data/vendor/tesseract-2.04/wordrec/render.h +58 -0
- data/vendor/tesseract-2.04/wordrec/seam.cpp +482 -0
- data/vendor/tesseract-2.04/wordrec/seam.h +136 -0
- data/vendor/tesseract-2.04/wordrec/split.cpp +182 -0
- data/vendor/tesseract-2.04/wordrec/split.h +115 -0
- data/vendor/tesseract-2.04/wordrec/tally.cpp +68 -0
- data/vendor/tesseract-2.04/wordrec/tally.h +94 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.cpp +108 -0
- data/vendor/tesseract-2.04/wordrec/tessinit.h +46 -0
- data/vendor/tesseract-2.04/wordrec/tface.cpp +272 -0
- data/vendor/tesseract-2.04/wordrec/tface.h +35 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.cpp +284 -0
- data/vendor/tesseract-2.04/wordrec/wordclass.h +64 -0
- metadata +708 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: tfacep.h (Formerly tfacep.h)
|
|
3
|
+
* Description: Declarations of C functions and C owned data.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Mon Apr 27 12:51:28 BST 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 TFACEP_H
|
|
21
|
+
#define TFACEP_H
|
|
22
|
+
|
|
23
|
+
#include "hosthplb.h"
|
|
24
|
+
#include "tessclas.h"
|
|
25
|
+
#include "tessarray.h"
|
|
26
|
+
#include "tstruct.h"
|
|
27
|
+
#include "notdll.h"
|
|
28
|
+
#include "choices.h"
|
|
29
|
+
#include "oldlist.h"
|
|
30
|
+
#include "hyphen.h"
|
|
31
|
+
#include "tface.h"
|
|
32
|
+
#include "permute.h"
|
|
33
|
+
#include "adaptmatch.h"
|
|
34
|
+
#include "blobclass.h"
|
|
35
|
+
#include "stopper.h"
|
|
36
|
+
#include "associate.h"
|
|
37
|
+
#include "chop.h"
|
|
38
|
+
#include "expandblob.h"
|
|
39
|
+
#include "tordvars.h"
|
|
40
|
+
#include "metrics.h"
|
|
41
|
+
#include "tface.h"
|
|
42
|
+
#include "badwords.h"
|
|
43
|
+
#include "structures.h"
|
|
44
|
+
|
|
45
|
+
typedef void (*TESS_TESTER) (TBLOB *, BOOL8, char *, inT32, LIST);
|
|
46
|
+
typedef LIST (*TESS_MATCHER) (TBLOB *, TBLOB *, TBLOB *, void *, TEXTROW *);
|
|
47
|
+
|
|
48
|
+
extern TEXTROW normalized_row;
|
|
49
|
+
extern int display_ratings;
|
|
50
|
+
|
|
51
|
+
#if 0
|
|
52
|
+
#define strsave(s) \
|
|
53
|
+
((s) ? \
|
|
54
|
+
((char*) strcpy ((char*)alloc_string (strlen(s)+1), s)) : \
|
|
55
|
+
(NULL))
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
#define BOLD_ON "&dB(s3B"
|
|
59
|
+
#define BOLD_OFF "&d@(s0B"
|
|
60
|
+
#define UNDERLINE_ON "&dD"
|
|
61
|
+
#define UNDERLINE_OFF "&d@"
|
|
62
|
+
#endif
|
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: tfacepp.cpp (Formerly tface++.c)
|
|
3
|
+
* Description: C++ side of the C/C++ Tess/Editor interface.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Thu Apr 23 15:39:23 BST 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 "errcode.h"
|
|
25
|
+
#include "tessarray.h"
|
|
26
|
+
//#include "fxtop.h"
|
|
27
|
+
#include "werd.h"
|
|
28
|
+
#include "tfacep.h"
|
|
29
|
+
#include "tstruct.h"
|
|
30
|
+
#include "tfacepp.h"
|
|
31
|
+
#include "tessvars.h"
|
|
32
|
+
#include "globals.h"
|
|
33
|
+
#include "reject.h"
|
|
34
|
+
|
|
35
|
+
#define EXTERN
|
|
36
|
+
|
|
37
|
+
EXTERN BOOL_VAR (tessedit_override_permuter, TRUE, "According to dict_word");
|
|
38
|
+
|
|
39
|
+
static POLY_MATCHER tess_matcher;//current matcher
|
|
40
|
+
static POLY_TESTER tess_tester; //current tester
|
|
41
|
+
static POLY_TESTER tess_trainer; //current trainer
|
|
42
|
+
static DENORM *tess_denorm; //current denorm
|
|
43
|
+
static WERD *tess_word; //current word
|
|
44
|
+
|
|
45
|
+
#define MAX_UNDIVIDED_LENGTH 24
|
|
46
|
+
|
|
47
|
+
const int kReallyBadCertainty = -20;
|
|
48
|
+
|
|
49
|
+
/**********************************************************************
|
|
50
|
+
* recog_word
|
|
51
|
+
*
|
|
52
|
+
* Convert the word to tess form and pass it to the tess segmenter.
|
|
53
|
+
* Convert the output back to editor form.
|
|
54
|
+
**********************************************************************/
|
|
55
|
+
WERD_CHOICE *recog_word( //recog one owrd
|
|
56
|
+
WERD *word, //word to do
|
|
57
|
+
DENORM *denorm, //de-normaliser
|
|
58
|
+
POLY_MATCHER matcher, //matcher function
|
|
59
|
+
POLY_TESTER tester, //tester function
|
|
60
|
+
POLY_TESTER trainer, //trainer function
|
|
61
|
+
BOOL8 testing, //true if answer driven
|
|
62
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
63
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
64
|
+
WERD *&outword //bln word output
|
|
65
|
+
) {
|
|
66
|
+
WERD_CHOICE *word_choice;
|
|
67
|
+
uinT8 perm_type;
|
|
68
|
+
uinT8 real_dict_perm_type;
|
|
69
|
+
|
|
70
|
+
if (word->blob_list ()->empty ()) {
|
|
71
|
+
char empty_lengths[] = {0};
|
|
72
|
+
word_choice = new WERD_CHOICE ("", empty_lengths,
|
|
73
|
+
10.0f, -1.0f, TOP_CHOICE_PERM);
|
|
74
|
+
raw_choice = new WERD_CHOICE ("", empty_lengths,
|
|
75
|
+
10.0f, -1.0f, TOP_CHOICE_PERM);
|
|
76
|
+
outword = word->poly_copy (denorm->row ()->x_height ());
|
|
77
|
+
}
|
|
78
|
+
else
|
|
79
|
+
word_choice = recog_word_recursive (word, denorm, matcher, tester,
|
|
80
|
+
trainer, testing, raw_choice,
|
|
81
|
+
blob_choices, outword);
|
|
82
|
+
if ((word_choice->lengths ().length () !=
|
|
83
|
+
outword->blob_list ()->length ()) ||
|
|
84
|
+
(word_choice->lengths ().length () != blob_choices->length ())) {
|
|
85
|
+
tprintf
|
|
86
|
+
("recog_word ASSERT FAIL String:\"%s\"; Strlen=%d; #Blobs=%d; #Choices=%d\n",
|
|
87
|
+
word_choice->string ().string (), word_choice->lengths ().length (),
|
|
88
|
+
outword->blob_list ()->length (), blob_choices->length ());
|
|
89
|
+
}
|
|
90
|
+
ASSERT_HOST (word_choice->lengths ().length () ==
|
|
91
|
+
outword->blob_list ()->length ());
|
|
92
|
+
ASSERT_HOST (word_choice->lengths ().length () == blob_choices->length ());
|
|
93
|
+
|
|
94
|
+
/* Copy any reject blobs into the outword */
|
|
95
|
+
outword->rej_blob_list()->deep_copy(word->rej_blob_list(), &PBLOB::deep_copy);
|
|
96
|
+
|
|
97
|
+
if (tessedit_override_permuter) {
|
|
98
|
+
/* Override the permuter type if a straight dictionary check disagrees. */
|
|
99
|
+
perm_type = word_choice->permuter ();
|
|
100
|
+
if ((perm_type != SYSTEM_DAWG_PERM) &&
|
|
101
|
+
(perm_type != FREQ_DAWG_PERM) && (perm_type != USER_DAWG_PERM)) {
|
|
102
|
+
real_dict_perm_type = dict_word (word_choice->string ().string ());
|
|
103
|
+
if (((real_dict_perm_type == SYSTEM_DAWG_PERM) ||
|
|
104
|
+
(real_dict_perm_type == FREQ_DAWG_PERM) ||
|
|
105
|
+
(real_dict_perm_type == USER_DAWG_PERM)) &&
|
|
106
|
+
(alpha_count (word_choice->string ().string (),
|
|
107
|
+
word_choice->lengths ().string ()) > 0))
|
|
108
|
+
word_choice->set_permuter (real_dict_perm_type);
|
|
109
|
+
//Use dict perm
|
|
110
|
+
}
|
|
111
|
+
if (tessedit_rejection_debug && perm_type != word_choice->permuter ()) {
|
|
112
|
+
tprintf ("Permuter Type Flipped from %d to %d\n",
|
|
113
|
+
perm_type, word_choice->permuter ());
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
assert ((word_choice == NULL) == (raw_choice == NULL));
|
|
117
|
+
return word_choice;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
/**********************************************************************
|
|
122
|
+
* recog_word_recursive
|
|
123
|
+
*
|
|
124
|
+
* Convert the word to tess form and pass it to the tess segmenter.
|
|
125
|
+
* Convert the output back to editor form.
|
|
126
|
+
**********************************************************************/
|
|
127
|
+
|
|
128
|
+
WERD_CHOICE *recog_word_recursive( //recog one owrd
|
|
129
|
+
WERD *word, //word to do
|
|
130
|
+
DENORM *denorm, //de-normaliser
|
|
131
|
+
POLY_MATCHER matcher, //matcher function
|
|
132
|
+
POLY_TESTER tester, //tester function
|
|
133
|
+
POLY_TESTER trainer, //trainer function
|
|
134
|
+
BOOL8 testing, //true if answer driven
|
|
135
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
136
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
137
|
+
WERD *&outword //bln word output
|
|
138
|
+
) {
|
|
139
|
+
inT32 initial_blob_choice_len;
|
|
140
|
+
inT32 word_length; //no of blobs
|
|
141
|
+
STRING word_string; //converted from tess
|
|
142
|
+
STRING word_string_lengths;
|
|
143
|
+
ARRAY tess_ratings; //tess results
|
|
144
|
+
A_CHOICE tess_choice; //best word
|
|
145
|
+
A_CHOICE tess_raw; //raw result
|
|
146
|
+
TWERD *tessword; //tess format
|
|
147
|
+
BLOB_CHOICE_LIST *choice_list; //fake list
|
|
148
|
+
//iterator
|
|
149
|
+
BLOB_CHOICE_LIST_C_IT choice_it;
|
|
150
|
+
|
|
151
|
+
tess_matcher = matcher; //install matcher
|
|
152
|
+
tess_tester = testing ? tester : NULL;
|
|
153
|
+
tess_trainer = testing ? trainer : NULL;
|
|
154
|
+
tess_denorm = denorm;
|
|
155
|
+
tess_word = word;
|
|
156
|
+
// blob_matchers[1]=call_matcher;
|
|
157
|
+
if (word->blob_list ()->length () > MAX_UNDIVIDED_LENGTH) {
|
|
158
|
+
return split_and_recog_word (word, denorm, matcher, tester, trainer,
|
|
159
|
+
testing, raw_choice, blob_choices,
|
|
160
|
+
outword);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
if (word->flag (W_EOL))
|
|
164
|
+
last_word_on_line = TRUE;
|
|
165
|
+
else
|
|
166
|
+
last_word_on_line = FALSE;
|
|
167
|
+
initial_blob_choice_len = blob_choices->length ();
|
|
168
|
+
tessword = make_tess_word (word, NULL);
|
|
169
|
+
tess_ratings = cc_recog (tessword, &tess_choice, &tess_raw,
|
|
170
|
+
testing
|
|
171
|
+
&& tester != NULL /* ? call_tester : NULL */ ,
|
|
172
|
+
testing
|
|
173
|
+
&& trainer !=
|
|
174
|
+
NULL /* ? call_train_tester : NULL */ );
|
|
175
|
+
//convert word
|
|
176
|
+
outword = make_ed_word (tessword, word);
|
|
177
|
+
if (outword == NULL) {
|
|
178
|
+
outword = word->poly_copy (denorm->row ()->x_height ());
|
|
179
|
+
}
|
|
180
|
+
delete_word(tessword); //get rid of it
|
|
181
|
+
//no of blobs
|
|
182
|
+
word_length = outword->blob_list ()->length ();
|
|
183
|
+
//convert all ratings
|
|
184
|
+
convert_choice_lists(tess_ratings, blob_choices);
|
|
185
|
+
//copy string
|
|
186
|
+
word_string = tess_raw.string;
|
|
187
|
+
word_string_lengths = tess_raw.lengths;
|
|
188
|
+
while (word_string_lengths.length () < word_length) {
|
|
189
|
+
word_string += " "; //pad with blanks
|
|
190
|
+
word_string_lengths += 1;
|
|
191
|
+
}
|
|
192
|
+
raw_choice = new WERD_CHOICE (word_string.string (),
|
|
193
|
+
word_string_lengths.string (),
|
|
194
|
+
tess_raw.rating, tess_raw.certainty,
|
|
195
|
+
tess_raw.permuter);
|
|
196
|
+
word_string = tess_choice.string;
|
|
197
|
+
word_string_lengths = tess_choice.lengths;
|
|
198
|
+
if (word_string_lengths.length () > word_length) {
|
|
199
|
+
tprintf ("recog_word: Discarded long string \"%s\""
|
|
200
|
+
" (%d characters vs %d blobs)\n",
|
|
201
|
+
word_string.string (), word_string_lengths.length(), word_length);
|
|
202
|
+
word_string = NULL; //should never happen
|
|
203
|
+
word_string_lengths = NULL;
|
|
204
|
+
tprintf("Word is at (%g,%g)\n",
|
|
205
|
+
denorm->origin(),
|
|
206
|
+
denorm->y(word->bounding_box().bottom(), 0.0));
|
|
207
|
+
}
|
|
208
|
+
if (blob_choices->length () - initial_blob_choice_len != word_length) {
|
|
209
|
+
word_string = NULL; //force rejection
|
|
210
|
+
word_string_lengths = NULL;
|
|
211
|
+
tprintf ("recog_word: Choices list len:%d; blob lists len:%d\n",
|
|
212
|
+
blob_choices->length (), word_length);
|
|
213
|
+
//list of lists
|
|
214
|
+
choice_it.set_to_list (blob_choices);
|
|
215
|
+
while (blob_choices->length () - initial_blob_choice_len <
|
|
216
|
+
word_length) {
|
|
217
|
+
//get fake one
|
|
218
|
+
choice_list = new BLOB_CHOICE_LIST;
|
|
219
|
+
//add to list
|
|
220
|
+
choice_it.add_to_end (choice_list);
|
|
221
|
+
tprintf ("recog_word: Added dummy choice list\n");
|
|
222
|
+
}
|
|
223
|
+
while (blob_choices->length () - initial_blob_choice_len >
|
|
224
|
+
word_length) {
|
|
225
|
+
choice_it.move_to_last ();
|
|
226
|
+
//should never happen
|
|
227
|
+
delete choice_it.extract ();
|
|
228
|
+
tprintf ("recog_word: Deleted choice list\n");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
while (word_string_lengths.length () < word_length) {
|
|
232
|
+
word_string += " "; //pad with blanks
|
|
233
|
+
word_string_lengths += 1;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
assert (raw_choice != NULL);
|
|
237
|
+
if (tess_choice.string) {
|
|
238
|
+
strfree(tess_choice.string);
|
|
239
|
+
strfree(tess_choice.lengths);
|
|
240
|
+
}
|
|
241
|
+
if (tess_raw.string) {
|
|
242
|
+
strfree(tess_raw.string);
|
|
243
|
+
strfree(tess_raw.lengths);
|
|
244
|
+
}
|
|
245
|
+
return new WERD_CHOICE (word_string.string (),
|
|
246
|
+
word_string_lengths.string (),
|
|
247
|
+
tess_choice.rating, tess_choice.certainty,
|
|
248
|
+
tess_choice.permuter);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
/**********************************************************************
|
|
254
|
+
* split_and_recog_word
|
|
255
|
+
*
|
|
256
|
+
* Convert the word to tess form and pass it to the tess segmenter.
|
|
257
|
+
* Convert the output back to editor form.
|
|
258
|
+
**********************************************************************/
|
|
259
|
+
|
|
260
|
+
WERD_CHOICE *split_and_recog_word( //recog one owrd
|
|
261
|
+
WERD *word, //word to do
|
|
262
|
+
DENORM *denorm, //de-normaliser
|
|
263
|
+
POLY_MATCHER matcher, //matcher function
|
|
264
|
+
POLY_TESTER tester, //tester function
|
|
265
|
+
POLY_TESTER trainer, //trainer function
|
|
266
|
+
BOOL8 testing, //true if answer driven
|
|
267
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
268
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
269
|
+
WERD *&outword //bln word output
|
|
270
|
+
) {
|
|
271
|
+
// inT32 outword1_len;
|
|
272
|
+
// inT32 outword2_len;
|
|
273
|
+
WERD *first_word; //poly copy of word
|
|
274
|
+
WERD *second_word; //fabricated word
|
|
275
|
+
WERD *outword2; //2nd output word
|
|
276
|
+
PBLOB *blob;
|
|
277
|
+
WERD_CHOICE *result; //resturn value
|
|
278
|
+
WERD_CHOICE *result2; //output of 2nd word
|
|
279
|
+
WERD_CHOICE *raw_choice2; //raw version of 2nd
|
|
280
|
+
float gap; //blob gap
|
|
281
|
+
float bestgap; //biggest gap
|
|
282
|
+
PBLOB_LIST new_blobs; //list of gathered blobs
|
|
283
|
+
PBLOB_IT blob_it;
|
|
284
|
+
//iterator
|
|
285
|
+
PBLOB_IT new_blob_it = &new_blobs;
|
|
286
|
+
|
|
287
|
+
first_word = word->poly_copy (denorm->row ()->x_height ());
|
|
288
|
+
blob_it.set_to_list (first_word->blob_list ());
|
|
289
|
+
bestgap = -MAX_INT32;
|
|
290
|
+
while (!blob_it.at_last ()) {
|
|
291
|
+
blob = blob_it.data ();
|
|
292
|
+
//gap to next
|
|
293
|
+
gap = blob_it.data_relative (1)->bounding_box ().left () - blob->bounding_box ().right ();
|
|
294
|
+
blob_it.forward ();
|
|
295
|
+
if (gap > bestgap) {
|
|
296
|
+
bestgap = gap; //find biggest
|
|
297
|
+
new_blob_it = blob_it; //save position
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//take 2nd half
|
|
301
|
+
new_blobs.assign_to_sublist (&new_blob_it, &blob_it);
|
|
302
|
+
//make it a word
|
|
303
|
+
second_word = new WERD (&new_blobs, 1, NULL);
|
|
304
|
+
ASSERT_HOST (word->blob_list ()->length () ==
|
|
305
|
+
first_word->blob_list ()->length () +
|
|
306
|
+
second_word->blob_list ()->length ());
|
|
307
|
+
|
|
308
|
+
result = recog_word_recursive (first_word, denorm, matcher,
|
|
309
|
+
tester, trainer, testing, raw_choice,
|
|
310
|
+
blob_choices, outword);
|
|
311
|
+
delete first_word; //done that one
|
|
312
|
+
result2 = recog_word_recursive (second_word, denorm, matcher,
|
|
313
|
+
tester, trainer, testing, raw_choice2,
|
|
314
|
+
blob_choices, outword2);
|
|
315
|
+
delete second_word; //done that too
|
|
316
|
+
*result += *result2; //combine ratings
|
|
317
|
+
delete result2;
|
|
318
|
+
*raw_choice += *raw_choice2;
|
|
319
|
+
delete raw_choice2; //finished with it
|
|
320
|
+
// outword1_len= outword->blob_list()->length();
|
|
321
|
+
// outword2_len= outword2->blob_list()->length();
|
|
322
|
+
outword->join_on (outword2); //join words
|
|
323
|
+
delete outword2;
|
|
324
|
+
// if ( outword->blob_list()->length() != outword1_len + outword2_len )
|
|
325
|
+
// tprintf( "Split&Recog: part1len=%d; part2len=%d; combinedlen=%d\n",
|
|
326
|
+
// outword1_len, outword2_len, outword->blob_list()->length() );
|
|
327
|
+
// ASSERT_HOST( outword->blob_list()->length() == outword1_len + outword2_len );
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
/**********************************************************************
|
|
333
|
+
* call_matcher
|
|
334
|
+
*
|
|
335
|
+
* Called from Tess with a blob in tess form.
|
|
336
|
+
* Convert the blob to editor form.
|
|
337
|
+
* Call the matcher setup by the segmenter in tess_matcher.
|
|
338
|
+
* Convert the output choices back to tess form.
|
|
339
|
+
**********************************************************************/
|
|
340
|
+
|
|
341
|
+
LIST call_matcher( //call a matcher
|
|
342
|
+
TBLOB *ptblob, //previous
|
|
343
|
+
TBLOB *tessblob, //blob to match
|
|
344
|
+
TBLOB *ntblob, //next
|
|
345
|
+
void *, //unused parameter
|
|
346
|
+
TEXTROW * //always null anyway
|
|
347
|
+
) {
|
|
348
|
+
PBLOB *pblob; //converted blob
|
|
349
|
+
PBLOB *blob; //converted blob
|
|
350
|
+
PBLOB *nblob; //converted blob
|
|
351
|
+
LIST result; //tess output
|
|
352
|
+
BLOB_CHOICE *choice; //current choice
|
|
353
|
+
BLOB_CHOICE_LIST ratings; //matcher result
|
|
354
|
+
BLOB_CHOICE_IT it; //iterator
|
|
355
|
+
char choice_lengths[2] = {0, 0};
|
|
356
|
+
|
|
357
|
+
blob = make_ed_blob (tessblob);//convert blob
|
|
358
|
+
if (blob == NULL) {
|
|
359
|
+
// Since it is actually possible to get a NULL blob here, due to invalid
|
|
360
|
+
// segmentations, fake a really bad classification.
|
|
361
|
+
choice_lengths[0] = strlen(unicharset.id_to_unichar(1));
|
|
362
|
+
return append_choice(NULL, unicharset.id_to_unichar(1), choice_lengths,
|
|
363
|
+
static_cast<float>(MAX_NUM_INT_FEATURES),
|
|
364
|
+
static_cast<float>(kReallyBadCertainty), 0);
|
|
365
|
+
}
|
|
366
|
+
pblob = ptblob != NULL ? make_ed_blob (ptblob) : NULL;
|
|
367
|
+
nblob = ntblob != NULL ? make_ed_blob (ntblob) : NULL;
|
|
368
|
+
(*tess_matcher) (pblob, blob, nblob, tess_word, tess_denorm, ratings);
|
|
369
|
+
//match it
|
|
370
|
+
delete blob; //don't need that now
|
|
371
|
+
if (pblob != NULL)
|
|
372
|
+
delete pblob;
|
|
373
|
+
if (nblob != NULL)
|
|
374
|
+
delete nblob;
|
|
375
|
+
it.set_to_list (&ratings); //get list
|
|
376
|
+
result = NULL;
|
|
377
|
+
for (it.mark_cycle_pt (); !it.cycled_list (); it.forward ()) {
|
|
378
|
+
choice = it.data ();
|
|
379
|
+
choice_lengths[0] = strlen(choice->unichar ());
|
|
380
|
+
result = append_choice (result, choice->unichar (),
|
|
381
|
+
choice_lengths, choice->rating (),
|
|
382
|
+
choice->certainty (), choice->config ());
|
|
383
|
+
}
|
|
384
|
+
return result; //converted list
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
/**********************************************************************
|
|
389
|
+
* call_tester
|
|
390
|
+
*
|
|
391
|
+
* Called from Tess with a blob in tess form.
|
|
392
|
+
* Convert the blob to editor form.
|
|
393
|
+
* Call the tester setup by the segmenter in tess_tester.
|
|
394
|
+
**********************************************************************/
|
|
395
|
+
|
|
396
|
+
void call_tester( //call a tester
|
|
397
|
+
TBLOB *tessblob, //blob to test
|
|
398
|
+
BOOL8 correct_blob, //true if good
|
|
399
|
+
char *text, //source text
|
|
400
|
+
inT32 count, //chars in text
|
|
401
|
+
LIST result //output of matcher
|
|
402
|
+
) {
|
|
403
|
+
PBLOB *blob; //converted blob
|
|
404
|
+
BLOB_CHOICE_LIST ratings; //matcher result
|
|
405
|
+
|
|
406
|
+
blob = make_ed_blob (tessblob);//convert blob
|
|
407
|
+
if (blob == NULL)
|
|
408
|
+
return;
|
|
409
|
+
//make it right type
|
|
410
|
+
convert_choice_list(result, ratings);
|
|
411
|
+
if (tess_tester != NULL)
|
|
412
|
+
(*tess_tester) (blob, tess_denorm, correct_blob, text, count, &ratings);
|
|
413
|
+
delete blob; //don't need that now
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
/**********************************************************************
|
|
418
|
+
* call_train_tester
|
|
419
|
+
*
|
|
420
|
+
* Called from Tess with a blob in tess form.
|
|
421
|
+
* Convert the blob to editor form.
|
|
422
|
+
* Call the trainer setup by the segmenter in tess_trainer.
|
|
423
|
+
**********************************************************************/
|
|
424
|
+
|
|
425
|
+
void call_train_tester( //call a tester
|
|
426
|
+
TBLOB *tessblob, //blob to test
|
|
427
|
+
BOOL8 correct_blob, //true if good
|
|
428
|
+
char *text, //source text
|
|
429
|
+
inT32 count, //chars in text
|
|
430
|
+
LIST result //output of matcher
|
|
431
|
+
) {
|
|
432
|
+
PBLOB *blob; //converted blob
|
|
433
|
+
BLOB_CHOICE_LIST ratings; //matcher result
|
|
434
|
+
|
|
435
|
+
blob = make_ed_blob (tessblob);//convert blob
|
|
436
|
+
if (blob == NULL)
|
|
437
|
+
return;
|
|
438
|
+
//make it right type
|
|
439
|
+
convert_choice_list(result, ratings);
|
|
440
|
+
if (tess_trainer != NULL)
|
|
441
|
+
(*tess_trainer) (blob, tess_denorm, correct_blob, text, count, &ratings);
|
|
442
|
+
delete blob; //don't need that now
|
|
443
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**********************************************************************
|
|
2
|
+
* File: tfacepp.h (Formerly tface++.h)
|
|
3
|
+
* Description: C++ side of the C/C++ Tess/Editor interface.
|
|
4
|
+
* Author: Ray Smith
|
|
5
|
+
* Created: Thu Apr 23 15:39:23 BST 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 TFACEPP_H
|
|
21
|
+
#define TFACEPP_H
|
|
22
|
+
|
|
23
|
+
#include "varable.h"
|
|
24
|
+
#include "tstruct.h"
|
|
25
|
+
#include "ratngs.h"
|
|
26
|
+
#include "tessclas.h"
|
|
27
|
+
#include "notdll.h"
|
|
28
|
+
|
|
29
|
+
extern BOOL_VAR_H (tessedit_override_permuter, TRUE,
|
|
30
|
+
"According to dict_word");
|
|
31
|
+
WERD_CHOICE *recog_word( //recog one owrd
|
|
32
|
+
WERD *word, //word to do
|
|
33
|
+
DENORM *denorm, //de-normaliser
|
|
34
|
+
POLY_MATCHER matcher, //matcher function
|
|
35
|
+
POLY_TESTER tester, //tester function
|
|
36
|
+
POLY_TESTER trainer, //trainer function
|
|
37
|
+
BOOL8 testing, //true if answer driven
|
|
38
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
39
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
40
|
+
WERD *&outword //bln word output
|
|
41
|
+
);
|
|
42
|
+
//recog one owrd
|
|
43
|
+
WERD_CHOICE *recog_word_recursive(WERD *word, //word to do
|
|
44
|
+
DENORM *denorm, //de-normaliser
|
|
45
|
+
POLY_MATCHER matcher, //matcher function
|
|
46
|
+
POLY_TESTER tester, //tester function
|
|
47
|
+
POLY_TESTER trainer, //trainer function
|
|
48
|
+
BOOL8 testing, //true if answer driven
|
|
49
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
50
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
51
|
+
WERD *&outword //bln word output
|
|
52
|
+
);
|
|
53
|
+
//recog one owrd
|
|
54
|
+
WERD_CHOICE *split_and_recog_word(WERD *word, //word to do
|
|
55
|
+
DENORM *denorm, //de-normaliser
|
|
56
|
+
POLY_MATCHER matcher, //matcher function
|
|
57
|
+
POLY_TESTER tester, //tester function
|
|
58
|
+
POLY_TESTER trainer, //trainer function
|
|
59
|
+
BOOL8 testing, //true if answer driven
|
|
60
|
+
WERD_CHOICE *&raw_choice, //raw result //list of blob lists
|
|
61
|
+
BLOB_CHOICE_LIST_CLIST *blob_choices,
|
|
62
|
+
WERD *&outword //bln word output
|
|
63
|
+
);
|
|
64
|
+
LIST call_matcher( //call a matcher
|
|
65
|
+
TBLOB *ptblob, //previous
|
|
66
|
+
TBLOB *tessblob, //blob to match
|
|
67
|
+
TBLOB *ntblob, //next
|
|
68
|
+
void *, //unused parameter
|
|
69
|
+
TEXTROW * //always null anyway
|
|
70
|
+
);
|
|
71
|
+
void call_tester( //call a tester
|
|
72
|
+
TBLOB *tessblob, //blob to test
|
|
73
|
+
BOOL8 correct_blob, //true if good
|
|
74
|
+
char *text, //source text
|
|
75
|
+
inT32 count, //chars in text
|
|
76
|
+
LIST result //output of matcher
|
|
77
|
+
);
|
|
78
|
+
void call_train_tester( //call a tester
|
|
79
|
+
TBLOB *tessblob, //blob to test
|
|
80
|
+
BOOL8 correct_blob, //true if good
|
|
81
|
+
char *text, //source text
|
|
82
|
+
inT32 count, //chars in text
|
|
83
|
+
LIST result //output of matcher
|
|
84
|
+
);
|
|
85
|
+
#endif
|