Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Tesseract.dll unter Delphi einbinden (https://www.delphipraxis.net/173428-tesseract-dll-unter-delphi-einbinden.html)

Gravitar 24. Feb 2013 14:30

Tesseract.dll unter Delphi einbinden
 
Hi,

versuche gerade die libtesseract302.dll in Delphi einzubinden.

Über folgenden Code erfolgt (in einer eigenen Unit) die Einbindung:
Delphi-Quellcode:
procedure LoadTessDLL;
begin
  if TessDLLLoaded then Exit;
  ErrorMode := SetErrorMode($8000{SEM_NoOpenFileErrorBox});
  DLLHandle := LoadLibrary('libtesseract302.dll');
  if DLLHandle >= 32 then
  begin
    TessDLLLoaded := True;
    SaveExit := ExitProc;
    ExitProc := @NewExit;
//    @TessDllAPI := GetProcAddress(DLLHandle,'TessDllAPI');
//    Assert(@TessDllAPI <> nil);

    @TessDllBeginPage := GetProcAddress(DLLHandle,'TessDllBeginPage');
    Assert(@TessDllBeginPage <> nil);
Das Laden scheint zu funktionieren (jedenfalls, nachdem ich noch die liblept168.dll von Leptonia in das gleiche Verzeichnis kopiert habe).

Leider crasht das Programm bei dem Assert(@TessDllBeginPage)

Scheinbar liegt hier ein falscher Funktionsname bzw. Definition in der Procedure vor. Aber wie komme ich an die korrekten Funktionsnamen inkl. Parameter dieser DLL heran?

Habe mich auf google/code schon einen Wolf gesucht.

Hat jemand dieses Problem schon für Delphi gelöst?

lbccaleb 24. Feb 2013 14:42

AW: Tesseract.dll unter Delphi einbinden
 
Naja du solltest vllt. schon ein bisschen mehr über die besagte dll Preisgeben. Damit die Leute auch wissen, wozu diese ist. Ich zB. weiß das nicht. Aber da bin ich vllt. ja auch der Einzige :lol:


Naja auf die schnelle jedenfalls, habe ich das finden können:

http://code.google.com/p/tesseract-o.../detail?id=362


auf der Seite scheint es ne Menge um die besagte API zu geben. Ohne zu wissen vozu die überhaupt ist, kann man natürlich wenig dazu sagen ;)

vagtler 24. Feb 2013 15:17

AW: Tesseract.dll unter Delphi einbinden
 
Zitat:

Zitat von lbccaleb (Beitrag 1204924)
Naja du solltest vllt. schon ein bisschen mehr über die besagte dll Preisgeben. Damit die Leute auch wissen, wozu diese ist. Ich zB. weiß das nicht. Aber da bin ich vllt. ja auch der Einzige :lol: [...]

Tatsächlich hat Tesseract in den letzten mittlerweile 28(!) Jahren einen gewissen Bekanntheitsgrad erreicht, so dass es sogar in der deutschsprachigen Wikipedia zu einem Eintrag gereicht hat: http://de.wikipedia.org/wiki/Tesseract_(Software)

Gravitar 25. Feb 2013 09:48

AW: Tesseract.dll unter Delphi einbinden
 
Zitat:

Zitat von lbccaleb (Beitrag 1204924)
Naja auf die schnelle jedenfalls, habe ich das finden können:

http://code.google.com/p/tesseract-o.../detail?id=362


auf der Seite scheint es ne Menge um die besagte API zu geben. Ohne zu wissen vozu die überhaupt ist, kann man natürlich wenig dazu sagen ;)

Puh :gruebel:, irgendwie scheint es so zu sein, dass Tesseract (übrigens eine OCR-Engine) ab 3.0 keine C-DLL liefert sondern auf C++ umgestiegen ist und die DLL mit Klassen arbeitet. Damit ist die Nutzung der DLL aus Delphi nicht mehr möglich (Stichwort name mangling). Dies gilt aber auch für Java, Phyton usw.

Scheinbar gibt es Diskussionen einen C-Wrapper um die C++-DLL zu legen, der dann wieder Standard-C-Funktionen bereitstellt. Aber so richtig schlau bin ich nicht draus geworden, ob das jemand jetzt macht oder nicht, wo diese DLL dann zu besorgen ist usw.

Vermutlich ist es deutlich einfacher über die Kommandozeile mit Tesseract zu kommunizieren (ShellExecute) und einfach die einzelnen JPGs als Datei zu übergeben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz