gImageReader und Tesseract-OCR

OP (Firma: Solder Cooler Inc.) Persönliche Seite #5330187
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...
#5330358
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.
OP (Firma: Solder Cooler Inc.) Persönliche Seite #5330436
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 .
Gast #5330460
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.
Angehängte Dateien:
OP (Firma: Solder Cooler Inc.) Persönliche Seite #5330528
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!  :-)
Gast #5332049
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren