다른 스크립트가 모든 파일을 순서대로 처리하도록 하는 스크립트?

다른 스크립트가 모든 파일을 순서대로 처리하도록 하는 스크립트?

ocr을 사용하여 pdf 파일을 txt 형식으로 변환하는 훌륭한 스크립트를 찾았습니다.

하지만 한 번에 하나의 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위에서 지적한 스크립트는 어디에 있습니까?

또한 임시로 생성된 파일을 정리해야 합니다.

관련 정보