
Encontrei um script que funciona bem para converter arquivos PDF para o formato txt, com ocr.
Mas converte apenas um arquivo PDF de cada vez. Eu preciso convertê-los em massa.
Não tenho conhecimento de escrita de roteiro. O script está abaixo.
Como posso convertê-los em massa?
#!/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
Observação: li perguntas semelhantes, mas não consegui descobrir.
Responder1
Você poderia modificar seu script:
# 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
Então chame seu script assim:
some-script.sh 1.pdf 2.pdf #...
Um bash
for
loop, quando não recebe nada para fazer um loop, percorre todos os argumentos da linha de comando. Por isso,
for INFILE
é equivalente a:
for INFILE in "$@"
Responder2
Pelo que entendi da sua pergunta, acho que é isso que você espera:
for each in *.pdf
do
your_conv_script.sh $each
done
onde your_conv_script.sh
está o script que você indicou acima.
Observe também que você precisa limpar os arquivos criados temporariamente.