OCR

State of the Art ist gewiss Abbyy Finereader, das bekommt man (für Windows) schon für 129,- EUR

Ich wollte aber erst einmal wissen, wie sich freie Software schlägt und habe google Tesseract ausprobiert.

google Tesseract

Windows

Man braucht:

  • tesseract-ocr-setup-3.02.02.exe

Als Administrator installieren, funktioniert „out-of-the-box“.

Linux

Man braucht:

Installation:

# cd /opt
# tar xf tesseract-ocr-3.02.02.tar.gz
# tar xf tesseract-ocr-3.02.eng.tar.gz
# tar xf tesseract-ocr-3.02.eng.tar.gz
# tar xf leptonica-1.70.tar.gz

Tesseract bauen:

# cd /opt/tesseract-ocr
# ./autogen.sh
# ./configure
# make
# make install
# ldconfig

Leptonica bauen:

# cd /opt/leptonica-1.70
# ./configure
# make
# make install
# ldconfig

Ich musste dann noch einige Dateien kopieren:

# cp tessdata/deu* /usr/local/share/tessdata/
# cp tessdata/eng* /usr/local/share/tessdata/

Nun konnte ich Tesseract benutzen und den Text des folgenden Bildes erfassen:

Vorlage

> tesseract <infile> <outfile> -l deu

Es entsteht ein Textfile mit dem Namen <outfile>.txt:

Marxismus-Leninismus und soziale Umgestaltung 87

studiert und dort angefangen, Lenin zu lesen, und zwar „Materialismus
und Empiriokritizismus.“ Ich las das auf dem Hintergrund des Anspruchs,
daß das eine philosophische Weltanschauung sei. Also wollte ich irgendein
philosophisches Buch lesen und weil der Titel so philosophisch klang, nahm
ich also dieses Buch und las es mit wachsender Verwunderung. Diese rührte
einmal daher, daß ich so Viel nicht Verstand, weil es da immer um irgendwelche
...

Leider gibt es auch schon bei diesem doch recht klaren Bild OCR-Fehler: …daß ich so Viel nicht Verstand, weil….

Um ein HTML-File zu erzeugen (dort werden auch die Positionen der Worte vermerkt, so dass auch relativ einfach ein ALTO-File daraus erzeugt werden kann), muss man noch eine Konfigurationsdatei anlegen, die nur eine Zeile enthält. Ich habe sie in meinem home-Verzeichnis angelegt und tesseract_config_hocr genannt:

> cd ~
> vi tesseract_config_hocr
     eingeben: tessedit_create_hocr T

Dann kann man:

> tesseract <infile> <outfile> -l deu ~/tesseract_config_hocr

und das ergibt eine Datei <outfile>.html, welche im Browser so aussieht:

Darstellung im Browser

Der Quelltext sieht so aus:

<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="en" lang="en">
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name='ocr-system' content='tesseract 3.02.02' />
    <meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word'/>
  </head>
  <body>
    <div class='ocr_carea' id='block_3_3' title="bbox 852 670 1901 707">
      <p class='ocr_par' dir='ltr' id='par_3' title="bbox 852 672 1901 706">
        <span class='ocr_line' id='line_83' title="bbox 852 672 1901 706"><span class='ocrx_word' id='word_83' title="bbox 852 672 1208 699">Marxismus-Leninismus</span> <span class='ocrx_word' id='word_84' title="bbox 1222 672 1279 699">und</span> <span class='ocrx_word' id='word_85' title="bbox 1293 672 1396 698">soziale</span> <span class='ocrx_word' id='word_86' title="bbox 1411 672 1620 706">Umgestaltung</span> <span class='ocrx_word' id='word_87' title="bbox 1867 672 1901 699">87</span> 
        </span>
      </p>
    </div>
    <div class='ocr_carea' id='block_4_4' title="bbox 569 738 1904 1610">
      <p class='ocr_par' dir='ltr' id='par_4' title="bbox 570 740 1903 1608">
        <span class='ocr_line' id='line_84' title="bbox 572 740 1901 778"><span class='ocrx_word' id='word_88' title="bbox 572 740 697 770">studiert</span> <span class='ocrx_word' id='word_89' title="bbox 722 740 784 770">und</span> <span class='ocrx_word' id='word_90' title="bbox 812 740 879 770">dort</span> <span class='ocrx_word' id='word_91' title="bbox 905 740 1107 778">angefangen,</span> <span class='ocrx_word' id='word_92' title="bbox 1135 740 1233 770">Lenin</span> <span class='ocrx_word' id='word_93' title="bbox 1259 750 1297 770">zu</span> <span class='ocrx_word' id='word_94' title="bbox 1325 740 1418 776">lesen,</span> <span class='ocrx_word' id='word_95' title="bbox 1446 740 1508 770">und</span> <span class='ocrx_word' id='word_96' title="bbox 1536 750 1617 770">zwar</span> <span class='ocrx_word' id='word_97' title="bbox 1643 740 1901 775">„Materialismus</span> 
        </span>
        <span class='ocr_line' id='line_85' title="bbox 570 789 1900 827"><span class='ocrx_word' id='word_98' title="bbox 570 789 632 819">und</span> <span class='ocrx_word' id='word_99' title="bbox 654 789 1006 827">Empiriokritizismus.“</span> <span class='ocrx_word' id='word_100' title="bbox 1029 789 1082 819">Ich</span> <span class='ocrx_word' id='word_101' title="bbox 1103 789 1147 819">las</span> <span class='ocrx_word' id='word_102' title="bbox 1169 789 1223 819">das</span> <span class='ocrx_word' id='word_103' title="bbox 1245 789 1302 819">auf</span> <span class='ocrx_word' id='word_104' title="bbox 1319 789 1390 819">dem</span> <span class='ocrx_word' id='word_105' title="bbox 1411 789 1615 827">Hintergrund</span> <span class='ocrx_word' id='word_106' title="bbox 1637 789 1690 819">des</span> <span class='ocrx_word' id='word_107' title="bbox 1711 789 1900 827">Anspruchs,</span> 
        </span>
        <span class='ocr_line' id='line_86' title="bbox 571 837 1902 875"><span class='ocrx_word' id='word_108' title="bbox 571 837 630 867">daß</span> <span class='ocrx_word' id='word_109' title="bbox 650 837 704 867">das</span> <span class='ocrx_word' id='word_110' title="bbox 725 837 792 867">eine</span> <span class='ocrx_word' id='word_111' title="bbox 811 837 1063 875">philosophische</span> <span class='ocrx_word' id='word_112' title="bbox 1083 837 1359 875">Weltanschauung</span> <span class='ocrx_word' id='word_113' title="bbox 1380 837 1433 867">sei.</span> <span class='ocrx_word' id='word_114' title="bbox 1453 837 1532 867">Also</span> <span class='ocrx_word' id='word_115' title="bbox 1551 837 1655 867">wollte</span> <span class='ocrx_word' id='word_116' title="bbox 1675 837 1726 867">ich</span> <span class='ocrx_word' id='word_117' title="bbox 1745 837 1902 875">irgendein</span> 
        </span>
...
      </p>
    </div>
  </body>
</html>

Wie man erkennen kann, sind alle Maße vorhanden (Pixel: x1, y1, x2, y2) und auch die Einteilung in Absätze und Zeilen. Den Anzeigefehler (fett hervorgehobene Worte) kann man leicht beheben, indem man alle <strong> und </strong> entfernt. Danach muss man natürlich 'echte' Fettschrift wieder auszeichnen. Korrigiert werden müsste auch: lang=„en“ in lang=„de“.

Erwartungsgemäß haben wir die gleichen OCR-Fehler wie bei der Ausgabe als Textfile: …daß ich so Viel nicht Verstand, weil….

Online