Tesseract + CUDA code java wrapper

332 views
Skip to first unread message

dhruv shah

unread,
Mar 28, 2015, 1:31:26 PM3/28/15
to tesser...@googlegroups.com
Hello,

I'm using a java wrapper to access tesseract libraries.
Here is my code (default available on tess4j site):

import net.sourceforge.tess4j.*;

public class TesseractExample1 {

    public static void main(String[] args) {
        File imageFile = new File("eurotext.tiff");
        Tesseract instance = null;
        instance = Tesseract.getInstance(); // JNA Interface Mapping
       
        try {
            String result = instance.doOCR(imageFile);
            System.out.println(result);
        } catch (TesseractException e) {
            //System.err.println(e.getMessage());
            e.printStackTrace();
        }
    }
}


I'm using 32 bit jdk 1.8.0_40
I have a 64 bit linux 14.04
I'm getting the following error.

Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'TessBaseAPICreate': /usr/local/lib/libtesseract.so: undefined symbol: TessBaseAPICreate
    at com.sun.jna.Function.<init>(Function.java:208)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:536)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:513)
    at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:499)
    at com.sun.jna.Library$Handler.invoke(Library.java:199)
    at com.sun.proxy.$Proxy0.TessBaseAPICreate(Unknown Source)
    at net.sourceforge.tess4j.Tesseract.init(Tesseract.java:344)
    at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:256)
    at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:188)
    at net.sourceforge.tess4j.Tesseract.doOCR(Tesseract.java:172)
    at com.meditab.central.TesseractExample1.main(TesseractExample1.java:22)




command used to make the Tesseract+CUDA
sudo ./configure --build=i386-linux-gnu LDFLAGS="-m32 -L/usr/local/cuda-6.5/lib -L/usr/lib/i386-linux-gnu" LIBS="-lcudart -lcuda" CPPFLAGS="-m32 -I/usr/local/cuda-6.5/include" CXXFLAGS=-m32 CFLAGS=-m32

command used to make LEPTONICA
sudo ./configure CPPFLAGS=-m32 LDFLAGS="-m32 -L/usr/lib/i386-linux-gnu"  CXXFLAGS=-m32 CFLAGS=-m32


Can someone please give me an idea as to what might be going wrong?
I'll provide all the other necessary details.



Quan Nguyen

unread,
Mar 28, 2015, 7:41:54 PM3/28/15
to tesser...@googlegroups.com
What version of Tesseract did you build? Did you install it afterwards, together with tessdata?

dhruv shah

unread,
Mar 29, 2015, 1:23:43 AM3/29/15
to tesser...@googlegroups.com
The Tesseract version is 3.01 and yes I installed it afterwards. When I'm trying to use the tesseract from command line like so,
tesseract eurotext.tiff out
then the out file has the correct output.
But when i try to consume the libraries, then the code fails.
I tried to use C++ code also even there it fails.

Quan Nguyen

unread,
Mar 29, 2015, 9:59:46 AM3/29/15
to tesser...@googlegroups.com
The C-API, which Tess4J wraps around, was re-introduced in 3.02. You would need to upgrade to that.

dhruv shah

unread,
Mar 29, 2015, 11:53:49 PM3/29/15
to tesser...@googlegroups.com
I have the latest version of tess4j from maven repository.

Also the CPP code that I'm running is the default Tesseractmain.cpp(attached)
Here is the command I'm using to build it.
 sudo g++ -m32 tesseractmain.cpp -I../../Tesseract/Tesseract/ccutil -I../../leptonica-1.71/src -I../../Tesseract/Tesseract/ccstruct -I../../Tesseract/Tesseract/ccmain -I../../Tesseract/Tesseract/viewer -I/usr/local/cuda-6.5/include -L/usr/local/cuda-6.5/lib -lcudart

Also, the following in the makefile that was generated when making the tesseract application.
# Makefile.in generated by automake 1.14.1 from Makefile.am.
# Makefile.  Generated from Makefile.in by configure.

# Copyright (C) 1994-2013 Free Software Foundation, Inc.

# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.




