次の状況を処理するために、この再帰ディレクトリファイル検索の入力と名前の出力をどのように更新できますか?

次の状況を処理するために、この再帰ディレクトリファイル検索の入力と名前の出力をどのように更新できますか?

ディレクトリを繰り返しパスし、PDFをocrsし、PDFを更新するスクリプトを更新しています。

シンプルなバージョンでは動作します。

ocrmypdf -l vie --deskew --clean --force-ocr --sidecar vietnamese_website.txt Vietnamese\ Website.jpg Vietnamese\ Website.pdf --verbose 1

フォルダを繰り返し繰り返し、さまざまなファイル形式を使用したいので、検索を次に拡張しました。

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \)

バッチ処理と並列処理の例は次のとおりです。

find .  -name '*.pdf' | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --verbose 1 '{}' '{}'

私の質問は2つの部分に分かれています。

「言語」は、サポートされているハイパースクエアトレーニングデータの完全なリストのエイリアスです。拡張するには、macOSのシェルに次のように入力します。エイリアス言語='eng+rus+vie+ukr+fra+spa+afr+amh+ara+asm+aze+aze_cyrl+bel+ben+bod+bos+bre +bul+cat+ceb+ces+chi_sim+chi_sim_vert+chi_tra +chi_tra_vert+chr+cos+cym+dan+dan_frak+deu+deu_frak+div+dzo+ell+eng+enm+epo+equ+est+eus+fao+ fas+ fil+ fin+fra+frk+frm+fry+gla+ gle+glg+grc+guj+hat+heb+hin+hrv+hun+hye+ik... など - ocrmypdf は、自分の言語がこれと同じだと思います。 --sidecarにテキストファイルを出力させたいです。 '{}.txt'はそのようなファイルがないと文句を言います。これが私がいるところです。

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf -l languages --deskew --clean --force-ocr --sidecar '{}.txt' '{}' '{}' --verbose 1

必要なものを見つけることができる場所から得ましたが、--sidecarは満足できませんでした。それでは、エイリアスと '$1.txt'はどうすればいいですか?

ベストアンサー1

私の考えには2つのポイントがあると思います。

  • エイリアス拡張はオプションではなく、最初の単語でのみ機能します。
  • 提供された名前をいくつか変更する必要がありますfind

findコマンドラインからすべてのことを実行できますが、この目的のためにスクリプトを作成する方が簡単だと思いましたocrmypdf.sh

#!/bin/bash

languages='eng+rus+vie+...'
base="${1%.*}
ocrmypdf -l "$languages" --deskew --clean --force-ocr --sidecar "$base.txt" "$1" "$base.pdf --verbose 1

その後、実行します。

find . \( -name '*.pdf' -o -name '*.jpg' -o -name '*.tiff' -o -name '*.jpeg' -o -name '*.tif' -o -name '*.png' \) | parallel --tag -j 2 ocrmypdf.sh '{}'

おすすめ記事