0

私の現在のシェルスクリプトは次のようなものです:

for i in *.pdf
do
    convert -density 400 $i -depth 8 ${i/pdf/jpg}
done

for j in *.jpg
do
    tesseract -l eng $j ${j/.jpg}
    rm $j
    mv ${j}.txt textfile
done

したがって、大まかに行うことは、すべてのpdfファイルをjpgファイルに変換し、すべてのjpgファイルをtesseractを使用して生のテキストファイルに変換することです。pdf から jpg への変換でエラーが発生する可能性はありませんが、tesseract が次のようなエラーを報告する可能性があります。そして、私のスクリプトはそこから停止します...何らかのエラー報告が表示されるとすぐに、スクリプトをスキップするようにスクリプトを作成する方法はありますか?? そのため、破損した jpg ファイルを転記する必要はなく、スキップしたいと考えています。どんな種類の助けもいただければ幸いです!

4

3 に答える 3

0

tesseract はコマンド ラインにエラーを返します。

for j in *.jpg
do
    tesseract -l eng $j ${j/.jpg}
    [ $? -ne 0 ]  && break
    rm $j
    mv ${j}.txt textfile
done
于 2013-04-25T02:29:27.250 に答える
0

(前のコマンドからの戻りコード) を確認$?し、ゼロ以外の場合 (失敗など) にスクリプトを終了することができます。

[ $? != 0 ] && echo "Failed and died"
# More traditionally
if [ $? != 0 ] ; then
  return_val=$?
  echo "Failed with ${return_val} code"
  exit $return_val
fi

出力ストリーム (stdout、stderr) を stdout に統合して値を取得することもできます

r=$(tessaract -l eng $j ... &>/dev/stdout)

stderror$rの結果が含まれます。

または、作成した別のファイル記述子に出力を送信することもできますexec

于 2013-04-25T02:28:41.023 に答える