mirror of
https://github.com/tesseract-ocr/tesseract.git
synced 2024-12-05 02:47:00 +08:00
da121f013c
git-svn-id: https://tesseract-ocr.googlecode.com/svn/trunk@681 d0cd1f9f-072b-0410-8dd7-cf729c803f20
309 lines
19 KiB
HTML
309 lines
19 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>Handy free tools — 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="Maintaining the VS2008 directory" href="maintenance.html" />
|
|
<link rel="prev" title="Programming with libtesseract" href="programming.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="maintenance.html" title="Maintaining the VS2008 directory"
|
|
accesskey="N">next</a></li>
|
|
<li class="right" >
|
|
<a href="programming.html" title="Programming with libtesseract"
|
|
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="handy-free-tools">
|
|
<h1>Handy free tools<a class="headerlink" href="#handy-free-tools" title="Permalink to this headline">¶</a></h1>
|
|
<div class="section" id="id1">
|
|
<h2><a class="reference external" href="http://tortoisesvn.net/">TortoiseSVN</a><a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h2>
|
|
<p>The <strong>Tesseract-OCR</strong> source lives in an SVN repository at <a class="reference external" href="http://code.google.com/p/tesseract-ocr/source/checkout">Google Code</a>, so to
|
|
<a class="reference internal" href="setup.html#using-latest-sources"><em>build the latest versions</em></a> you’ll need to
|
|
know SVN. For newcomers (or not), TortoiseSVN (<a class="reference external" href="http://tortoisesvn.net/">http://tortoisesvn.net/</a>)
|
|
is a great alternative to the SVN command line interface.</p>
|
|
<p>“TortoiseSVN is an easy-to-use SCM / source control software for
|
|
Microsoft Windows and possibly the best standalone Apache Subversion
|
|
client there is. It is implemented as a Windows shell extension, which
|
|
makes it integrate seamlessly into the Windows explorer. Since it’s not
|
|
an integration for a specific IDE you can use it with whatever
|
|
development tools you like.”</p>
|
|
</div>
|
|
<div class="section" id="id2">
|
|
<h2><a class="reference external" href="http://jpsoft.com/tccle_cmd_replacement.html">JP Software TCC/LE</a><a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
|
|
<p>Instead of using Windows’ plain old Command Prompt window — and less
|
|
intimidating than using the bash shell from <a class="reference external" href="http://cygwin.com/">cygwin</a> or <a class="reference external" href="http://mingw.org/wiki/msys">MSYS</a> — the
|
|
“TCC/LE - Windows CMD Replacement Command Console” by JP Software is
|
|
definitely worth trying. It is available at
|
|
<a class="reference external" href="http://jpsoft.com/tccle_cmd_replacement.html">http://jpsoft.com/tccle_cmd_replacement.html</a>.</p>
|
|
<p>For example, to look for all the settable options in <strong>Tesseract-OCR</strong>,
|
|
try:</p>
|
|
<div class="highlight-none"><div class="highlight"><pre>C:\BuildFolder\tesseract-3.02\
|
|
ffind /s/v/c/t"_MEMBER" *.cpp | list/s
|
|
</pre></div>
|
|
</div>
|
|
<p>and you’ll get something that looks like this in the <span class="filesystem">list</span> viewer:</p>
|
|
<div class="highlight-none"><div class="highlight"><pre>---- C:\BuildFolder\tesseract-3.02\ccmain\tesseractclass.cpp
|
|
: BOOL_MEMBER(tessedit_resegment_from_boxes, false,
|
|
BOOL_MEMBER(tessedit_resegment_from_line_boxes, false,
|
|
BOOL_MEMBER(tessedit_train_from_boxes, false,
|
|
BOOL_MEMBER(tessedit_make_boxes_from_boxes, false,
|
|
BOOL_MEMBER(tessedit_dump_pageseg_images, false,
|
|
...
|
|
double_MEMBER(segsearch_max_char_wh_ratio, 2.0,
|
|
double_MEMBER(segsearch_max_fixed_pitch_char_wh_ratio, 2.0,
|
|
BOOL_MEMBER(save_alt_choices, false,
|
|
|
|
413 lines in 7 files
|
|
</pre></div>
|
|
</div>
|
|
<p>(Press the <tt class="kbd docutils literal"><span class="pre">Escape</span></tt> key to exit the <span class="filesystem">list</span> viewer).</p>
|
|
<p>The equivalent(?) Linux incantation, copied and slightly modified from
|
|
the grep info, is:</p>
|
|
<div class="highlight-none"><div class="highlight"><pre>find . -name '*.cpp' -print0 | xargs -0r grep -H '_MEMBER' | less
|
|
</pre></div>
|
|
</div>
|
|
<p>Note: You can also do this directly in Visual Studio 2008, by choosing
|
|
<em class="menuselection"><span class="accelerator">E</span>dit ‣ <span class="accelerator">F</span>ind and Replace ‣ F<span class="accelerator">i</span>nd in Files</em>
|
|
(<tt class="kbd docutils literal"><span class="pre">Ctrl+Shift+F</span></tt>), so maybe this wasn’t the best example:</p>
|
|
<img alt="Visual Studio 2008 Find in Files Dialog" class="align-center" src="_images/find_in_files.png" />
|
|
</div>
|
|
<div class="section" id="id4">
|
|
<h2><a class="reference external" href="http://cygwin.com/">Cygwin</a><a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
|
|
<p>“<a class="reference external" href="http://cygwin.com/">Cygwin</a> is a collection of tools which provide a
|
|
Linux look and feel environment for Windows.”</p>
|
|
<p><strong>Leptonica</strong> actually still requires a few unix utilities (like <span class="filesystem">rm</span>,
|
|
<span class="filesystem">diff</span>, <span class="filesystem">sleep</span>) for some operations and might silently fail if it they
|
|
not present (as of v1.68). The easiest way to deal with this is to
|
|
<a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/vs2008/installing-cygwin.html">install Cygwin</a>
|
|
or MSYS (see the next section).</p>
|
|
</div>
|
|
<div class="section" id="id7">
|
|
<h2><a class="reference external" href="http://mingw.org/wiki/msys">MSYS</a><a class="headerlink" href="#id7" title="Permalink to this headline">¶</a></h2>
|
|
<p>“<a class="reference external" href="http://mingw.org/wiki/msys">MSYS</a> is a collection of GNU utilities
|
|
such as bash, make, gawk and grep to allow building of applications and
|
|
programs which depend on traditionally UNIX tools to be present. It is
|
|
intended to supplement MinGW and the deficiencies of the cmd shell.”</p>
|
|
</div>
|
|
<div class="section" id="windiff">
|
|
<h2>WinDiff<a class="headerlink" href="#windiff" title="Permalink to this headline">¶</a></h2>
|
|
<p>An important phase of testing <span class="filesystem">tesseract</span> is checking how its output
|
|
compares to previous runs (or ground-truth files). A visual diff program
|
|
can make that easier.</p>
|
|
<p>Microsoft’s WinDiff doesn’t seem to come with Visual Studio
|
|
anymore. However it can still be downloaded from <a class="reference external" href="http://www.grigsoft.com/download-windiff.htm">Grig Software</a> (without having to get
|
|
all the other stuff in the <a class="reference external" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=18546">Windows XP Service Pack 2 Support Tools</a>.</p>
|
|
<p>Other options are <a class="reference external" href="http://kdiff3.sourceforge.net/">KDiff3</a> and
|
|
<a class="reference external" href="http://www.prestosoft.com/edp_examdiff.asp">ExamDiff</a> (<a class="reference external" href="http://www.prestosoft.com/edp_examdiffpro.asp">ExamDiff Pro</a> is also recommended
|
|
but it’s not free).</p>
|
|
<p>KDiff3 doesn’t seem to correctly auto-detect UTF-8 encodings so choose
|
|
<em class="menuselection"><span class="accelerator">S</span>ettings ‣ <span class="accelerator">C</span>onfigure KDiff3...</em> from the menubar and
|
|
set the <em class="guilabel">Regional Settings</em> tab as follows:</p>
|
|
<img alt="KDiff3 Regional Settings" class="align-center" src="_images/kdif3_settings.png" />
|
|
<p>Also on the <em class="guilabel">Integration</em> tab, make sure that <em class="guilabel">Quit
|
|
also via Escape key</em> is turned on (checked). Since IrfanView also quits
|
|
when you press the <tt class="kbd docutils literal"><span class="pre">Esc</span></tt> key, this just makes it easy to dismiss
|
|
both applications with the same key.</p>
|
|
<p>Here is KDiff3 showing the (slight) difference in OCR results after
|
|
deskewing a grayscale image:</p>
|
|
<div class="figure align-center">
|
|
<a class="reference external image-reference" href="_images/sample_diff.png"><img alt="Diff in OCR after deskewing image" src="_images/sample_diff.png" style="height: 512px;" /></a>
|
|
<p class="caption"><a class="reference external" href="_images/sample_diff.png">Click for larger image</a></p>
|
|
</div>
|
|
</div>
|
|
<div class="section" id="id9">
|
|
<h2><a class="reference external" href="http://www.irfanview.com/">IrfanView</a><a class="headerlink" href="#id9" title="Permalink to this headline">¶</a></h2>
|
|
<p>You need some program to view the images you are trying to OCR and since
|
|
<strong>Leptonica</strong> uses IrfanView (<a class="reference external" href="http://www.irfanview.com/">http://www.irfanview.com/</a>) to <a class="reference external" href="http://tpgit.github.com/UnOfficialLeptDocs/vs2008/installing-irfanview.html">automatically
|
|
display images</a>,
|
|
you might as well use it also.</p>
|
|
<p>“IrfanView is a very fast, small, compact and innovative FREEWARE (for
|
|
non-commercial use) graphic viewer for Windows 9x, ME, NT, 2000, XP,
|
|
Vista, Windows 7.”</p>
|
|
<p>Pressing the <tt class="kbd docutils literal"><span class="pre">I</span></tt> key while viewing an image with IrfanView, will
|
|
bring up a dialog box that shows most of its important properties (like
|
|
bits/pixel and DPI).</p>
|
|
</div>
|
|
<div class="section" id="id10">
|
|
<h2><a class="reference external" href="http://www.awaresystems.be/imaging/tiff/astifftagviewer.html">Aware Systems AsTiffTagViewer</a><a class="headerlink" href="#id10" title="Permalink to this headline">¶</a></h2>
|
|
<p>This utility, available at
|
|
<a class="reference external" href="http://www.awaresystems.be/imaging/tiff/astifftagviewer.html">http://www.awaresystems.be/imaging/tiff/astifftagviewer.html</a>, let’s you
|
|
easily determine TIFF image file properties.</p>
|
|
<p>“Whenever a customer reports your software doesn’t handle this or that
|
|
particular TIFF, use AsTiffTagViewer and discover why.”</p>
|
|
</div>
|
|
<div class="section" id="id11">
|
|
<h2><a class="reference external" href="http://dependencywalker.com/">Dependency Walker</a><a class="headerlink" href="#id11" title="Permalink to this headline">¶</a></h2>
|
|
<p>If you’re having problems with missing module runtime errors, the
|
|
Dependency Walker (<a class="reference external" href="http://dependencywalker.com/">http://dependencywalker.com/</a>) usually can help track
|
|
down the problem.</p>
|
|
<p>“Dependency Walker is also very useful for troubleshooting system errors
|
|
related to loading and executing modules. Dependency Walker detects many
|
|
common application problems such as missing modules, invalid modules,
|
|
import/export mismatches, circular dependency errors, mismatched machine
|
|
types of modules, and module initialization failures.”</p>
|
|
<p>You probably want the 32-bit version even if you are running on a
|
|
Windows 64-bit platform, because the current VS2008 Solution for
|
|
<strong>Tesseract-OCR</strong> by default builds a 32-bit app. From the <a class="reference external" href="http://dependencywalker.com/faq.html">FAQ</a></p>
|
|
<blockquote>
|
|
<div>“There are 32-bit and 64-bit versions Dependency Walker. All versions
|
|
are capable or opening 32-bit and 64-bit modules. However, there are
|
|
major advantages to using the 32-bit Dependency Walker to process 32-bit
|
|
modules and the 64-bit Dependency Walker to process 64-bit modules.
|
|
This is especially true when running on a 64-bit version of Windows,
|
|
which allows execution of both 32-bit and 64-bit programs. The 32-bit
|
|
subsystem on 64-bit Windows (known as “WOW64”) has its own private
|
|
registry, “AppPaths”, “KnownDlls”, system folders, and manifest
|
|
processing. Only the 32-bit version of Dependency Walker can access
|
|
this 32-bit environment, which is needed to accurately process a 32-bit
|
|
module. Likewise, only the 64-bit version of Dependency Walker can
|
|
fully access the 64-bit environment, so it should always be used for
|
|
processing 64-bit modules.”</div></blockquote>
|
|
<div class="figure align-center">
|
|
<a class="reference external image-reference" href="_images/dependency_walker.png"><img alt="Dependency Walker view of tesseract-dlld.exe" src="_images/dependency_walker.png" style="height: 640px;" /></a>
|
|
<p class="caption"><a class="reference external" href="_images/dependency_walker.png">Click for larger image</a></p>
|
|
</div>
|
|
<p>The above image shows Dependency Walker used on
|
|
<span class="filesystem">tesseract-dlld.exe</span>. The panes show the <span class="filesystem">DLL</span>s that it is dependent
|
|
on, the methods it actually uses from <span class="filesystem">libtesseract302d.dll</span>, and all
|
|
the exported methods from <span class="filesystem">libtesseract302d.dll</span>. Using this it’s easy
|
|
to see that only the <tt class="docutils literal"><span class="pre">TessBaseAPI</span></tt> and <tt class="docutils literal"><span class="pre">STRING</span></tt> classes are exported
|
|
as mentioned in <a class="reference internal" href="programming.html"><em>Programming with libtesseract</em></a>.</p>
|
|
</div>
|
|
<div class="section" id="id12">
|
|
<h2><a class="reference external" href="http://technet.microsoft.com/en-us/sysinternals/bb896653">Sysinternals Process Explorer</a><a class="headerlink" href="#id12" title="Permalink to this headline">¶</a></h2>
|
|
<p>Another essential program to help figure out what your program is doing
|
|
is Process Explorer
|
|
(<a class="reference external" href="http://technet.microsoft.com/en-us/sysinternals/bb896653">http://technet.microsoft.com/en-us/sysinternals/bb896653</a>).</p>
|
|
<p>“The unique capabilities of Process Explorer make it useful for tracking
|
|
down DLL-version problems or handle leaks, and provide insight into the
|
|
way Windows and applications work.”</p>
|
|
</div>
|
|
<div class="section" id="id13">
|
|
<h2><a class="reference external" href="http://www.vmware.com/products/player/">VMware Player</a><a class="headerlink" href="#id13" title="Permalink to this headline">¶</a></h2>
|
|
<p>VMware Player (<a class="reference external" href="http://www.vmware.com/products/player/">http://www.vmware.com/products/player/</a>) can be used to
|
|
install, for example, <a class="reference external" href="http://www.ubuntu.com/">Ubuntu 11.10</a> in a
|
|
virtual machine on Windows and see how the other half lives. It also
|
|
helps when trying to figure out if the Windows version of <span class="filesystem">tesseract</span>
|
|
acts the same way as the “original” version.</p>
|
|
<p>“VMware Player is the easiest way to run multiple operating systems at
|
|
the same time on your PC. With its user-friendly interface, VMware
|
|
Player makes it effortless for anyone to try out Windows 8 developer
|
|
release, Windows 7, Chrome OS or the latest Linux releases, or create
|
|
isolated virtual machines to safely test new software and surf the Web.”</p>
|
|
</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"><a class="reference internal" href="programming.html">Programming with <span class="filesystem">libtesseract</span></a></li>
|
|
<li class="toctree-l1 current"><a class="current reference internal" href="">Handy free tools</a><ul>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id1">TortoiseSVN</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id2">JP Software TCC/LE</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id4">Cygwin</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id7">MSYS</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#windiff">WinDiff</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id9">IrfanView</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id10">Aware Systems AsTiffTagViewer</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id11">Dependency Walker</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id12">Sysinternals Process Explorer</a></li>
|
|
<li class="toctree-l2"><a class="reference internal" href="#id13">VMware Player</a></li>
|
|
</ul>
|
|
</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="maintenance.html" title="Maintaining the VS2008 directory"
|
|
>next</a></li>
|
|
<li class="right" >
|
|
<a href="programming.html" title="Programming with libtesseract"
|
|
>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> |