Script für Ordneraktion - Automatisierter OCR-Scan

erstelle eine automator-ordneraktion:
1. wähle deinen ordner bei "Die Ordneraktion empfängt Dateien und Ordner, die hinzugefügt werden zu:"
2. füge "Shell-Script ausführen" aus der bibliothek hinzu.
3. einstellen: Shell "/bin/bash"
4. einstellen: Eingabe übergeben: "Als Argumente"
5. füge unten stehenden code ein:
Code:
#!/bin/bash
#set -vux
#
# (c) Olivetti 2016
#

[[ ! -f "${1}" ]] && exit 1

infile="${1}"
file="${infile##*/}"

### append "-OCR" to file name
fileapd="-OCR" && filenam="${file%.*}" && fileext="${file##*.}" && file="${filenam}${fileapd}.${fileext}"

### define output folder, fixed folder or inputfile dirnamed folder
#outdir="/Users/whoever/Downloads/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"
outdir="${infile%/*}/out"              && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"

#say "Processing ${file}."
/Applications/OCRKit.app/Contents/MacOS/OCRKit --format pdf --no-progress --output "${outdir}/${file}" "${infile}" # && mv "${infile}" ~/.Trash # || say "An error occured."

### OCRKit Pro path
#/Applications/OCRKit\ Pro.app/Contents/MacOS/OCRKit\ Pro --format ...

an dateinamen wird "-OCR" angehängt. auskommentieren durch voranstellen von #: "#fileapd=...".

variante 1: obere zeile "outdir" aktiv, ausgaben werden in festem ordner erzeugt (hier im code nicht aktiv)
variante 2: untere zeile "outdir" aktiv, ausgaben werden im ordner der eingabedatei + out erzeugt (hier im code aktiv).

"outdir"-ordner werden bei bedarf erzeugt.

sprachausgabe deaktivieren (auskommentieren) durch voranstellen von #: '#say "Processing...'.

solange OCRKit fehler nicht ordentlich behandelt ($? ist immer 0), sollte im script "# && mv ... ./Trash" auskommentiert bleiben. diese funktion kann im programm selbst, mit gleichem fehler, eingestellt werden.
 
Zuletzt bearbeitet:
Das ist unheimlich nett. Ich versuche das gleich morgen früh wenn ich ins Büro komme und gebe dann Rückmeldung

Danke!
 
Also das funktioniert sehr gut. Nur leider wird durch das Skript eine Funktion von OCR Kit ausgehebelt: nämlich die Änderung des Dateinamens.
Die war vorher von Test.pdf zu Test-OCR.pdf und ich fand das sehr praktisch. wenn du dafür noch eine Lösung hast bin ich wunschlos glücklich.
 
Jetzt funktioniert es plötzlich gar nicht mehr. Ich habe nichts geändert. :(

das Script lautet exakt auf deinen o.g. Wortlaut.

alle Einstellungen im Shell Script Fenster wie oben angegeben.

Er öffnet OCR Kit nicht mehr. Ich habe aber keinen Pfad geändert o.Ä.

also ich kann bestätigen, dass die Ordneraktion auf jeden Fall getriggert wird, weil ich den out-Ordner gelöscht habe und bei drag and drop in den Ordner dieser out-Ordner erstellt wird per Shell Skript.

wenn ich den Pfad aus dem Skript extrahiere und in shell ausführe dann öffnet OCRKit aber
 
Zuletzt bearbeitet:
script ist angepasst (#21).

warum das bei dir jetzt nicht mehr läuft, kann ich dir so nicht sagen. am einfachsten siehst du, dass das script läuft, an der sprachausgabe oder am out-folder.
hast du evtl. eine trial, die jetzt abgelaufen ist? oder du hast das letzte "say ... error" auskommentiert.

zeig mal deine "/Applications/OCRKit..."-zeile.
 
Nein die Software ist gekauft. Den Out Ordner erstellt er. Soundausgabe kann ich grad leider nicht checken der mac hat keine boxen (ist als reiner server gedacht). Was mir grad auffällt: oben dreht sich ein Rädchen in der Menüleiste und da sind wie man es von Druckaufträgen kennt 15 Einträge die alle bei 0% stehen.

Also Wortlaut: OCR 0% abgeschlossen (Shell-S...

abgeschnitten und zeigt auch nicht mehr...
 
hab #25 editiert, bitte nochmal checken.
ahso, das ist ein hackintosh.
sind da prozesse zu sehen? "ps ax|grep OCRKi[t]"
---
edit: dann hängen da noch aufträge.

edit2: soundausgabe komplett deaktivieren: ändere in der app-zeile hinten
Code:
... && : #mv ...
# durch (einfach noch ein # davor einfügen)
... # && : #mv ...
 
5968 ?? S 0:00.00 /bin/bash -c #!/bin/bash^J#set -vux^J#^J# (c) Olivetti 2016^J#^J^J[[ ! -f "${1}" ]] && exit 1^J^Jinfile="${1}"^Jfile="${infile##*/}"^J^J### define output folder, fixed folder or inputfile dirnamed folder^J#outdir="/Users/whoever/Downloads/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^Joutdir="${infile%/*}/OCR" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^J^Jsay "Processing ${file}."^J/Applications/OCRKit.app/Contents/MacOS/OCRKit --format pdf --no-progress --output "${outdir}/${file}" "${infile}" && : #mv "${infile}" ~/.Trash || say "An error occured."^J^J### OCRKit Pro path^J#/Applications/OCRKit\ Pro.app/Contents/MacOS/OCRKit\ Pro --format ...^J - /FILESERVER/SCAN OCR/Checkliste-Barrierefreies-PDF.pdf

6104 ?? S 0:00.00 /bin/bash -c #!/bin/bash^J#set -vux^J#^J# (c) Olivetti 2016^J#^J^J[[ ! -f "${1}" ]] && exit 1^J^Jinfile="${1}"^Jfile="${infile##*/}"^J^J### define output folder, fixed folder or inputfile dirnamed folder^J#outdir="/Users/whoever/Downloads/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^Joutdir="${infile%/*}/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^J^Jsay "Processing ${file}."^J/Applications/OCRKit.app/Contents/MacOS/OCRKit --format pdf --no-progress --output "${outdir}/${file}" "${infile}" && : #mv "${infile}" ~/.Trash || say "An error occured."^J^J### OCRKit Pro path^J#/Applications/OCRKit\ Pro.app/Contents/MacOS/OCRKit\ Pro --format ... - /FILESERVER/SCAN OCR/Checkliste-Barrierefreies-PDF-3.pdf

6115 ?? S 0:00.00 /bin/bash -c #!/bin/bash^J#set -vux^J#^J# (c) Olivetti 2016^J#^J^J[[ ! -f "${1}" ]] && exit 1^J^Jinfile="${1}"^Jfile="${infile##*/}"^J^J### define output folder, fixed folder or inputfile dirnamed folder^J#outdir="/Users/whoever/Downloads/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^Joutdir="${infile%/*}/out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"^J^Jsay "Processing ${file}."^J/Applications/OCRKit.app/Contents/MacOS/OCRKit --format pdf --no-progress --output "${outdir}/${file}" "${infile}" && : #mv "${infile}" ~/.Trash || say "An error occured."^J^J### OCRKit Pro path^J#/Applications/OCRKit\ Pro.app/Contents/MacOS/OCRKit\ Pro --format ... - /FILESERVER/SCAN OCR/Checkliste-Barrierefreies-PDF.pdf

6138 ?? S 0:00.27 /Applications/OCRKit.app/Contents/MacOS/OCRKit
 
ja, da hängen lauter jobs rum. :p
Code:
killall OCRKit
 
hab #21 nochmal editiert (sprachausgabe deaktiviert). kopier das nochmal komplett in den automator.

ich schränke das script heute abend noch auf nur pdf/bilder-input ein.

bis später.
 
Ich hab es glaub ich gelöst. Ich will den Tag nicht vor dem Abend loben, aber ich habe die Aktion ausgewählte Finder Objekte abfragen vor das Shell Skript ausführen gesetzt, dadurch klappt es jetzt.

Das war vorher nicht nötig. Woran das liegt kann ich nicht sagen ich weiß nur dass es zumindest jetzt gerade klappt.

Ich habe mal eine Frage: es gibt ja einige Optionen die ich im Programm setzen kann- hab ich mit dem Shell Skript jetzt noch volle Kontrolle oder greift das auf die Grundfunktion des Tools zu und ich muss diese Optionen dann auch per Shell setzen? wie z.B. die Pixeldichte beim rendern - oder dass er die PDF's automatisch ausrichtet nach Textrichtung.

Weil das mit dem -OCR anhängen ist is eigentlich built-in und hat scheinbar nicht mehr funktioniert. Wie nehme ich da dann Einfluss?
 
ausgewählte Finder Objekte abfragen vor das Shell Skript ausführen gesetzt
das finde ich jetzt doch etwas seltsam, das es damit klappt. das dürfte dann auch nur mit files funktionieren, die im finder tatsächlich selektiert sind. :noplan:

heute komme ich nicht mehr groß dazu, am script zu arbeiten - #21 ist jetzt leider auch für mich zu und ich zieh das später auf github, dann kann ich auch weitere änderungen einbauen, sorry.
---
ich arbeite ja auch erst seit gestern mit der demo von OCRKit und kann bisher sagen, dass die parameter im programm erhalten bleiben, solange man entsprechendes auf der kommandozeile weglässt.
ich würde aber sagen, man kann einiges einstellen, was die GUI-prefs für den programmlauf überschreibt, falls benötigt, ansonsten gelten die GUI-prefs (pixeldichte, textausrichtung usw.). das können wir aber noch explizit testen, um klarheit zu schaffen. richtige dokumentation zum programm gibt es ja leider nicht. vermutlich mangels anwenderinteresse. :p

-OCR-anhängen ist deswegen ein sonderfall, weil der --output parameter sowas i.d.R. übertriggern muss.
du siehst aber im script, dass ich solche optionen durch einfaches auskommentieren (#) an- und abschalten kann.
wenn du da noch etwas spezielles brauchst, einfach raus damit. :augen:
 
Hey Olivetti danke für alles ich hab jetzt paar Tage bisschen was zu tun und werd mich erstmal nicht damit befassen können. Aber solange will ich auch erstmal beobachten wie sich deine Lösung in der Praxis schlägt. Meine Mitarbeiter haben heute früh "schon ganz fleißig ge-OCR't" und sind total begeistert. :)
 
  • Gefällt mir
Reaktionen: Olivetti
also kleine Rückmeldung: alles läuft super! keine Ausfälle- sehr zuverlässig :)
Danke nochmal
 
  • Gefällt mir
Reaktionen: Olivetti
neue version - chatty switch - trash switch - standard/pro app switch - check auf gültige dateitypen - ersetzt code in #21.
Code:
#!/bin/bash
#set -vux
#
# (c) Olivetti 2016
#

[[ ! -f "${1}" ]] && exit 1

### be chatty - comment/uncomment to disable/enable say commands
chatty=1

### move input file to trash - comment/uncomment to disable/enable
#trash=1

### choose app version standard/pro
#app="/Applications/OCRKit.app/Contents/MacOS/OCRKit"
app="/Applications/OCRKit Pro.app/Contents/MacOS/OCRKit Pro"

file -b "${1}" | grep 'PDF\|image' || { [[ "$chatty" ]] && say "Unsupported file type."; exit 1; }

infile="${1}"
file="${infile##*/}"

### append "-OCR" to file name - comment/uncomment to diable/enable
fileapd="-OCR" && filenam="${file%.*}" && fileext="${file##*.}" && file="${filenam}${fileapd}.${fileext}"

### define output folder, fixed folder or inputfile dirnamed folder
#outdir="/Users/Shared/ocr-out" && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"
outdir="${infile%/*}/ocr-out"  && [[ ! -d "${outdir}" ]] && mkdir "${outdir}"

[[ "$chatty" ]] && say "Processing ${infile##*/}."
"${app}" --format pdf --no-progress --output "${outdir}/${file}" "${infile}" && { [[ "$trash" ]] && mv "${infile}" ~/.Trash; } || { [[ "$chatty" ]] && say "An error occured, but i don't know why."; exit 1; }
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mausfang und EmilS
Nach der Änderung klappt das leider nicht mehr. Das war vorher schon ziemlich zuverlässig denke ich- ich befass mich bei Zeit mal näher damit, warum das jetzt nicht mehr geht.

Danke dir auf jeden Fall für die Mühen
 
schau als erstes, ob du auf standard app umgestellt hast. oben in #35 ist es auf pro.
 
Ich habe kein Pro. Das kann ich selbst ändern denke ich. Ich versuch mich mal schnell


Ahh auskommentieren ist wirklich was feines.

Ich mach einen Testscan
 
bei dir wäre es "chatty=1" auskommentieren und auf standard umkommentieren.
 
Also Skriptstart wird getriggert. Bleibt aber bei 66% hängen-


NA, jetzt nicht mehr :)

Ausführliche Tests folgen und Feedback auch. Danke dir!
 
Zurück
Oben Unten