
Ich habe ein gut funktionierendes Skript gefunden, um PDF-Dateien mit OCR in das TXT-Format zu konvertieren.
Es konvertiert jedoch jedes Mal nur eine PDF-Datei. Ich muss mehrere Dateien gleichzeitig konvertieren.
Ich habe keine Ahnung vom Drehbuchschreiben. Das Drehbuch finden Sie unten.
Wie kann ich sie massenweise konvertieren?
#!/bin/bash
## script to:
## * split a PDF up by pages
## * convert them to an image format
## * read the text from each page
## * concatenate the pages
## pass name of PDF file to script
INFILE=$1
## split PDF file into pages, resulting files will be
## numbered: pg_0001.pdf pg_0002.pdf pg_0003.pdf
pdftk $INFILE burst
for i in pg*.pdf ; do
## convert it to a PNG image file
convert -density 200 -quality 100 $i ${i%.pdf}.png
## read text from each page
tesseract ${i%.pdf}.png ${i%.pdf}.txt
done
## concatenate the pages into a single text file
cat pg*.txt > ${INFILE%.pdf}.txt
exit
Hinweis: Ich habe ähnliche Fragen gelesen, bin aber nicht dahinter gekommen.
Antwort1
Sie könnten Ihr Skript ändern:
# instead of INFILE=$1
for INFILE
do
#...
for i in pg*.pdf ; do
#...
done
## concatenate the pages into a single text file
cat pg*.txt > ${INFILE%.pdf}.txt
done
Rufen Sie dann Ihr Skript folgendermaßen auf:
some-script.sh 1.pdf 2.pdf #...
Eine bash
for
Schleife durchläuft alle Befehlszeilenargumente, wenn ihr nichts zum Schleifen gegeben wird. Daher
for INFILE
ist äquivalent zu:
for INFILE in "$@"
Antwort2
So wie ich Ihre Frage richtig verstehe, erwarten Sie vermutlich Folgendes:
for each in *.pdf
do
your_conv_script.sh $each
done
wo your_conv_script.sh
ist das Skript, das Sie oben angegeben haben?
Beachten Sie auch, dass Sie temporär erstellte Dateien bereinigen müssen.