Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TesseractOCR (https://www.delphipraxis.net/217405-tesseractocr.html)

Hobbycoder 24. Jun 2025 11:27

TesseractOCR
 
Nutzt jemand TesseractOCR? Und kann mir weiterhelfen?

Ich finde da diverse Quellen auf Github. Ist das noch Zeitgemäß? Welche soll man nehmen?
Ich habe auch noch https://github.com/amancini/TTesseractOCR5 gefunden. Jedoch zumindest bei mir hab ich das noch nicht vernüftig zum Laufen bekommen.
Es gibt da Unklarheiten mit den notwendigen DLL's, bzw. mit den diversen Versionen.

Gibt es da evtuell andere (free oder günstig) Möglichkeiten zur Texterkennung (in meinem Fall aus Images).

Rollo62 24. Jun 2025 12:28

AW: TesseractOCR
 
Mein Vorschlag wäre, installier Dir Pdf24, darunter gibt es Tesseract, was hervorragend funktioniert.
So musst Du nur ein einfaches Setup installieren und hast jede Menge Mehrwert plus OCR. :stupid:

Hobbycoder 24. Jun 2025 12:48

AW: TesseractOCR
 
Zitat:

Zitat von Rollo62 (Beitrag 1549662)
Mein Vorschlag wäre, installier Dir Pdf24, darunter gibt es Tesseract, was hervorragend funktioniert.
So musst Du nur ein einfaches Setup installieren und hast jede Menge Mehrwert plus OCR. :stupid:

und welche Github-Repository benutzt du?
Bei meiner schlägt's schon beim tesseract:=TTesseractOCR4.Create; in die Bresche. Und ich hab keine Ahnung was da fehlt.
Laut madExcept hier:
Delphi-Quellcode:
constructor TTesseractOCR4.Create;
begin
  if (hTesseractLib = 0) then
    raise Exception.Create('Tesseract library is not loaded');
  FTessBaseAPI := TessBaseAPICreate();                       //<----- Hier
  FPageLayout := TTesseractPageLayout.Create(FTessBaseAPI);
end;
was mich zur tesseractocr.capi bringt:
Delphi-Quellcode:
  TfnTessBaseAPICreate = function: TessBaseAPI; cdecl;
Was ja irgendein Aufruf in einer Dll sein dürfte. Doch da komm ich nicht weiter.

Hab auch die DLL's alle gelöscht und mir mal PDF24 installiert.

hanvas 24. Jun 2025 13:07

AW: TesseractOCR
 
Zitat:

Zitat von Hobbycoder (Beitrag 1549661)
Nutzt jemand TesseractOCR? Und kann mir weiterhelfen?

Ich finde da diverse Quellen auf Github. Ist das noch Zeitgemäß? Welche soll man nehmen?
Ich habe auch noch https://github.com/amancini/TTesseractOCR5 gefunden. Jedoch zumindest bei mir hab ich das noch nicht vernüftig zum Laufen bekommen.
Es gibt da Unklarheiten mit den notwendigen DLL's, bzw. mit den diversen Versionen.

Gibt es da evtuell andere (free oder günstig) Möglichkeiten zur Texterkennung (in meinem Fall aus Images).

Du musst natürlich Tesseract in der richtigen Version installiert haben. Die verschiedenen Versionen findest du als Binaries unter https://github.com/UB-Mannheim/tesseract/wiki mit dem von Dir verwendeten Bindings dementsprechend Version 5. Den Pfad zur Tesseract Installation mit der Datei libtesseract must du wahrscheinlich mit der Funktion InitTesseractLib(const aDllPath:String) in der Unit tesseractocr.capi.pas angeben.

ImageEN bzw. IEVision für ImageEn verwendet ebenfalls Tesseract, ist aber komerziell.

hth Ha-Joe

hanvas 24. Jun 2025 13:09

AW: TesseractOCR
 
Zitat:

Zitat von Hobbycoder (Beitrag 1549661)
Nutzt jemand TesseractOCR? Und kann mir weiterhelfen?

Als Alternative kannst Du auch Apache TIKA auf der Komandozeile oder als Rest Service verwenden. Apache Tika bindet intern ebenfalls Tesseract ein, kann aber auch noch eine ganze Menge mehr.

cu Ha Joe

Hobbycoder 24. Jun 2025 13:55

AW: TesseractOCR
 
Zitat:

Zitat von hanvas (Beitrag 1549664)
Du musst natürlich Tesseract in der richtigen Version installiert haben. Die verschiedenen Versionen findest du als Binaries unter https://github.com/UB-Mannheim/tesseract/wiki mit dem von Dir verwendeten Bindings dementsprechend Version 5. Den Pfad zur Tesseract Installation mit der Datei libtesseract must du wahrscheinlich mit der Funktion InitTesseractLib(const aDllPath:String) in der Unit tesseractocr.capi.pas angeben.

Das ist ja das Problem. Bei UB-Mannheim gibt's ja jede Menge Versionen. Da mein Programm 32-Bit hat benötige ich die 32-Bit-Tresseractversion. Aber in den Repositories zu den Delphiwrappern finde ich nicht wirklich einen Hinweiß, welche Version ich von UB-Mannheim denn nehmen soll. Teilweise sind die Repositories ja auch schon mehrere Jahre alt. Ich nehme auch mal an, dass sich in den Version von UB-Mannheim ja auch die DLL-Version verändern, so dass es dann zu o.g. Fehler kommen kann.

Der schöne Günther 24. Jun 2025 14:14

AW: TesseractOCR
 
Zitat:

Zitat von hanvas (Beitrag 1549665)
Apache Tika bindet intern ebenfalls Tesseract ein

Gibt es sowas fertig zum doppelklicken oder muss man sich das noch zusammenpuzzeln?

Rollo62 24. Jun 2025 17:03

AW: TesseractOCR
 
Zitat:

Zitat von Hobbycoder (Beitrag 1549663)
Zitat:

Zitat von Rollo62 (Beitrag 1549662)
Mein Vorschlag wäre, installier Dir Pdf24, darunter gibt es Tesseract, was hervorragend funktioniert.
So musst Du nur ein einfaches Setup installieren und hast jede Menge Mehrwert plus OCR. :stupid:

und welche Github-Repository benutzt du?

Ja stimmt, sorry, ich habe gerade nochmal nachgeschaut, nutze die doch nicht direkt, sondern über das PDF24-OCR.exe :oops:
Funktioniert aber super bei mir out-of-the-box, wenn es nur um das OCR'en geht.

Delphi-Quellcode:
@echo off

set path_caller=%~dp0
set par_in=%1

REM Ignore and remove the known file extension from the path
set "file_in_plain=%1"

REM Check, ob die Datei eine bekannte Endung hat
for %%E in (.pdf .jpg .png) do (
    if /i "%file_in_plain:~-4%"=="%%E" (
        set "file_in_plain=%file_in_plain:~0,-4%"
    )
)

set file_in=%file_in_plain%.pdf
set file_out=%file_in_plain%_ocred.pdf

set path_pdf24=C:\Program Files\PDF24\
set pdf24_ocr="%path_pdf24%pdf24-Ocr.exe"

echo .
echo . Input   %1
echo . Input = %file_in%
echo . Output = %file_out%
echo .
echo . OCR the %file_in% to %file_out%
echo .

pause

rem pdf24-Ocr.exe.lnk
rem "pdf24-Ocr.exe.lnk" -outputFile "sichtkopie188806433_Test001_V05_ocred.pdf" -dpi 300 -deskew -autoRotatePages "sichtkopie188806433_Test001_V05.pdf "


%pdf24_ocr% -outputFile "%path_caller%%file_out%" -dpi 300 -deskew -autoRotatePages "%path_caller%%file_in%"

Ansonsten habe ich viele Versuche mit Python tesseract eingebunden, da gibt es verschiedene Ansätze, das ist aber viel mehr gefrickel, nur um eine Datei zu OCR'en.
Die scheinen mehr oder weniger alle auf UB Mannheim Tesseract zu basieren.
https://github.com/UB-Mannheim/Tesseract

Dann würde ich aber doch lieber gleich aud Docling umsteigen
https://pypi.org/project/docling/
Das lässt Dir über Python alle Möglichkeiten, bietet aber gleichzeitig auch eine CLI als "Kommandozeile" und kann außer verschiedenen OCR noch viel viel mehr.

Hobbycoder 24. Jun 2025 21:13

AW: TesseractOCR
 
Zitat:

Zitat von Rollo62 (Beitrag 1549683)
Danke

Zwischendurch hab ich noch das hier:
https://ocr.space/OCRAPI
gefunden.
Funktioniert gut, kann jedoch in der Free-Variante keine Files > 1 MB übertragen, dazu kommt die Laufzeit, und dass sie in der Free keine 24/7-Funktionalität garantieren.
Und, auch wenn sie schreiben, dass sie nichts speichern, so möchte ich doch ungern möglicherweise mal kritische Daten durchs Internet jagen.

hanvas 25. Jun 2025 00:11

AW: TesseractOCR
 
Zitat:

Zitat von Hobbycoder (Beitrag 1549667)
Das ist ja das Problem. Bei UB-Mannheim gibt's ja jede Menge Versionen. Da mein Programm 32-Bit hat benötige ich die 32-Bit-Tresseractversion. Aber in den Repositories zu den Delphiwrappern finde ich nicht wirklich einen Hinweiß, welche Version ich von UB-Mannheim denn nehmen soll. Teilweise sind die Repositories ja auch schon mehrere Jahre alt. Ich nehme auch mal an, dass sich in den Version von UB-Mannheim ja auch die DLL-Version verändern, so dass es dann zu o.g. Fehler kommen kann.

Bei dem ersten von Dir genannten Repositary https://github.com/amancini/TTesseractOCR5 sollte eigentlich https://digi.bib.uni-mannheim.de/tes...0.20190526.exe funktionieren. Eigentlich sollte auch jede spätere Version funktionieren soweit es keine breaking changes gab, aber für die neuesten Versionen gibt es keine 32 Bit Version. Für https://github.com/r1me/TTesseractOCR4 brauchst Du die Version 4. In einem weiteren Posting hast Du geschrieben :


Zitat:

constructor TTesseractOCR4.Create;
begin
if (hTesseractLib = 0) then
raise Exception.Create('Tesseract library is not loaded');
FTessBaseAPI := TessBaseAPICreate(); //<----- Hier
FPageLayout := TTesseractPageLayout.Create(FTessBaseAPI);
end;
Was mich verwundert zurücklässt. Denn mit dem Repositary https://github.com/amancini/TTesseractOCR5 sollte es diese Constructor nicht geben bzw. er sollte TTesseractOCR5 heißen.

cu Ha-Jo


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 1 von 2  1 2      

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