Forum: PC Hard- und Software gImageReader und Tesseract-OCR


von Leo K. P. (Firma: Solder Cooler Inc.) (leo_kp) Benutzerseite


Lesenswert?

'moin die Forumsiker,

tl;dr:  meine Frage ist wie komme ich an die Parameter ran, welche 
gImageReader bei der verwendung von Tesseract-OCR konkret einsetzt?


Hintergrund ist der Faden 
Beitrag "Knacknuss Text aus PDF extrahieren"

Nach dem zwar guten aber nicht perfekten Einstieg in Tesseract per CLI, 
habe ich auch mit gImageReader Versuche angestellt auch wenn dies von 
Hand per Maus zu bedienen ist.
Dabei habe ich freudig festgestellt dass dieser Weg 100% Erkennungsrate 
hinbekommt! (besser als wenn ich convert & tesseract auf der CLI selber 
anwerfe)

Also moechte ich nun von gImageReader lernen, WIE da tesseract verwendet 
wird, damit ich mir das automatisieren kann.
* Wie komme ich an die "Kommandozeilenparameter" ran welche gImageReader 
im Hintergrund verwendet?
* nur ueber den Quellcode von gImageReader?
* und wenn diese dynamisch an das konkret zum OCR-en vorgelegte "Bild" 
angepasst werden?

Mir ist bewusst dass es nicht nur am Aufruf von tesseract liegen wird, 
sondern auch an den Parameter fuer das rendern der Pixelwueste und ev. 
auch am eingesetzten spell-checking.

NB: bis ich herausfand dass gImageReader die Packete von hunspell 
benoetigt, vergingen ein paar Stunden Raetselraten denn gImageReaders 
Fehlermeldungen liefern kein brauchbarer Hinweis...

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

https://github.com/manisandro/gImageReader
da wäre die Entwicklerseite.

Ich habe es unter Ubuntu installiert und gelegentlich benutzt, aber noch 
nicht versucht irgendwelche Parameter zu verändern, wenn das überhaupt 
irgendwo möglich ist.
Mit der Einstellung für Frakturschrift konnte ich alte Texte (nicht ganz 
so gut) erkennen, in der Zeit wurde eben noch von Hand gesetzt. Aber 
kommerzielle Programme wie FineReader verlangen für diese Möglichkeit 
einen Haufen zusätzliches Geld.

von Leo K. P. (Firma: Solder Cooler Inc.) (leo_kp) Benutzerseite


Lesenswert?

> Ich habe es unter Ubuntu installiert und gelegentlich benutzt, aber noch
> nicht versucht irgendwelche Parameter zu verändern, wenn das überhaupt
> irgendwo möglich ist.

Ich habe keine Möglichkeit gefunden weder die Parameter einzusehen noch 
zu verändern.
Zudem will ich ja gar nicht verändern sondern eben von gImageReader 
lernen = von gImageReader seine Parameter (sein Ablauf) übernehmen .

von R. M. (Gast)


Angehängte Dateien:

Lesenswert?

Eine Möglichkeit:
Originale Programmdatei (/usr/bin/tesseract) umbenennen,
anhängenden Programmschnipsel kompilieren, das Kompilat, an die Stelle 
der originaldatei setzen;
der Schnipsel gibt nur die Aufrufparameter aus;
Alten Zustand wiederherstellen.

von Leo K. P. (Firma: Solder Cooler Inc.) (leo_kp) Benutzerseite


Lesenswert?

R. M. schrieb:
> Eine Möglichkeit:

ich sehe im Quellcode von gImageReader folgendes:
(Datei ".../gimagereader-3.1.2/gtk/src/Recognizer.cc")
1
    :
2
    307 bool Recognizer::recognizeImage(const Cairo::RefPtr<Cairo::ImageSurface> &img, OutputDestination dest)
3
    308 {
4
    309         tesseract::TessBaseAPI tess;
5
    310         if(!initTesseract(tess, m_curLang.prefix.c_str())){
6
    311                 Utils::message_dialog(Gtk::MESSAGE_ERROR, _("Recognition errors occurred"), _("Failed to initialize tesseract"));
7
    312                 return false;
8
    313         }
9
    314         Glib::ustring output;
10
    315         Utils::busyTask([&]{
11
    316                 tess.SetImage(img->get_data(), img->get_width(), img->get_height(), 4, 4 * img->get_width());
12
    317                 char* text = tess.GetUTF8Text();
13
    318                 output = text;
14
    319                 delete[] text;
15
    320                 return true;
16
    321         }, _("Recognizing..."));
17
    322         if(dest == OutputDestination::Buffer){
18
    323                 MAIN->getOutputManager()->addText(output, false);
19
    324         }else if(dest == OutputDestination::Clipboard){
20
    325                 Gtk::Clipboard::get()->set_text(output);
21
    326         }
22
    327         return true;
23
    328 }
24
    :

  also denke ich dass es nicht via externe Programme geht.
  Ist diese meine Annahme falsch?

  Gibt es eine andere Möglichkeit, Deinen Ansatz zu verfolgen (Aufruf 
von externen Programme zu protokollieren), als die vorhandene 
Systeminstallation (Lubuntu 16.04 LTS) zu verpfuschen, in dem Binaries 
ausgetauscht werden?

  JEDENFALLS Danke fuer's mitdenken!  :-)

von Dirk (Gast)


Lesenswert?

Hallo, es könnte auch sein das gImageReader das Bild selbst nochmal 
aufbereitet wie z.b. 300DPI, Blob-Detection, Spellchecker usw.

Vielmehr stellt sich mir die Frage, ob du das richtige Wörterbuch und 
Language File benutzt hast. Hast Du Tesseract mit LSM genommen oder 
3.04?
Hast Du falsch erkanten Buchstaben selbst nochmal nachgelernt?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.