am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
am__make_running_with_option = \
  case $${target_option-} in \
      ?) ;; \
      *) echo "am__make_running_with_option: internal error: invalid" \
              "target option '$${target_option-}' specified" >&2; \
         exit 1;; \
  esac; \
  has_opt=no; \
  sane_makeflags=$$MAKEFLAGS; \
  if $(am__is_gnu_make); then \
    sane_makeflags=$$MFLAGS; \
  else \
    case $$MAKEFLAGS in \
      *\\[\ \    ]*) \
        bs=\\; \
        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
          | sed "s/$$bs$$bs[$$bs $$bs    ]*//g"`;; \
    esac; \
  fi; \
  skip_next=no; \
  strip_trailopt () \
  { \
    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
  }; \
  for flg in $$sane_makeflags; do \
    test $$skip_next = yes && { skip_next=no; continue; }; \
    case $$flg in \
      *=*|--*) continue;; \
        -*I) strip_trailopt 'I'; skip_next=yes;; \
      -*I?*) strip_trailopt 'I';; \
        -*O) strip_trailopt 'O'; skip_next=yes;; \
      -*O?*) strip_trailopt 'O';; \
        -*l) strip_trailopt 'l'; skip_next=yes;; \
      -*l?*) strip_trailopt 'l';; \
      -[dEDm]) skip_next=yes;; \
      -[JT]) skip_next=yes;; \
    esac; \
    case $$flg in \
      *$$target_option*) has_opt=yes; break;; \
    esac; \
  done; \
  test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/tesseract
pkgincludedir = $(includedir)/tesseract
pkglibdir = $(libdir)/tesseract
pkglibexecdir = $(libexecdir)/tesseract
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = i386-pc-linux-gnu
host_triplet = i386-pc-linux-gnu
subdir = .
DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
    $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
    $(top_srcdir)/configure $(am__configure_deps) \
    $(top_srcdir)/config/config.h.in $(top_srcdir)/config/depcomp \
    ABOUT-NLS COPYING config/compile config/config.guess \
    config/config.sub config/depcomp config/install-sh \
    config/missing config/ltmain.sh $(top_srcdir)/config/compile \
    $(top_srcdir)/config/config.guess \
    $(top_srcdir)/config/config.sub \
    $(top_srcdir)/config/install-sh $(top_srcdir)/config/ltmain.sh \
    $(top_srcdir)/config/missing
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \
    $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
    $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
    $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    $(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
 configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config_auto.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
    *) f=$$p;; \
  esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
  for p in $$list; do echo "$$p $$p"; done | \
  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
    if (++n[$$2] == $(am__install_max)) \
      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
    END { for (dir in files) print dir, files[dir] }'
am__base_list = \
  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
  test -z "$$files" \
    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
         $(am__cd) "$$dir" && rm -f $$files; }; \
  }
am__installdirs = "$(DESTDIR)$(libdir)"
LTLIBRARIES = $(lib_LTLIBRARIES)
libtesseract_la_DEPENDENCIES = api/libtesseract_api.la \
    ccmain/libtesseract_main.la cube/libtesseract_cube.la \
    neural_networks/runtime/libtesseract_neural.la \
    textord/libtesseract_textord.la \
    wordrec/libtesseract_wordrec.la \
    classify/libtesseract_classify.la dict/libtesseract_dict.la \
    ccstruct/libtesseract_ccstruct.la image/libtesseract_image.la \
    cutil/libtesseract_cutil.la viewer/libtesseract_viewer.la \
    ccutil/libtesseract_ccutil.la
am_libtesseract_la_OBJECTS =
libtesseract_la_OBJECTS = $(am_libtesseract_la_OBJECTS)
AM_V_lt = $(am__v_lt_$(V))
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
am__v_lt_0 = --silent
am__v_lt_1 =
libtesseract_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
    $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
    $(AM_CXXFLAGS) $(CXXFLAGS) $(libtesseract_la_LDFLAGS) \
    $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_$(V))
am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY))
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo "  GEN     " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_$(V))
am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY))
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.
depcomp = $(SHELL) $(top_srcdir)/config/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
    $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
    $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
    $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
    $(AM_CXXFLAGS) $(CXXFLAGS)
AM_V_CXX = $(am__v_CXX_$(V))
am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY))
am__v_CXX_0 = @echo "  CXX     " $@;
am__v_CXX_1 =
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
    $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
    $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CXXLD = $(am__v_CXXLD_$(V))
am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY))
am__v_CXXLD_0 = @echo "  CXXLD   " $@;
am__v_CXXLD_1 =
SOURCES = $(libtesseract_la_SOURCES) \
    $(nodist_EXTRA_libtesseract_la_SOURCES)
DIST_SOURCES = $(libtesseract_la_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
    ctags-recursive dvi-recursive html-recursive info-recursive \
    install-data-recursive install-dvi-recursive \
    install-exec-recursive install-html-recursive \
    install-info-recursive install-pdf-recursive \
    install-ps-recursive install-recursive installcheck-recursive \
    installdirs-recursive pdf-recursive ps-recursive \
    tags-recursive uninstall-recursive
am__can_run_installinfo = \
  case $$AM_UPDATE_INFO_DIR in \
    n|no|NO) false;; \
    *) (install-info --version) >/dev/null 2>&1;; \
  esac
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive    \
  distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
  $(RECURSIVE_TARGETS) \
  $(RECURSIVE_CLEAN_TARGETS) \
  $(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
    cscope distdir dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates.  Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
  BEGIN { nonempty = 0; } \
  { items[$$0] = 1; nonempty = 1; } \
  END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique.  This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
  list='$(am__tagged_files)'; \
  unique=`for i in $$list; do \
    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
CSCOPE = cscope
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
  if test -d "$(distdir)"; then \
    find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
      && rm -rf "$(distdir)" \
      || { sleep 5 && rm -rf "$(distdir)"; }; \
  else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
  dir0=`pwd`; \
  sed_first='s,^\([^/]*\)/.*$$,\1,'; \
  sed_rest='s,^[^/]*/*,,'; \
  sed_last='s,^.*/\([^/]*\)$$,\1,'; \
  sed_butlast='s,/*[^/]*$$,,'; \
  while test -n "$$dir1"; do \
    first=`echo "$$dir1" | sed -e "$$sed_first"`; \
    if test "$$first" != "."; then \
      if test "$$first" = ".."; then \
        dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
        dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
      else \
        first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
        if test "$$first2" = "$$first"; then \
          dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
        else \
          dir2="../$$dir2"; \
        fi; \
        dir0="$$dir0"/"$$first"; \
      fi; \
    fi; \
    dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
  done; \
  reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
  | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/missing aclocal-1.14
AMTAR = $${TAR-tar}
AM_DEFAULT_VERBOSITY = 1
AR = ar
AUTOCONF = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/missing autoconf
AUTOHEADER = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/missing autoheader
AUTOMAKE = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/missing automake-1.14
AWK = mawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -m32
CPP = gcc -E
CPPFLAGS = -m32 -I/usr/local/cuda-6.5/include -I/usr/local/include/leptonica
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -m32
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DLLTOOL = false
DSYMUTIL =
DUMPBIN =
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
FGREP = /bin/grep -F
GENERIC_API_VERSION = 3.1
GENERIC_LIBRARY_NAME = tesseract
GENERIC_LIBRARY_VERSION = 3:1
GENERIC_MAJOR_VERSION = 3
GENERIC_RELEASE = 3.1
GENERIC_VERSION = 3.1.0
GREP = /bin/grep
INSTALL = /usr/bin/install -c
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LD = /usr/bin/ld
LDFLAGS = -m32 -L/usr/local/cuda-6.5/lib -L/usr/lib/i386-linux-gnu
LIBLEPT_HEADERSDIR = /usr/local/include /usr/include
LIBOBJS =
LIBS = -llept -lpthread -lcudart -lcuda
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LIPO =
LN_S = ln -s
LTLIBOBJS =
MAINT = #
MAKEINFO = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/missing makeinfo
MANIFEST_TOOL = :
MKDIR_P = /bin/mkdir -p
NM = /usr/bin/nm -B
NMEDIT =
OBJDUMP = objdump
OBJEXT = o
OTOOL =
OTOOL64 =
PACKAGE = tesseract
PACKAGE_BUGREPORT = thera...@gmail.com
PACKAGE_DATE = 08/25
PACKAGE_NAME = tesseract
PACKAGE_STRING = tesseract 3.01
PACKAGE_TARNAME = tesseract
PACKAGE_URL =
PACKAGE_VERSION = 3.01
PACKAGE_YEAR = 2011
PATH_SEPARATOR = :
RANLIB = ranlib
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 3.01
abs_builddir = /home/dhruv/Desktop/ocr/Tesseract/Tesseract
abs_srcdir = /home/dhruv/Desktop/ocr/Tesseract/Tesseract
abs_top_builddir = /home/dhruv/Desktop/ocr/Tesseract/Tesseract
abs_top_srcdir = /home/dhruv/Desktop/ocr/Tesseract/Tesseract
ac_ct_AR = ar
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_DUMPBIN =
am__include = include
am__leading_dot = .
am__quote =
am__tar = $${TAR-tar} chof - "$$tardir"
am__untar = $${TAR-tar} xf -
bindir = ${exec_prefix}/bin
build = i386-pc-linux-gnu
build_alias = i386-linux-gnu
build_cpu = i386
build_os = linux-gnu
build_vendor = pc
builddir = .
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = i386-pc-linux-gnu
host_alias =
host_cpu = i386
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include/tesseract
infodir = ${datarootdir}/info
install_sh = ${SHELL} /home/dhruv/Desktop/ocr/Tesseract/Tesseract/config/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${prefix}/share/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = $(MKDIR_P)
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
srcdir = .
sysconfdir = ${prefix}/etc
target_alias =
top_build_prefix =
top_builddir = .
top_srcdir = .
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = ccstruct ccutil classify cube cutil dict image neural_networks/runtime textord viewer wordrec ccmain training tessdata testing java api doc
#if USING_GETTEXT
#SUBDIRS += po
#AM_CPPFLAGS = -DLOCALEDIR=\"$(localedir)\"
#endif
EXTRA_DIST = eurotext.tif phototest.tif ReleaseNotes \
      aclocal.m4 config configure.ac runautoconf tesseract.spec contrib


#EXTRA_DIST = doc/html doc/tesseract_3.01.pdf doc/tesseract_3.01.ps.gz
lib_LTLIBRARIES = libtesseract.la
libtesseract_la_SOURCES =
# Dummy C++ source to cause C++ linking.
# see http://www.gnu.org/s/hello/manual/automake/Libtool-Convenience-Libraries.html#Libtool-Convenience-Libraries
nodist_EXTRA_libtesseract_la_SOURCES = dummy.cxx
libtesseract_la_LIBADD = \
    api/libtesseract_api.la \
    ccmain/libtesseract_main.la \
    cube/libtesseract_cube.la \
    neural_networks/runtime/libtesseract_neural.la \
    textord/libtesseract_textord.la \
    wordrec/libtesseract_wordrec.la \
    classify/libtesseract_classify.la \
    dict/libtesseract_dict.la \
    ccstruct/libtesseract_ccstruct.la \
    image/libtesseract_image.la \
    cutil/libtesseract_cutil.la \
    viewer/libtesseract_viewer.la \
    ccutil/libtesseract_ccutil.la

libtesseract_la_LDFLAGS = -version-info $(GENERIC_LIBRARY_VERSION)
all: config_auto.h
    $(MAKE) $(AM_MAKEFLAGS) all-recursive

.SUFFIXES:
.SUFFIXES: .cxx .lo .o .obj
am--refresh: Makefile
    @:
$(srcdir)/Makefile.in: # $(srcdir)/Makefile.am  $(am__configure_deps)
    @for dep in $?; do \
      case '$(am__configure_deps)' in \
        *$$dep*) \
          echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
          $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
        && exit 0; \
          exit 1;; \
      esac; \
    done; \
    echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
    $(am__cd) $(top_srcdir) && \
      $(AUTOMAKE) --gnu Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
    @case '$?' in \
      *config.status*) \
        echo ' $(SHELL) ./config.status'; \
        $(SHELL) ./config.status;; \
      *) \
        echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
        cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
    esac;

$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
    $(SHELL) ./config.status --recheck

$(top_srcdir)/configure: # $(am__configure_deps)
    $(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): # $(am__aclocal_m4_deps)
    $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):

config_auto.h: stamp-h1
    @test -f $@ || rm -f stamp-h1
    @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1

stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status
    @rm -f stamp-h1
    cd $(top_builddir) && $(SHELL) ./config.status config_auto.h
$(top_srcdir)/config/config.h.in: # $(am__configure_deps)
    ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
    rm -f stamp-h1
    touch $@

distclean-hdr:
    -rm -f config_auto.h stamp-h1

install-libLTLIBRARIES: $(lib_LTLIBRARIES)
    @$(NORMAL_INSTALL)
    @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
    list2=; for p in $$list; do \
      if test -f $$p; then \
        list2="$$list2 $$p"; \
      else :; fi; \
    done; \
    test -z "$$list2" || { \
      echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
      $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
      echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
      $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
    }

uninstall-libLTLIBRARIES:
    @$(NORMAL_UNINSTALL)
    @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
    for p in $$list; do \
      $(am__strip_dir) \
      echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
      $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
    done

clean-libLTLIBRARIES:
    -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
    @list='$(lib_LTLIBRARIES)'; \
    locs=`for p in $$list; do echo $$p; done | \
          sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
          sort -u`; \
    test -z "$$locs" || { \
      echo rm -f $${locs}; \
      rm -f $${locs}; \
    }

libtesseract.la: $(libtesseract_la_OBJECTS) $(libtesseract_la_DEPENDENCIES) $(EXTRA_libtesseract_la_DEPENDENCIES)
    $(AM_V_CXXLD)$(libtesseract_la_LINK) -rpath $(libdir) $(libtesseract_la_OBJECTS) $(libtesseract_la_LIBADD) $(LIBS)

mostlyclean-compile:
    -rm -f *.$(OBJEXT)

distclean-compile:
    -rm -f *.tab.c

include ./$(DEPDIR)/dummy.Plo

.cxx.o:
    $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#    $(AM_V_CXX)source='$<' object='$@' libtool=no \
#    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#    $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $<

.cxx.obj:
    $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
#    $(AM_V_CXX)source='$<' object='$@' libtool=no \
#    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#    $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`

.cxx.lo:
    $(AM_V_CXX)$(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
    $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
#    $(AM_V_CXX)source='$<' object='$@' libtool=yes \
#    DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
#    $(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $<

mostlyclean-libtool:
    -rm -f *.lo

clean-libtool:
    -rm -rf .libs _libs

distclean-libtool:
    -rm -f libtool config.lt

# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
# (1) if the variable is set in 'config.status', edit 'config.status'
#     (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
    @fail=; \
    if $(am__make_keepgoing); then \
      failcom='fail=yes'; \
    else \
      failcom='exit 1'; \
    fi; \
    dot_seen=no; \
    target=`echo $@ | sed s/-recursive//`; \
    case "$@" in \
      distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
      *) list='$(SUBDIRS)' ;; \
    esac; \
    for subdir in $$list; do \
      echo "Making $$target in $$subdir"; \
      if test "$$subdir" = "."; then \
        dot_seen=yes; \
        local_target="$$target-am"; \
      else \
        local_target="$$target"; \
      fi; \
      ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
      || eval $$failcom; \
    done; \
    if test "$$dot_seen" = "no"; then \
      $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
    fi; test -z "$$fail"

ID: $(am__tagged_files)
    $(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags

tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    set x; \
    here=`pwd`; \
    if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
      include_option=--etags-include; \
      empty_fix=.; \
    else \
      include_option=--include; \
      empty_fix=; \
    fi; \
    list='$(SUBDIRS)'; for subdir in $$list; do \
      if test "$$subdir" = .; then :; else \
        test ! -f $$subdir/TAGS || \
          set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
      fi; \
    done; \
    $(am__define_uniq_tagged_files); \
    shift; \
    if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
      test -n "$$unique" || unique=$$empty_fix; \
      if test $$# -gt 0; then \
        $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          "$$@" $$unique; \
      else \
        $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
          $$unique; \
      fi; \
    fi
ctags: ctags-recursive

CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
    $(am__define_uniq_tagged_files); \
    test -z "$(CTAGS_ARGS)$$unique" \
      || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
         $$unique

GTAGS:
    here=`$(am__cd) $(top_builddir) && pwd` \
      && $(am__cd) $(top_srcdir) \
      && gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
    test ! -s cscope.files \
      || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
    -rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive

cscopelist-am: $(am__tagged_files)
    list='$(am__tagged_files)'; \
    case "$(srcdir)" in \
      [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
      *) sdir=$(subdir)/$(srcdir) ;; \
    esac; \
    for i in $$list; do \
      if test -f "$$i"; then \
        echo "$(subdir)/$$i"; \
      else \
        echo "$$sdir/$$i"; \
      fi; \
    done >> $(top_builddir)/cscope.files

distclean-tags:
    -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
    -rm -f cscope.out cscope.in.out cscope.po.out cscope.files

distdir: $(DISTFILES)
    $(am__remove_distdir)
    test -d "$(distdir)" || mkdir "$(distdir)"
    @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
    topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
    list='$(DISTFILES)'; \
      dist_files=`for file in $$list; do echo $$file; done | \
      sed -e "s|^$$srcdirstrip/||;t" \
          -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
    case $$dist_files in \
      */*) $(MKDIR_P) `echo "$$dist_files" | \
               sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
               sort -u` ;; \
    esac; \
    for file in $$dist_files; do \
      if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
      if test -d $$d/$$file; then \
        dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
        if test -d "$(distdir)/$$file"; then \
          find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
        fi; \
        if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
          cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
          find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
        fi; \
        cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
      else \
        test -f "$(distdir)/$$file" \
        || cp -p $$d/$$file "$(distdir)/$$file" \
        || exit 1; \
      fi; \
    done
    @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
      if test "$$subdir" = .; then :; else \
        $(am__make_dryrun) \
          || test -d "$(distdir)/$$subdir" \
          || $(MKDIR_P) "$(distdir)/$$subdir" \
          || exit 1; \
        dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
        $(am__relativize); \
        new_distdir=$$reldir; \
        dir1=$$subdir; dir2="$(top_distdir)"; \
        $(am__relativize); \
        new_top_distdir=$$reldir; \
        echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
        echo "     am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
        ($(am__cd) $$subdir && \
          $(MAKE) $(AM_MAKEFLAGS) \
            top_distdir="$$new_top_distdir" \
            distdir="$$new_distdir" \
        am__remove_distdir=: \
        am__skip_length_check=: \
        am__skip_mode_fix=: \
            distdir) \
          || exit 1; \
      fi; \
    done
    $(MAKE) $(AM_MAKEFLAGS) \
      top_distdir="$(top_distdir)" distdir="$(distdir)" \
      dist-hook
    -test -n "$(am__skip_mode_fix)" \
    || find "$(distdir)" -type d ! -perm -755 \
        -exec chmod u+rwx,go+rx {} \; -o \
      ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
      ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
      ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
    || chmod -R a+r "$(distdir)"
dist-gzip: distdir
    tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
    $(am__post_remove_distdir)

dist-bzip2: distdir
    tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
    $(am__post_remove_distdir)

dist-lzip: distdir
    tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
    $(am__post_remove_distdir)

dist-xz: distdir
    tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
    $(am__post_remove_distdir)

dist-tarZ: distdir
    @echo WARNING: "Support for shar distribution archives is" \
                   "deprecated." >&2
    @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
    tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
    $(am__post_remove_distdir)

dist-shar: distdir
    @echo WARNING: "Support for distribution archives compressed with" \
               "legacy program 'compress' is deprecated." >&2
    @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
    shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
    $(am__post_remove_distdir)

dist-zip: distdir
    -rm -f $(distdir).zip
    zip -rq $(distdir).zip $(distdir)
    $(am__post_remove_distdir)

dist dist-all:
    $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
    $(am__post_remove_distdir)

# This target untars the dist file and tries a VPATH configuration.  Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
    case '$(DIST_ARCHIVES)' in \
    *.tar.gz*) \
      GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
    *.tar.bz2*) \
      bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
    *.tar.lz*) \
      lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
    *.tar.xz*) \
      xz -dc $(distdir).tar.xz | $(am__untar) ;;\
    *.tar.Z*) \
      uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
    *.shar.gz*) \
      GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
    *.zip*) \
      unzip $(distdir).zip ;;\
    esac
    chmod -R a-w $(distdir)
    chmod u+w $(distdir)
    mkdir $(distdir)/_build $(distdir)/_inst
    chmod a-w $(distdir)
    test -d $(distdir)/_build || exit 0; \
    dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
      && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
      && am__cwd=`pwd` \
      && $(am__cd) $(distdir)/_build \
      && ../configure \
        $(AM_DISTCHECK_CONFIGURE_FLAGS) \
        $(DISTCHECK_CONFIGURE_FLAGS) \
        --srcdir=.. --prefix="$$dc_install_base" \
      && $(MAKE) $(AM_MAKEFLAGS) \
      && $(MAKE) $(AM_MAKEFLAGS) dvi \
      && $(MAKE) $(AM_MAKEFLAGS) check \
      && $(MAKE) $(AM_MAKEFLAGS) install \
      && $(MAKE) $(AM_MAKEFLAGS) installcheck \
      && $(MAKE) $(AM_MAKEFLAGS) uninstall \
      && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
            distuninstallcheck \
      && chmod -R a-w "$$dc_install_base" \
      && ({ \
           (cd ../.. && umask 077 && mkdir "$$dc_destdir") \
           && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
           && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
           && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
                distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
          } || { rm -rf "$$dc_destdir"; exit 1; }) \
      && rm -rf "$$dc_destdir" \
      && $(MAKE) $(AM_MAKEFLAGS) dist \
      && rm -rf $(DIST_ARCHIVES) \
      && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
      && cd "$$am__cwd" \
      || exit 1
    $(am__post_remove_distdir)
    @(echo "$(distdir) archives ready for distribution: "; \
      list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
      sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
    @test -n '$(distuninstallcheck_dir)' || { \
      echo 'ERROR: trying to run $@ with an empty' \
           '$$(distuninstallcheck_dir)' >&2; \
      exit 1; \
    }; \
    $(am__cd) '$(distuninstallcheck_dir)' || { \
      echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
      exit 1; \
    }; \
    test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
       || { echo "ERROR: files left after uninstall:" ; \
            if test -n "$(DESTDIR)"; then \
              echo "  (check DESTDIR support)"; \
            fi ; \
            $(distuninstallcheck_listfiles) ; \
            exit 1; } >&2
distcleancheck: distclean
    @if test '$(srcdir)' = . ; then \
      echo "ERROR: distcleancheck can only run from a VPATH build" ; \
      exit 1 ; \
    fi
    @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
      || { echo "ERROR: files left in build directory after distclean:" ; \
           $(distcleancheck_listfiles) ; \
           exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(LTLIBRARIES) config_auto.h
installdirs: installdirs-recursive
installdirs-am:
    for dir in "$(DESTDIR)$(libdir)"; do \
      test -z "$$dir" || $(MKDIR_P) "$$dir"; \
    done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive

install-am: all-am
    @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am

installcheck: installcheck-recursive
install-strip:
    if test -z '$(STRIP)'; then \
      $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
        install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
          install; \
    else \
      $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
        install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
        "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
    fi
mostlyclean-generic:

clean-generic:

distclean-generic:
    -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
    -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)

maintainer-clean-generic:
    @echo "This command is intended for maintainers to use"
    @echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive

clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
    mostlyclean-am

distclean: distclean-recursive
    -rm -f $(am__CONFIG_DISTCLEAN_FILES)
    -rm -rf ./$(DEPDIR)
    -rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
    distclean-hdr distclean-libtool distclean-tags

dvi: dvi-recursive

dvi-am:

html: html-recursive

html-am:

info: info-recursive

info-am:

install-data-am:

install-dvi: install-dvi-recursive

install-dvi-am:

install-exec-am: install-libLTLIBRARIES

install-html: install-html-recursive

install-html-am:

install-info: install-info-recursive

install-info-am:

install-man:

install-pdf: install-pdf-recursive

install-pdf-am:

install-ps: install-ps-recursive

install-ps-am:

installcheck-am:

maintainer-clean: maintainer-clean-recursive
    -rm -f $(am__CONFIG_DISTCLEAN_FILES)
    -rm -rf $(top_srcdir)/autom4te.cache
    -rm -rf ./$(DEPDIR)
    -rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic

mostlyclean: mostlyclean-recursive

mostlyclean-am: mostlyclean-compile mostlyclean-generic \
    mostlyclean-libtool

pdf: pdf-recursive

pdf-am:

ps: ps-recursive

ps-am:

uninstall-am: uninstall-libLTLIBRARIES

.MAKE: $(am__recursive_targets) all install-am install-strip

.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
    am--refresh check check-am clean clean-cscope clean-generic \
    clean-libLTLIBRARIES clean-libtool cscope cscopelist-am ctags \
    ctags-am dist dist-all dist-bzip2 dist-gzip dist-hook \
    dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
    distclean distclean-compile distclean-generic distclean-hdr \
    distclean-libtool distclean-tags distcleancheck distdir \
    distuninstallcheck dvi dvi-am html html-am info info-am \
    install install-am install-data install-data-am install-dvi \
    install-dvi-am install-exec install-exec-am install-html \
    install-html-am install-info install-info-am \
    install-libLTLIBRARIES install-man install-pdf install-pdf-am \
    install-ps install-ps-am install-strip installcheck \
    installcheck-am installdirs installdirs-am maintainer-clean \
    maintainer-clean-generic mostlyclean mostlyclean-compile \
    mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
    tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES


dist-hook:
# Need to remove .svn directories from directories
# added using EXTRA_DIST. $(distdir)/tessdata would in
# theory suffice.
    rm -rf `find $(distdir) -name .svn`
    rm -rf `find $(distdir) -name .deps`
    rm -rf `find $(distdir) -name Makefile.in`

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
tesseractmain.cpp

dhruv shah

unread,
Mar 29, 2015, 11:57:33 PM3/29/15
to tesser...@googlegroups.com
Hey,

Sorry, I forgot to attach the output when trying to build of the tesseractmain.cpp file.
/tmp/cctuZREz.o: In function `main':
tesseractmain.cpp:(.text+0x6c): undefined reference to `tesseract::TessBaseAPI::Version()'
tesseractmain.cpp:(.text+0x2d8): undefined reference to `tesseract::TessBaseAPI::TessBaseAPI()'
tesseractmain.cpp:(.text+0x2ec): undefined reference to `tesseract::TessBaseAPI::SetOutputName(char const*)'
tesseractmain.cpp:(.text+0x34e): undefined reference to `tesseract::TessBaseAPI::Init(char const*, char const*, tesseract::OcrEngineMode, char**, int, GenericVector<STRING> const*, GenericVector<STRING> const*, bool)'
tesseractmain.cpp:(.text+0x35a): undefined reference to `tesseract::TessBaseAPI::GetPageSegMode() const'
tesseractmain.cpp:(.text+0x378): undefined reference to `tesseract::TessBaseAPI::SetPageSegMode(tesseract::PageSegMode)'
tesseractmain.cpp:(.text+0x42f): undefined reference to `tesseract::TessBaseAPI::Version()'
tesseractmain.cpp:(.text+0x470): undefined reference to `tprintf(char const*, ...)'
tesseractmain.cpp:(.text+0x4c7): undefined reference to `pixRead'
tesseractmain.cpp:(.text+0x4fc): undefined reference to `pixDestroy'
tesseractmain.cpp:(.text+0x508): undefined reference to `STRING::STRING()'
tesseractmain.cpp:(.text+0x534): undefined reference to `tesseract::TessBaseAPI::ProcessPages(char const*, char const*, int, STRING*)'
tesseractmain.cpp:(.text+0x547): undefined reference to `tprintf(char const*, ...)'
tesseractmain.cpp:(.text+0x568): undefined reference to `tesseract::TessBaseAPI::GetBoolVariable(char const*, bool*) const'
tesseractmain.cpp:(.text+0x589): undefined reference to `tesseract::TessBaseAPI::GetBoolVariable(char const*, bool*) const'
tesseractmain.cpp:(.text+0x59d): undefined reference to `STRING::STRING(char const*)'
tesseractmain.cpp:(.text+0x5d2): undefined reference to `STRING::operator+=(char const*)'
tesseractmain.cpp:(.text+0x5de): undefined reference to `STRING::string() const'
tesseractmain.cpp:(.text+0x605): undefined reference to `STRING::string() const'
tesseractmain.cpp:(.text+0x615): undefined reference to `tprintf(char const*, ...)'
tesseractmain.cpp:(.text+0x62d): undefined reference to `STRING::length() const'
tesseractmain.cpp:(.text+0x63b): undefined reference to `STRING::string() const'
tesseractmain.cpp:(.text+0x679): undefined reference to `STRING::~STRING()'
tesseractmain.cpp:(.text+0x685): undefined reference to `STRING::~STRING()'
tesseractmain.cpp:(.text+0x691): undefined reference to `tesseract::TessBaseAPI::~TessBaseAPI()'
tesseractmain.cpp:(.text+0x6b3): undefined reference to `STRING::~STRING()'
tesseractmain.cpp:(.text+0x6c3): undefined reference to `STRING::~STRING()'
tesseractmain.cpp:(.text+0x6d3): undefined reference to `tesseract::TessBaseAPI::~TessBaseAPI()'
...
Message has been deleted

dhruv shah

unread,
Mar 30, 2015, 12:40:20 AM3/30/15
to tesser...@googlegroups.com
Here is another code sample In CPP. This is super duper basic.

#include <tesseract/baseapi.h>
#include <leptonica/allheaders.h>

int main()
{
    char *outText;

    tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
    return 0;
}


This gives the following error.
..................
error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status

dhruv shah

unread,
Apr 1, 2015, 2:57:01 AM4/1/15
to tesser...@googlegroups.com
Hey,

I've found the issue.
The library file that is required is libtesseract_api.so instead of libtesseract.so. Can you tell me why this is so?
Reply all
Reply to author
Forward
0 new messages