Seite 1 von 1

Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 13:14
von reneschmidt
Hallo zusammen,

ich bin gerade dabei uns versuche das Modul invoce2data in Python in einen Ablauf einzubauen.
Leider komme ich bei der Erkennung mit tesseract nicht weiter.
Die Ausgabe sieht immer wie folgt aus:

Code: Alles auswählen

invoice2data --template-folder /invoice2data --debug --input-reader tesseract rg7.pdf
Error in fopenReadStream: file not found
Error in pixRead: image file not found: Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Image file Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org cannot be read!
Error during processing.
DEBUG:invoice2data.main:START pdftotext result ===========================
DEBUG:invoice2data.main:
DEBUG:invoice2data.main:END pdftotext result =============================
DEBUG:invoice2data.main:Testing 113 template files
ERROR:invoice2data.main:No template for rg7.pdf
Inzwischen habe ich das ganze auch schon etwas aufgedröselt und kommt zu dem Punkt, das es scheinbar an der Verarbeitung von ImageMagick liegt:
es geht um folgende Zeilen:

Code: Alles auswählen

convert = ['convert', '-density', '350', path, '-depth', '8', 'png:-']
p1 = subprocess.Popen(convert, stdout=subprocess.PIPE, shell=True)
der reine Aufruf per Shell funktioniert, nur wenn ich diesen Befehl per Subprocess laufenlasse und mir dann p1.stdout ansehe, kommt folgendes bei raus:

Code: Alles auswählen

<open file '<fdopen>', mode 'rb' at 0x7f3f58b55150>
Hat jemand eine Idee was das sein kann?

Vielen Dank für die Hilfe.

Re: Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 13:36
von __deets__
Mein Verdacht waeren ja die relativen Pfade die du zu benutzen scheinst. Ich wuerde mal absolute probieren.

Re: Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 14:39
von reneschmidt
Moin,

hilft leider nicht...

Vielen Dank aber für den Tipp

Re: Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 14:52
von __deets__
Ich habe die Fehlermeldung mal gegoogelt. Das sieht so aus, als ob Imagemagick nicht funktioniert, und irgendwie einen Hilfetext ausgibt, der eben "Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org" beinhaltet. Und *DAS* versucht tesseract dann als Bild zu laden, und scheitert dabei natuerlich.

Da ist noch irgendwas anderes faul. Da bleibt dir nichts anderes uebrig, als den Ablauf des Programmes nachzuvollziehen, und rauszufinden, wann da was wo schief geht. ZB durch Einsatz des PDB, oder liberales Verteilen von print-Statements im Code.

Re: Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 18:21
von reneschmidt
Hallo,

ich hab das Problem jetzt wie folgt für mich gelöst:
statt subprocess.Popen habe ich es mit dem alten os.system. Damit funktioniert es....

Schön finde ich diese Lösung aber alle mal nicht...

Re: Subprocess: open file '<fdopen>', mode 'rb' at

Verfasst: Sonntag 3. Februar 2019, 19:09
von Sirius3
Du hast innerhalb von invoice2data etwas geändert? Und das tut jetzt? Kaum zu glauben.
stdout ist eine offenes Filehandle, was wundert Dich daran?