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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

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.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mein Verdacht waeren ja die relativen Pfade die du zu benutzen scheinst. Ich wuerde mal absolute probieren.
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Moin,

hilft leider nicht...

Vielen Dank aber für den Tipp
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

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...
Sirius3
User
Beiträge: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

Du hast innerhalb von invoice2data etwas geändert? Und das tut jetzt? Kaum zu glauben.
stdout ist eine offenes Filehandle, was wundert Dich daran?
Antworten