
Я нашел отлично работающий скрипт для преобразования PDF-файлов в формат TXT с помощью OCR.
Но он конвертирует только один файл pdf каждый раз. Мне нужно конвертировать их массово.
Я не разбираюсь в написании сценариев. Сценарий ниже.
Как мне их массово конвертировать?
#!/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
Примечание: Я читал похожие вопросы, но не смог понять.
решение1
Вы можете изменить свой скрипт:
# 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
Затем назовите свой скрипт следующим образом:
some-script.sh 1.pdf 2.pdf #...
Цикл bash
for
, если не указано ничего, по чему можно было бы зациклиться, проходит по всем аргументам командной строки. Следовательно,
for INFILE
эквивалентно:
for INFILE in "$@"
решение2
Насколько я понял из вашего вопроса, я предполагаю, что вы ожидаете вот этого:
for each in *.pdf
do
your_conv_script.sh $each
done
где your_conv_script.sh
находится скрипт, который вы обозначили выше.
Также обратите внимание, что вам необходимо очистить временно созданные файлы.