leider kenne ich mich mit Python so gut wie gar nicht aus,
habe ein Script gefunden, welches auf Github liegt und mir sehr gut hilft.
Habe es etwas angepasst durch probieren und googeln aber jetzt kommt ich einfach nicht weiter.
Hier ist das Script und ich markiere innerhalb des Scriptes mal die Zeile um die es geht.
Code: Alles auswählen
#!/usr/bin/env python3
# Walk through directory tree, replacing all files with OCR'd version
# Contributed by DeliciousPickle@github
import logging
import os
import subprocess
import sys
script_dir = os.path.dirname(os.path.realpath(__file__))
print(script_dir + '/ocr-tree.py: Start')
if len(sys.argv) > 1:
start_dir = sys.argv[1]
else:
start_dir = '/home/xxxx/pdfmigration/Incomming'
if len(sys.argv) > 2:
log_file = sys.argv[2]
else:
log_file = script_dir + '/ocr-tree.log'
logging.basicConfig(
level=logging.INFO, format='%(asctime)s %(message)s',
filename=log_file, filemode='w')
for dir_name, subdirs, file_list in os.walk(start_dir):
logging.info('\n')
logging.info(dir_name + '\n')
os.chdir(dir_name)
for filename in file_list:
file_ext = os.path.splitext(filename)[1]
if file_ext == '.pdf':
full_path = dir_name + '/' + filename
print(full_path)
---------> cmd = ["ocrmypdf", "--deskew", filename, "/home/xxxx/pdfmigration/Done/" + filename] <---------
cmd = ["rm", "/home/clemens/pdfmigration/Incomming/" + filename]
logging.info(cmd)
proc = subprocess.run(
cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
result = proc.stdout
if proc.returncode == 6:
print("Skipped document because it already contained text")
elif proc.returncode == 0:
print("OCR complete")
logging.info(result)
cmd = ["ocrmypdf", "--deskew", filename, "/home/xxxx/pdfmigration/Done/" + filename]
Das Script funktioniert und tut was es soll, wenn ich aber nun die Option:
cmd = ["ocrmypdf", "--deskew", "-l deu+eng", filename, "/home/xxxx/pdfmigration/Done/" + filename]
in der Zeile ergänze, geht es nicht mehr und ich bekomme diese Fehlermeldung:
'The installed version of tesseract does not have language data for the following requested languages:\n deu\n'
Jetzt frage ich mich, wo denn diese \n \n Teile herkommen, obwohl ich sie nirgends eintrage und ob die was damit zu tun haben.
Probiere ich es direkt, ohne über den Umweg des Scriptes, also so in etwa im Terminal:
ocrmypdf --deskew -l deu+eng "/home/xxx/pdfmigration/Incomming/test.pdf" "/home/xxx/pdfmigration/Done/test2.pdf"
funktioniert es auch prima.
Bitte verweißt mich jetzt nicht auf Manual lesen oder dergleichen, ich habe alles probiert, was ich bei google finden konnte.
DeliciousPickle@github kann ich leider nicht anschreiben und der, der das Script bei sich mit hostet will mir wohl nicht helfen.
Ich glaube es liegt an der Übergabe von Python nach Terminal (Bash) aber da fehlt mir einfach das Hintergrundwissen.
Hat jemand von euch die zündende Idee?
Viele Grüße
Clemens