Feststellen ob PDF-Datei OCR benötigt, Alternative zu Tesseract

amn.ssy

Erfahrenes Mitglied
Hallo,

vorweg bitte das Thema ggf. in die richtige Rubrik verschieben.
Leider hat mir die Suchfunktion zum Begriff PDF nichts ausgeworfen, ich hätte dann die mit den meisten Treffern genommen ;-)

Hat jemand einen Ansatz wie man mit einem kleinen Script oder Opensourcetool herausfinden kann ob eine PDF-Datei lesbaren Text enthält oder ein gescanntes Images ist und daher eine OCR benötigen würde?

Zum Thema OCR: Gibt es eine vergleichbare Alternative zu Tesseract, bestenfalls ebenfalls Opensource?
Was mich an Tesseract etwas stört (auch wenn die Ergebnisse wirklich Top sind ist, daß das Programm nicht ohne weiteres gleich PDF schluckt. Umwandeln in Tiff und später evtl wieder zurück in eine "lesbare" PDF find ich etwas umständlich.

Das Ganze sollte von der Command-Line aus unter Win7 (ohne Adminrechte) funktionieren!

Gruß
_opiWahn_
 

amn.ssy

Erfahrenes Mitglied
Hallo CPoly,

in dem kleinen Projekt\Tool um das es geht habe ich bereits pdftotext am start um eben PDF auszulesen von denen ich weiß (nach Sichtprüfung o. weil sie vom system kommen) daß Sie keine OCR benötigen.
Den Rest muß ich aktuell noch etwas umständlich zuvor durch die OCR vom Acrobat laufen lassen.
Beides, die OCR (bestenfalls mit einem Tool vergleichbar mit Tesseract) und zuvor die Prüfung möchte ich in meinen Code einbauen der aktuell so aussieht:
Nicht erschrecken (das Teil ist aktuell schon ziemlich schnell und läuft sogar vom Stick (da etwas weniger schnell)) :)

Start.bat
Visual Basic:
@echo off & setlocal
set root=%~dp0
set inp=%~dp0input\
set out=%~dp0output\
set sto=%~dp0store\
set wks=%~dp0temp\
set pro=%~dp0prog\
set src=%pro%search\
set cln=%pro%clean\
for %%f in (%inp%*.pdf) do (
    %pro%pdf2text -layout -f 1 -l 3 %%f & move %%f %sto% & move %inp%*.txt %wks%
) >>%pro%last.log 2>&1

FINDSTR /G:"%src%docclass.txt" %wks%*.txt > "%wks%tmp.tmp"
cscript //nologo "%cln%docclass.vbs" "%wks%tmp.tmp" "%wks%docclass.tmp"
%pro%sort.exe -u "%wks%docclass.tmp" > "%wks%docclass.lst"

for /f "tokens=1* delims=;" %%f in (%wks%docclass.lst) do (
	FINDSTR /i /G:"%src%%%g.txt" "%wks%%%f">"%wks%tmp.tmp"
	cscript //nologo "%cln%%%g.vbs" "%wks%tmp.tmp" "%out%%%g_%%~nf.csv"
) >>%pro%last.log 2>&1

call %pro%CSVImport.xltm

del %wks%*.* /q

Macht es Sinn das hier einzubauen und wie könnte ein Prüfung ob Text="" aussehen?
Bestenfalls wäre dann ein vorheriges Verschieben der Image-PDf's in einen Orden "nOCR" sinnvoll.

Gruß
_opiWahn_
 

CPoly

Mitglied Weizenbier
Macht es Sinn das hier einzubauen und wie könnte ein Prüfung ob Text="" aussehen?
Bestenfalls wäre dann ein vorheriges Verschieben der Image-PDf's in einen Orden "nOCR" sinnvoll.

Was den Code an geht kann ich dir leider nicht helfen.

Ich würde erst mal gucken, was pdftotext liefert, wenn tatsächlich kein Text drin ist (empty string? null? false? 0?)
 

Twinsetter

Erfahrenes Mitglied
Hallo opiWahn,

ich denke mal, daß Dir eDocPrintPro (http://www.pdfprinter.at) weiterhelfen könnte. Das ist ein PDF-Drucker der neben dem eigentlichen PDF auch eine Textdatei mit dem Text erzeugen kann. Falls die Quelle aus Bildern besteht, dann ist die Textdatei leer bzw. enthält nur CR und LF Zeichen.
Der Printer hat einen entscheidenden Vorteil Du kannst von dem installierten Drucker Kopien anfertigen (hierzu wird ein kleines Kommandozeilentool mitgeliefert) und hierbei jede Kopie anders konfigurieren (jede Kopie erscheint als separater Drucker im Windowsdruckerdialog). Für Deine Zwecke könntest Du z.B. einen Drucker generieren den Du TestOCR benennst. Den Drucker richtest Du so ein daß er immer in die gleiche Datei schreibt, wobei diese jedesmal überschrieben wird. Die parallel erzeugte Textdatei hat den gleichen Namen bloß die Extention .TXT. Jetzt kannst Du die Textdatei prüfen ob sie Text sprich lesbare Zeichen enthält (also alles was einen ASCII-Wert größer / gleich 32 entspricht. Enthält die Datei Text dann kannst Du sie entsprechend weiterverarbeiten, wenn nicht dann schickst Du das Orginal durch Dein OCR-Tool oder was auch immer Du damit machen willst.
Im übrigen kann dieser Drucker auch noch jede Menge andere Ausgabeformate und bietet dazu eine Fülle an zusätzlichen netten Features. Ich benutze diesen Printer sehr gerne. Free-PDF ist er nach meinem Verständnis weit überlegen .
Das beste an dem Tool ist, daß er komplett frei ist egal ob Du ihn privat oder beruflich nutzt. Du darfst den Drucker sogar mit DEinen Projekten weitergeben, solange Du für den Drucker kein Geld nimmst. Ansonsten kannst Du Dich jederzeit mit den Jungs in Verbindung setzen, die reagieren prompt und sind sehr kooperativ (zumindest meine Erfahrung)

Eine Anleitung zum Tool findest Du hier http://wiki.xkey.at/doku.php?id=edocprintpro_pdf_und_pdf_a

Vielleicht hilft Dir das ja weiter. Einen Blick Deinerseits ist es alle mal wert

Gruß Twinsetter
 
Zuletzt bearbeitet: