Bash 스크립트의 총 페이지 번호 에코

Bash 스크립트의 총 페이지 번호 에코

일괄 pdf-ocr 처리를 위해 다음 스크립트가 있는데 잘 작동합니다.

#!/bin/sh
# apt-get install exactimage tesseract-ocr ghostscript
# bash tut: http://linuxconfig.org/bash-scripting-tutorial
# Linux PDF,OCR: http://blog.konradvoelkel.de/2013/03/scan-to-pdfa/

y="`pwd`/$1"
echo Will create a searchable PDF for $y

x=`basename "$y"`
name=${x%.*}

mkdir "$name"
cd "$name"

# splitting to individual pages
gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300 -dTextAlphaBits=4 -o out_%04d.jpg -f "$y"

# process each page
for f in $( ls *.jpg ); do
  # extract text
  tesseract -l eng -psm 3 $f ${f%.*} hocr
 # echo Page ?? of ?? done! 

  # remove the “<?xml” line, it disturbed hocr2df
  grep -v "<?xml" ${f%.*}.html > ${f%.*}.noxml
  rm ${f%.*}.html

  # create a searchable page
  hocr2pdf -i $f -s -o ${f%.*}.pdf < ${f%.*}.noxml
  rm ${f%.*}.noxml
  rm $f
done

# combine all pages back to a single file
# from http://www.ehow.com/how_6874571_merge-pdf-files-ghostscript.html
gs -dCompatibilityLevel=1.4 -dNOPAUSE -dQUIET -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=../${name}_searchable.pdf *.pdf

cd ..
rm -rf $name

입력 PDF 파일의 총 페이지 수 중 어느 페이지가 완료되고 있는지 에코하고 싶습니다.

답변1

페이지별로 다루셨기 때문에이는 bash를 사용하여 수행할 수 있습니다.산술 평가.

현재 읽은 부분 바꾸기

# process each page
for f in $( ls *.jpg ); do
  # extract text

다음과 같은 내용이 있습니다:

CURRENT_PAGE=0
# process each page
for f in *.jpg ; do
  CURRENT_PAGE=$(( $CURRENT_PAGE + 1 ))
  echo Processing page $CURRENT_PAGE ...
  # extract text

산술 평가를 나타냅니다 $(( ... )).man bash자세한 내용은 검색을 참조하세요 ARITHMETIC EVALUATION.

페이지 0에서 시작하여 첫 번째 파일을 처리하기 직전에 1을 추가한 다음 현재 페이지 번호를 인쇄합니다.

print라는 명령에 자체 출력이 없으면 echo해당 줄을 다음으로 바꾸면 더 깔끔한 출력을 얻을 수 있습니다.

  printf "Processing page %d ...\r" $CURRENT_PAGE

\r"줄의 시작 부분으로 돌아가기"(기술적으로는 캐리지 리턴으로 간주됨)를 의미하므로 다음 명령의 출력이 방금 인쇄한 내용을 덮어쓰게 됩니다. 완료된 후 스크립트를 보려면 끝에 다음을 추가하세요.

printf "\n"

다음 줄로 이동합니다.

그리고테든에서 지적하다코멘트, 정말 사용해야 합니다

for f in *.jpg

오히려 for f in $( ls *.jpg )그것은 또 다른 질문입니다. (나는 이것을 위에 통합했습니다.) $f같은 이유로, 어떤 방식으로든 참조하는 변수 확장 주위에 따옴표를 추가하는 것이 좋습니다.

관련 정보