Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PDF .. Text extrahieren (https://www.delphipraxis.net/191782-pdf-text-extrahieren.html)

erich.wanker 18. Feb 2017 13:40

PDF .. Text extrahieren
 
Hallo Leute...
nach stundenlanger Suche :-( bin ich leider immer noch nicht sicher, was ich verwenden kann und soll ...

Problemstellung:
Man kann in meiner Software PDF´s hinterlegen .. Jetzt suche ich einen günstigen Weg, wie ich an den Text der PDF´s gelange...


Ich hab 2 verschiedene PDF-Files
  • "normaler Text" im PDF eingebettet ...
  • Text als Bild -> benötigt also OCR ...

Ich bräuchte eine Art Batch-Stapelverarbeitung - die mir aus automatisch aus den 2 möglichen PDF-Typen ein TEXT-File generiert..

Pseudocode: extrahiere("c:\mein.pdf","C:\das_textfile.txt");


kostenpflichtige Online Service möchte ich wenn möglich nicht verwenden ...
Genausowenig wie "Adobe Acrobat Pro" ;-)

Hat jemand einen Rat?

Vielen Dank
Erich

haentschman 18. Feb 2017 14:47

AW: PDF .. Text extrahieren
 
Moin... :P
Zitat:

Jetzt suche ich einen günstigen Weg
https://www.gnostice.com/PDFtoolkit_...?show=overview
Es kommt auf das Projekt an. Was ist günstig... Hier muß man 350$ in die Hand nehmen. Da die Jungs jedes Jahr persönlich auf den Delphi Tagen dabei sind, wenn es mir leisten könnte, würde ich das bevorzugen. 8-)
Über die Qualität kann ich nichts sagen.

mrtwo12 18. Feb 2017 15:02

AW: PDF .. Text extrahieren
 
Moin,

Ich nutze eine Kombi aus ghostscript und tesseract.
Habe leider gerade kein Zugriff auf mein Rechner, könnte nachher die Scripts posten.

Von Gnostice kann ich nur abraten.

Mfg

erich.wanker 18. Feb 2017 15:05

AW: PDF .. Text extrahieren
 
Hi ..

Danke für die Infos ... aber "Gnostice PDF toolkit" bietet kein OCR .... die hälfte meiner PDF Dokumente beinhalten einen gescannten Text

erich.wanker 18. Feb 2017 15:11

AW: PDF .. Text extrahieren
 
hallo mrtwo12,

wäre nett wenn es dir zeitlich ausgeht :-) :-) ...

klingt gut, die Combi aus ghostscript ( ... "erlaubt aber eine unentgeltliche Verbreitung und Nutzung") und
tesseract ( .."unter der Apache-Lizenz via SourceForge") wäre SUPER!!

Vielen Dank
erich

Bernhard Geyer 18. Feb 2017 17:15

AW: PDF .. Text extrahieren
 
Zitat:

Zitat von haentschman (Beitrag 1362015)
Moin... :P
Zitat:

Jetzt suche ich einen günstigen Weg
https://www.gnostice.com/PDFtoolkit_...?show=overview
Es kommt auf das Projekt an. Was ist günstig... Hier muß man 350$ in die Hand nehmen. Da die Jungs jedes Jahr persönlich auf den Delphi Tagen dabei sind, wenn es mir leisten könnte, würde ich das bevorzugen. 8-)
Über die Qualität kann ich nichts sagen.

Ich kann etwas über die Qualität sagen: Ist (bzw. war es damails) unterirdisch.
Wir waren froh als wir diese Komponenten wieder ausgebaut hatten.
Wir hatten damit die Sicherheit der PDF-Dokumente gesetzt. Und bei relativ vielen realen PDF war danach das Programm kaputt, da die Gnostice-PDF-Implementierung sehr viele wilde Zeiger produziert hat. Wir hatten auch die Vollmundig verkündete Reimplementierung (vor dem Ausbauen) abgewartet und waren danach sehr enttäuscht das die Qualität praktisch unverändert schlecht war.

Mittlerweile setzen wir die PDFBox ein.
Kann zwar "nur" Text extrahieren, das dafür ziemlich gut.

erich.wanker 18. Feb 2017 17:29

AW: PDF .. Text extrahieren
 
Hallo Leute ..

********** VIELEN DANK **************

Hab einen Test erfolgreich zum laufen gebracht ... SCHAUT IM MOMENT SEHR GUT AUS :-)







Installiert:
tesseract-ocr-setup-4.00.00dev.exe
gs920w32.exe

Delphi:

Code:
RunProcess('C:\Server\htdocs\files\ghostscript\bin\gswin32c.exe -dNOPAUSE -sDEVICE=tiffg4 -r600x600 -dBATCH -sPAPERSIZE=a4 -sOutputFile='+tiffname+'Image-%d.tiff '+destname , SW_MINIMIZE, true, ProcID);


Code:
RunProcess('C:\Server\htdocs\files\tesseract\tesseract.exe '+tiffname+'Image-1.tiff '+tiffname+'Image-1 -l deu' , SW_MINIMIZE, false, ProcID);




Code:

function TS_ADMIN.RunProcess(FileName: string; ShowCmd: DWORD; wait: Boolean; ProcID: PCardinal): Longword;
var
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
  FillChar(StartupInfo, SizeOf(StartupInfo), #0);
  StartupInfo.cb := SizeOf(StartupInfo);
  StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_FORCEONFEEDBACK;
  StartupInfo.wShowWindow := ShowCmd;
  if not CreateProcess(nil,
    @Filename[1],
    nil,
    nil,
    False,
    CREATE_NEW_CONSOLE or
    NORMAL_PRIORITY_CLASS,
    nil,
    nil,
    StartupInfo,
    ProcessInfo)
    then
      Result := WAIT_FAILED
  else
  begin
    try
      if not wait then
      begin
        if ProcID <> nil then ProcID^ := ProcessInfo.dwProcessId;
        Result := S_OK;
        exit;
      end;
      WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
      GetExitCodeProcess(ProcessInfo.hProcess, Result);
    finally
      CloseHandle(ProcessInfo.hProcess);
      CloseHandle(ProcessInfo.hThread);
    end;
  end;
end;

mrtwo12 18. Feb 2017 18:26

AW: PDF .. Text extrahieren
 
Super, mein Code sieht ähnlich aus.
Nutze aber noch die 3er Version.

Ist echt mächtig wie ich finde.
Mfg

PS bei mir hat das Training noch ein wenig mehr in der Erkennungsrate gebracht.
War aber nur marginal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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