mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2024-12-25 00:07:49 +08:00
da121f013c
git-svn-id: https://tesseract-ocr.googlecode.com/svn/trunk@681 d0cd1f9f-072b-0410-8dd7-cf729c803f20
548 lines
28 KiB
HTML
548 lines
28 KiB
HTML
|
||
|
||
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||
|
||
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
|
||
<title>Programming with libtesseract — Visual Studio 2008 Developer Notes for Tesseract-OCR</title>
|
||
|
||
<link rel="stylesheet" href="_static/tesseract.css" type="text/css" />
|
||
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
|
||
|
||
<script type="text/javascript">
|
||
var DOCUMENTATION_OPTIONS = {
|
||
URL_ROOT: '',
|
||
VERSION: '3.02',
|
||
COLLAPSE_INDEX: false,
|
||
FILE_SUFFIX: '.html',
|
||
HAS_SOURCE: true
|
||
};
|
||
</script>
|
||
<script type="text/javascript" src="_static/jquery.js"></script>
|
||
<script type="text/javascript" src="_static/underscore.js"></script>
|
||
<script type="text/javascript" src="_static/doctools.js"></script>
|
||
<script type="text/javascript" src="_static/sidebar.js"></script>
|
||
<link rel="top" title="Visual Studio 2008 Developer Notes for Tesseract-OCR" href="index.html" />
|
||
<link rel="next" title="Handy free tools" href="tools.html" />
|
||
<link rel="prev" title="Building Tesseract-OCR" href="building.html" />
|
||
|
||
<link href='http://fonts.googleapis.com/css?family=Droid+Serif:regular,italic,bold,bolditalic' rel='stylesheet' type='text/css'>
|
||
<link href='http://fonts.googleapis.com/css?family=Droid+Sans:regular,bold' rel='stylesheet' type='text/css'>
|
||
<link href='http://fonts.googleapis.com/css?family=Ubuntu+Mono:400,400italic,700,700italic&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
|
||
|
||
</head>
|
||
<body>
|
||
<div class="related">
|
||
<h3>Navigation</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="tools.html" title="Handy free tools"
|
||
accesskey="N">next</a></li>
|
||
<li class="right" >
|
||
<a href="building.html" title="Building Tesseract-OCR"
|
||
accesskey="P">previous</a> |</li>
|
||
<li><a href="http://code.google.com/p/tesseract-ocr/">Tesseract-OCR Home</a> »</li>
|
||
|
||
<li><a href="index.html">Visual Studio 2008 Developer Notes</a> »</li>
|
||
|
||
</ul>
|
||
</div>
|
||
|
||
<div class="document">
|
||
<div class="documentwrapper">
|
||
<div class="bodywrapper">
|
||
<div class="body">
|
||
|
||
<div class="section" id="programming-with-libtesseract">
|
||
<h1>Programming with <span class="filesystem">libtesseract</span><a class="headerlink" href="#programming-with-libtesseract" title="Permalink to this headline">¶</a></h1>
|
||
<p>To use <span class="filesystem">libtesseract</span> in your own application you need to include
|
||
<strong>Leptonica</strong>’s <span class="filesystem">allheaders.h</span>, and <strong>Tesseract-OCR</strong>’s <span class="filesystem">baseapi.h</span> and
|
||
<span class="filesystem">strngs.h</span>.</p>
|
||
<p><strong>Tesseract-OCR</strong> uses <span class="filesystem">liblept</span> mainly for image I/O, but you can also use
|
||
any of <strong>Leptonica</strong>’s <em>many</em> image processing functions on <tt class="docutils literal"><span class="pre">PIX</span></tt>,
|
||
while at the same time calling <tt class="docutils literal"><span class="pre">TessBaseAPI</span></tt> methods. See the
|
||
<a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/">Leptonica documentation</a>
|
||
for more details.</p>
|
||
<p>There doesn’t seem to be any documentation on <span class="filesystem">api\baseapi.h</span>, but it
|
||
has extensive comments. You can also look at the <a class="reference internal" href="#apitest"><em>APITest Sample</em></a> and
|
||
<a class="reference internal" href="#apiexamples"><em>APIExamples</em></a> projects.</p>
|
||
<p>See the <a class="reference internal" href="#apitest"><em>APITest Sample</em></a> project for an example of which compiler and
|
||
linker settings you need for various build configurations. The easiest
|
||
way to begin a new application is to just make a copy of the <span class="filesystem">APITest</span>
|
||
directory. See <a class="reference internal" href="maintenance.html#copying-a-project"><em>this step</em></a> for detailed
|
||
instructions (skip the last step about adding <em class="guilabel">Project
|
||
Dependencies</em>).</p>
|
||
<p>If you want to manually set the required settings, then here’s the list
|
||
of things to do:</p>
|
||
<ol class="arabic">
|
||
<li><p class="first">Add the following <em class="guilabel">Preprocessor Definitions</em> when compiling
|
||
any files that include <span class="filesystem">baseapi.h</span> and you are linking with the
|
||
static library versions of <span class="filesystem">libtesseract</span>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>USE_STD_NAMESPACE
|
||
</pre></div>
|
||
</div>
|
||
<p>If you are linking with the DLL versions of <span class="filesystem">libtesseract</span> instead
|
||
add:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>USE_STD_NAMESPACE;TESSDLL_IMPORTS;CCUTIL_IMPORTS;LIBLEPT_IMPORTS
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
<li><p class="first">Be sure to add the following to <em class="guilabel">Additional Include
|
||
Directories</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>C:\BuildFolder\include
|
||
C:\BuildFolder\include\leptonica
|
||
|
||
C:\BuildFolder\include\tesseract or
|
||
|
||
<tesseract-3.0x dir> (all its sub-directories that contain header files)
|
||
</pre></div>
|
||
</div>
|
||
</li>
|
||
<li><p class="first">Add <span class="filesystem">C:\BuildFolder\lib</span> to your <em class="guilabel">Additional Library
|
||
Directories</em>.</p>
|
||
</li>
|
||
<li><p class="first">In the <span class="filesystem">C:\BuildFolder\include</span> directory are two Visual Studio
|
||
Property Sheet files:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>tesseract_versionnumbers.vsprops
|
||
leptonica_versionnumbers.vsprops
|
||
</pre></div>
|
||
</div>
|
||
<p>Using <span class="filesystem">tesseract_versionnumbers.vsprops</span> (which automatically inherits
|
||
<span class="filesystem">leptonica_versionnumbers.vsprops</span>) can make it easier to specify the
|
||
libraries you need to import. For example, when creating a staticly
|
||
linked debug executable you can say:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>zlib$(ZLIB_VERSION)-static-mtdll-debug.lib
|
||
libpng$(LIBPNG_VERSION)-static-mtdll-debug.lib
|
||
libjpeg$(LIBJPEG_VERSION)-static-mtdll-debug.lib
|
||
giflib$(GIFLIB_VERSION)-static-mtdll-debug.lib
|
||
libtiff$(LIBTIFF_VERSION)-static-mtdll-debug.lib
|
||
liblept$(LIBLEPT_VERSION)-static-mtdll-debug.lib
|
||
libtesseract$(LIBTESS_VERSION)-static-debug.lib
|
||
</pre></div>
|
||
</div>
|
||
<p>to make your application less dependent on library version numbers.</p>
|
||
<p>To add the Property Sheet to a Project, open its <em class="guilabel">Properties
|
||
Pages</em> Dialog, and set the <em class="guilabel">Configuration Properties |
|
||
General | Inherited Project Property Sheets</em> item to:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>..\..\..\include\tesseract_versionnumbers.vsprops
|
||
</pre></div>
|
||
</div>
|
||
<p>Choosing <em class="menuselection"><span class="accelerator">V</span>iew ‣ Oth<span class="accelerator">e</span>r Windows ‣ Property
|
||
<span class="accelerator">M</span>anager</em> from the menubar will let you see the Properties attached
|
||
to each Project’s configurations.</p>
|
||
</li>
|
||
</ol>
|
||
<div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">The DLL versions of <span class="filesystem">libtesseract</span> currently only export the
|
||
<tt class="docutils literal"><span class="pre">TessBaseAPI</span></tt> C++ class from <span class="filesystem">baseapi.h</span>, there is no C function
|
||
interface yet.</p>
|
||
</div>
|
||
<div class="admonition note">
|
||
<p class="first admonition-title">Note</p>
|
||
<p class="last">The DLL versions of <span class="filesystem">libtesseract</span> currently only export the
|
||
<tt class="docutils literal"><span class="pre">TessBaseAPI</span></tt> and <tt class="docutils literal"><span class="pre">STRING</span></tt> classes. In theory, all you need is
|
||
are those classes. However, if you find yourself having to manipulate
|
||
other “internal” tesseract objects then you currently have to link
|
||
with the <strong>static library</strong> versions of <span class="filesystem">libtesseract</span>.</p>
|
||
</div>
|
||
<div class="admonition warning">
|
||
<p class="first admonition-title">Warning</p>
|
||
<p class="last">The Release versions of <span class="filesystem">liblept</span>, by design, <em>never</em> print out any
|
||
possibly helpful messages to the console. Therefore, it is highly
|
||
recommended that you do your initial development using the Debug
|
||
versions of <span class="filesystem">liblept</span>. See <a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/leptonica/README.html#compile-time-control-over-stderr-output">Compile-time control over stderr output</a>
|
||
for details.</p>
|
||
</div>
|
||
<p><<<Need to add the URL of the zip file that contains include & lib
|
||
directory contents for those people who don’t want to build libtesseract
|
||
themselves>>></p>
|
||
<div class="section" id="debugging-tips">
|
||
<h2>Debugging Tips<a class="headerlink" href="#debugging-tips" title="Permalink to this headline">¶</a></h2>
|
||
<p>Before debugging programs written with <span class="filesystem">libtesseract</span>, you should first
|
||
download the latest Leptonica sources (currently
|
||
<span class="filesystem">leptonica-1.68.tar.gz</span>) and VS2008 source package (<span class="filesystem">vs2008-1.68.zip</span>)
|
||
from:</p>
|
||
<ul>
|
||
<li><p class="first"><a class="reference external" href="http://code.google.com/p/leptonica/downloads/detail?name=leptonica-1.68.tar.gz">http://code.google.com/p/leptonica/downloads/detail?name=leptonica-1.68.tar.gz</a></p>
|
||
</li>
|
||
<li><p class="first"><a class="reference external" href="http://code.google.com/p/leptonica/downloads/detail?name=vs2008-1.68.zip">http://code.google.com/p/leptonica/downloads/detail?name=vs2008-1.68.zip</a></p>
|
||
</li>
|
||
</ul>
|
||
<p>Unpack them to <span class="filesystem">C:\BuildFolder</span> to get the following directory structure:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>C:\BuildFolder\
|
||
include\
|
||
lib\
|
||
leptonica-1.68\
|
||
vs2008\
|
||
tesseract-3.02\
|
||
vs2008\
|
||
testing\
|
||
tessdata\
|
||
</pre></div>
|
||
</div>
|
||
<p>(see <a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/vs2008/building-liblept.html">Building the liblept library</a>
|
||
for more information)</p>
|
||
<p><strong>Tesseract-OCR</strong> uses <strong>Leptonica</strong> “under the hood” for all (most? some?)
|
||
of its image processing operations. Having the source available (and
|
||
compiling it in debug mode) will make it easier to see what’s really
|
||
going on.</p>
|
||
<p>You might want to add
|
||
<span class="filesystem">C:\BuildFolder\leptonica-1.68\vs2008\leptonica.vcproj</span> and
|
||
<span class="filesystem">C:\BuildFolder\tesseract-3.02\vs2008\libtesseract\libtesseract.vcproj</span>
|
||
to your solution by right-clicking it and choosing <em class="menuselection">A<span class="accelerator">d</span>d ‣
|
||
<span class="accelerator">E</span>xisting Project...</em>. This seems to make VS2008’s Intellisense <a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/vs2008/building-other-programs.html#intellisense-and-liblept">work
|
||
better</a>
|
||
when finding “external” source files.</p>
|
||
<p>Definitely create a <tt class="docutils literal"><span class="pre">TESSDATA_PREFIX``x</span> <span class="pre">environment</span> <span class="pre">variable</span> <span class="pre">so</span> <span class="pre">that</span> <span class="pre">it</span>
|
||
<span class="pre">contains</span> <span class="pre">the</span> <span class="pre">absolute</span> <span class="pre">path</span> <span class="pre">of</span> <span class="pre">the</span> <span class="pre">directory</span> <span class="pre">that</span> <span class="pre">contains</span> <span class="pre">the</span>
|
||
<span class="pre">``tessdata</span></tt> directory. Otherwise you’ll have to put a <tt class="docutils literal"><span class="pre">tessdata</span></tt>
|
||
directory in every temporary build folder which quickly becomes painful
|
||
(especially since tessdata has gotten very big — 600MB!).</p>
|
||
</div>
|
||
<div class="section" id="apitest-sample">
|
||
<span id="apitest"></span><h2>APITest Sample<a class="headerlink" href="#apitest-sample" title="Permalink to this headline">¶</a></h2>
|
||
<p>The <em class="guilabel">APITest</em> Solution contains the minimal settings needed to
|
||
link with <span class="filesystem">libtesseract</span>. It demonstrates the typical situation, where
|
||
the “external” application’s source files reside <em>outside</em> of the
|
||
<span class="filesystem">tesseract-3.0x</span> directory tree.</p>
|
||
<p>To build the <span class="filesystem">vs2008\APITest</span> Solution, first copy it to your
|
||
<span class="filesystem">C:\BuildFolder</span> directory. This should now look like:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>C:\BuildFolder\
|
||
|
||
include\
|
||
leptonica\
|
||
tesseract\
|
||
|
||
leptonica_versionnumbers.vsprops
|
||
tesseract_versionnumbers.vsprops
|
||
|
||
lib\
|
||
giflib416-static-mtdll-debug.lib
|
||
giflib416-static-mtdll.lib
|
||
libjpeg8c-static-mtdll-debug.lib
|
||
libjpeg8c-static-mtdll.lib
|
||
liblept168-static-mtdll-debug.lib
|
||
liblept168-static-mtdll.lib
|
||
liblept168.dll
|
||
liblept168.lib
|
||
liblept168d.dll
|
||
liblept168d.lib
|
||
libpng143-static-mtdll-debug.lib
|
||
libpng143-static-mtdll.lib
|
||
libtesseract302.dll
|
||
libtesseract302.lib
|
||
libtesseract302d.dll
|
||
libtesseract302d.lib
|
||
libtesseract302-static.lib
|
||
libtesseract302-static-debug.lib
|
||
libtiff394-static-mtdll-debug.lib
|
||
libtiff394-static-mtdll.lib
|
||
zlib125-static-mtdll-debug.lib
|
||
zlib125-static-mtdll.lib
|
||
|
||
tesseract-3.02\
|
||
|
||
APITest\
|
||
baseapitester\
|
||
baseapitester.cpp
|
||
baseapitester.rc
|
||
baseapitester.vcproj
|
||
resource.h
|
||
stdafx.cpp
|
||
stdafx.h
|
||
targetver.h
|
||
APITest.sln
|
||
</pre></div>
|
||
</div>
|
||
<p>The <em class="guilabel">APITest</em> contains just the <em class="guilabel">baseapitester</em>
|
||
project. This was created using the VS2008 <em class="guilabel">Win32 Console
|
||
Application</em> Project Wizard and then just copying most of
|
||
<span class="filesystem">tesseractmain.cpp</span> and making minor edits. Its settings correctly refer
|
||
to the “public” <span class="filesystem">include</span> and <span class="filesystem">lib</span> directories using relative paths.</p>
|
||
<p>It assumes that the <span class="filesystem">C:\BuildFolder\include</span> directory has been
|
||
properly setup. See <a class="reference internal" href="setup.html#copying-headers"><em>this</em></a> for more details.</p>
|
||
<p>The <span class="filesystem">C:\BuildFolder\lib</span> directory will automatically get
|
||
<span class="filesystem">libtesseract</span> copied to it whenever it is built.</p>
|
||
<p>The <span class="filesystem">include\tesseract_versionnumbers.vsprops</span> Property Sheet is used
|
||
to avoid explicit library version number dependencies. Precompiled
|
||
headers are used. <em class="guilabel">LIB_Release</em>, <em class="guilabel">LIB_Debug</em>,
|
||
<em class="guilabel">DLL_Release</em>, and <em class="guilabel">DLL_Debug</em> build configurations
|
||
are supported.</p>
|
||
<p>The following are the compiler command lines and linker options
|
||
used. See <a class="reference external" href="http://msdn.microsoft.com/en-us/library/9s7c9wdw(v=vs.90).aspx">Compiling a C/C++ Program | Compiler Options</a> for a
|
||
detailed explanation of these options.</p>
|
||
<p id="apitest-lib-release"><em class="guilabel">LIB_Release</em> C/C++ <em class="guilabel">Command Line</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>/O2
|
||
/I "." /I "..\..\include" /I "..\..\include\leptonica"
|
||
/I "..\..\include\tesseract"
|
||
/D "WIN32" /D "_WINDOWS" /D "NDEBUG"
|
||
/D "USE_STD_NAMESPACE" /D "_MBCS"
|
||
/FD /EHsc /MD /Yc"stdafx.h"
|
||
/Fp"LIB_Release\baseapitester.pch" /Fo"LIB_Release\\"
|
||
/Fd"LIB_Release\vc90.pdb"
|
||
/W3 /nologo /c
|
||
/wd4244 /wd4305 /wd4018 /wd4267 /wd4996 /wd4800 /wd4005 /wd4355 /wd4099 /wd4566
|
||
/errorReport:prompt
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">LIB_Release</em> Linker <em class="guilabel">Additional Dependencies</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>ws2_32.lib
|
||
user32.lib
|
||
zlib$(ZLIB_VERSION)-static-mtdll.lib
|
||
libpng$(LIBPNG_VERSION)-static-mtdll.lib
|
||
libjpeg$(LIBJPEG_VERSION)-static-mtdll.lib
|
||
giflib$(GIFLIB_VERSION)-static-mtdll.lib
|
||
libtiff$(LIBTIFF_VERSION)-static-mtdll.lib
|
||
liblept$(LIBLEPT_VERSION)-static-mtdll.lib
|
||
libtesseract$(LIBTESS_VERSION)-static.lib
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">LIB_Debug</em> C/C++ <em class="guilabel">Command Line</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>/Od
|
||
/I "." /I "..\..\include" /I "..\..\include\leptonica"
|
||
/I "..\..\include\tesseract"
|
||
/D "WIN32" /D "_WINDOWS" /D "_DEBUG"
|
||
/D "USE_STD_NAMESPACE" /D "_MBCS"
|
||
/FD /EHsc /RTC1 /MDd /Yc"stdafx.h"
|
||
/Fp"LIB_Debug\baseapitesterd.pch" /Fo"LIB_Debug\\"
|
||
/Fd"LIB_Debug\vc90.pdb"
|
||
/W3 /nologo /c /Z7
|
||
/wd4244 /wd4305 /wd4018 /wd4267 /wd4996 /wd4800 /wd4005 /wd4355 /wd4099 /wd4566
|
||
/errorReport:prompt
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">LIB_Debug</em> Linker <em class="guilabel">Additional Dependencies</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>ws2_32.lib
|
||
user32.lib
|
||
zlib$(ZLIB_VERSION)-static-mtdll-debug.lib
|
||
libpng$(LIBPNG_VERSION)-static-mtdll-debug.lib
|
||
libjpeg$(LIBJPEG_VERSION)-static-mtdll-debug.lib
|
||
giflib$(GIFLIB_VERSION)-static-mtdll-debug.lib
|
||
libtiff$(LIBTIFF_VERSION)-static-mtdll-debug.lib
|
||
liblept$(LIBLEPT_VERSION)-static-mtdll-debug.lib
|
||
libtesseract$(LIBTESS_VERSION)-static-debug.lib
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">DLL_Release</em> C/C++ <em class="guilabel">Command Line</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>/O2
|
||
/I "." /I "..\..\include" /I "..\..\include\leptonica"
|
||
/I "..\..\include\tesseract"
|
||
/D "WIN32" /D "_WINDOWS" /D "NDEBUG"
|
||
/D "USE_STD_NAMESPACE" /D "_MBCS"
|
||
/D "TESSDLL_IMPORTS" /D "CCUTIL_IMPORTS" /D "LIBLEPT_IMPORTS"
|
||
/FD /EHsc /MD /Yc"stdafx.h"
|
||
/Fp"DLL_Release\baseapitester-dll.pch" /Fo"DLL_Release\\"
|
||
/Fd"DLL_Release\vc90.pdb"
|
||
/W3 /nologo /c
|
||
/wd4244 /wd4305 /wd4018 /wd4267 /wd4996 /wd4800 /wd4005 /wd4355 /wd4099 /wd4566
|
||
/errorReport:prompt
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">DLL_Release</em> Linker <em class="guilabel">Additional Dependencies</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>ws2_32.lib
|
||
user32.lib
|
||
liblept$(LIBLEPT_VERSION).lib
|
||
libtesseract$(LIBTESS_VERSION).lib
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">DLL_Debug</em> C/C++ <em class="guilabel">Command Line</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>/Od
|
||
/I "." /I "..\..\include" /I "..\..\include\leptonica"
|
||
/I "..\..\include\tesseract"
|
||
/D "WIN32" /D "_WINDOWS" /D "_DEBUG"
|
||
/D "USE_STD_NAMESPACE" /D "_MBCS"
|
||
/D "TESSDLL_IMPORTS" /D "CCUTIL_IMPORTS" /D "LIBLEPT_IMPORTS"
|
||
/FD /EHsc /RTC1 /MDd /Yc"stdafx.h"
|
||
/Fp"DLL_Debug\baseapitester-dlld.pch" /Fo"DLL_Debug\\"
|
||
/Fd"DLL_Debug\vc90.pdb"
|
||
/W3 /nologo /c /Z7
|
||
/wd4244 /wd4305 /wd4018 /wd4267 /wd4996 /wd4800 /wd4005 /wd4355 /wd4099 /wd4566
|
||
/errorReport:prompt
|
||
</pre></div>
|
||
</div>
|
||
<p><em class="guilabel">DLL_Debug</em> Linker <em class="guilabel">Additional Dependencies</em>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>ws2_32.lib
|
||
user32.lib
|
||
liblept$(LIBLEPT_VERSION)d.lib
|
||
libtesseract$(LIBTESS_VERSION)d.lib
|
||
</pre></div>
|
||
</div>
|
||
</div>
|
||
<div class="section" id="apiexamples">
|
||
<span id="id1"></span><h2>APIExamples<a class="headerlink" href="#apiexamples" title="Permalink to this headline">¶</a></h2>
|
||
<p><<<NEEDS WORK>>></p>
|
||
<p>Currently two Projects are in this solution:</p>
|
||
<ul>
|
||
<li><p class="first">preprocessing – Demonstrates how to use <strong>Leptonica</strong>’s image
|
||
processing functions to clean up images <em>before</em> calling
|
||
<tt class="docutils literal"><span class="pre">TessBaseAPI::SetImage()</span></tt>.</p>
|
||
</li>
|
||
<li><p class="first">getinfo – Demonstrates calling various <tt class="docutils literal"><span class="pre">TessBaseAPI</span></tt> methods to get
|
||
back information on the OCR process.</p>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="section" id="tesseractocr-preprocessor-definitions">
|
||
<h2><strong>Tesseract-OCR</strong> preprocessor definitions<a class="headerlink" href="#tesseractocr-preprocessor-definitions" title="Permalink to this headline">¶</a></h2>
|
||
<dl class="docutils">
|
||
<dt><tt class="docutils literal"><span class="pre">HAVE_CONFIG_H</span></tt></dt>
|
||
<dd><p class="first">Only defined when building under Linux. This causes the inclusion of
|
||
<span class="filesystem">config_auto.h</span>, which is only auto-generated during the <span class="filesystem">./configure</span>
|
||
process and thus <em>not</em> visible on Windows.</p>
|
||
<p class="last">This is what sets the <tt class="docutils literal"><span class="pre">VERSION</span></tt> macro (and lots of other
|
||
configuration related macros).</p>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">TESSDLL_EXPORTS</span></tt></dt>
|
||
<dd>Only used when <em>building</em> DLL versions of <span class="filesystem">libtesseract</span>.</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">TESSDLL_IMPORTS</span></tt></dt>
|
||
<dd><p class="first">Should be defined when building apps that link to a DLL version of
|
||
<span class="filesystem">libtesseract</span>. Used as follows in <span class="filesystem">baseapi.h</span>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>#ifdef TESSDLL_EXPORTS
|
||
#define TESSDLL_API __declspec(dllexport)
|
||
#elif defined(TESSDLL_IMPORTS)
|
||
#define TESSDLL_API __declspec(dllimport)
|
||
#else
|
||
#define TESSDLL_API
|
||
#endif
|
||
</pre></div>
|
||
</div>
|
||
<p class="last">If you don’t define this then you’ll get “undefined external symbol”
|
||
errors.</p>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">TESSDLL_API</span></tt></dt>
|
||
<dd>Used to mark classes for export (visibility) in DLL versions of
|
||
<span class="filesystem">libtesseract</span>. Currently <em>only</em> used with the <tt class="docutils literal"><span class="pre">TestBaseAPI</span></tt> class.</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">CCUTIL_EXPORTS</span></tt></dt>
|
||
<dd>Only used when <em>building</em> DLL versions of <span class="filesystem">libtesseract</span>.</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">CCUTIL_IMPORTS</span></tt></dt>
|
||
<dd><p class="first">Should be defined when building apps that link to a DLL version of
|
||
<span class="filesystem">libtesseract</span>. Used as follows in <span class="filesystem">strngs.h</span>:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>#ifdef CCUTIL_EXPORTS
|
||
#define CCUTIL_API __declspec(dllexport)
|
||
#elif defined(CCUTIL_IMPORTS)
|
||
#define CCUTIL_API __declspec(dllimport)
|
||
#else
|
||
#define CCUTIL_API
|
||
#endif
|
||
</pre></div>
|
||
</div>
|
||
<p class="last">If you don’t define this then you’ll get “undefined external symbol STRING”
|
||
errors.</p>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">LIBLEPT_IMPORTS</span></tt></dt>
|
||
<dd><p class="first">Should be defined when building apps that link to a DLL version of
|
||
<strong>Leptonica</strong>. Used as follows in environ.h:</p>
|
||
<div class="highlight-none"><div class="highlight"><pre>#if defined(LIBLEPT_EXPORTS) || defined(LEPTONLIB_EXPORTS)
|
||
#define LEPT_DLL __declspec(dllexport)
|
||
#elif defined(LIBLEPT_IMPORTS) || defined(LEPTONLIB_IMPORTS)
|
||
#define LEPT_DLL __declspec(dllimport)
|
||
#else
|
||
#define LEPT_DLL
|
||
#endif
|
||
</pre></div>
|
||
</div>
|
||
<p class="last">If you don’t define this then you’ll get “undefined external symbol”
|
||
errors.</p>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">USE_STD_NAMESPACE</span></tt></dt>
|
||
<dd><p class="first">Causes the following to be done:</p>
|
||
<div class="last highlight-none"><div class="highlight"><pre>#ifdef USE_STD_NAMESPACE
|
||
using std::string;
|
||
using std::vector;
|
||
#endif
|
||
</pre></div>
|
||
</div>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">_WIN32</span></tt></dt>
|
||
<dd><p class="first">Used to indicate that the build target is Windows 32-bit or
|
||
64-bit (<tt class="docutils literal"><span class="pre">WIN32</span></tt> and <tt class="docutils literal"><span class="pre">WINDOWS</span></tt> are also added by the New Project
|
||
Wizards).</p>
|
||
<p class="last">See <a class="reference external" href="http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.90).aspx">C/C+ Preprocessor Reference | The Preprocessor | Macros |
|
||
Predefined Macros</a> for
|
||
the complete list for Visual Studio 2008.</p>
|
||
</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">_MSC_VER</span></tt></dt>
|
||
<dd>Used to check specifically for building with the VC++ compiler (as
|
||
opposed to the MinGW gcc compiler).</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">_USRDLL</span></tt></dt>
|
||
<dd>Only defined when building the DLL versions of <span class="filesystem">libtesseract</span>.</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">_MBCS</span></tt></dt>
|
||
<dd>Automatically defined when <em class="guilabel">Configuration Properties |
|
||
General | Character Set</em> is set to <em class="guilabel">Use Multi-Byte
|
||
Character Set</em>.</dd>
|
||
<dt><tt class="docutils literal"><span class="pre">DLLSYM</span></tt></dt>
|
||
<dd><a class="reference external" href="http://groups.google.com/group/tesseract-dev/msg/5e0f7f7fab27b463">Obsolete</a>
|
||
and can be ignored.</dd>
|
||
</dl>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="sphinxsidebar">
|
||
<div class="sphinxsidebarwrapper">
|
||
|
||
|
||
<ul class="current">
|
||
<li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="setup.html">Setting up <strong>Tesseract-OCR</strong></a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="building.html">Building <strong>Tesseract-OCR</strong></a></li>
|
||
<li class="toctree-l1 current"><a class="current reference internal" href="">Programming with <span class="filesystem">libtesseract</span></a><ul>
|
||
<li class="toctree-l2"><a class="reference internal" href="#debugging-tips">Debugging Tips</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#apitest-sample">APITest Sample</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#apiexamples">APIExamples</a></li>
|
||
<li class="toctree-l2"><a class="reference internal" href="#tesseractocr-preprocessor-definitions"><strong>Tesseract-OCR</strong> preprocessor definitions</a></li>
|
||
</ul>
|
||
</li>
|
||
<li class="toctree-l1"><a class="reference internal" href="tools.html">Handy free tools</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="maintenance.html">Maintaining the VS2008 directory</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="vs2010-notes.html">Using Visual Studio 2010</a></li>
|
||
<li class="toctree-l1"><a class="reference internal" href="versions.html">Version Notes</a></li>
|
||
</ul>
|
||
|
||
|
||
<div id="searchbox" style="display: none">
|
||
<h3>Quick search</h3>
|
||
<form class="search" action="search.html" method="get">
|
||
<input type="text" name="q" />
|
||
<input type="submit" value="Go" />
|
||
<input type="hidden" name="check_keywords" value="yes" />
|
||
<input type="hidden" name="area" value="default" />
|
||
</form>
|
||
<p class="searchtip" style="font-size: 90%">
|
||
Enter search terms or a module, class or function name.
|
||
</p>
|
||
</div>
|
||
<script type="text/javascript">$('#searchbox').show(0);</script>
|
||
</div>
|
||
</div>
|
||
<div class="clearer"></div>
|
||
</div>
|
||
<div class="related">
|
||
<h3>Navigation</h3>
|
||
<ul>
|
||
<li class="right" style="margin-right: 10px">
|
||
<a href="tools.html" title="Handy free tools"
|
||
>next</a></li>
|
||
<li class="right" >
|
||
<a href="building.html" title="Building Tesseract-OCR"
|
||
>previous</a> |</li>
|
||
<li><a href="http://code.google.com/p/tesseract-ocr/">Tesseract-OCR Home</a> »</li>
|
||
|
||
<li><a href="index.html">Visual Studio 2008 Developer Notes</a> »</li>
|
||
|
||
</ul>
|
||
</div>
|
||
<div class="footer">
|
||
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
|
||
</div>
|
||
</body>
|
||
</html> |