本当にこれをどこから始めればいいのかわからない
私は 8000 を超える PDF を持つ Linux サーバーを使用しており、どの PDF が ocr され、どの PDF がそうでないかを知る必要があります。
PDFをチェックするためにXPDFを呼び出すある種のスクリプトを考えていましたが、正直なところ、これが可能かどうかはわかりません
助けてくれてありがとう
pdffonts
コマンドラインツールがインストールされていることを確認してください。(これには2つのバージョンがあります。1つはの一部として出荷され、もう1つはの一部として出荷されxpdf-utils
ますpoppler-utils
。)
スキャンされたページのみで構成されるすべてのPDFには、フォントは使用されません(埋め込まれたフォントも埋め込まれていないフォントも使用されません)。
コマンドライン
pdffonts /path/to/scanned.pdf
その場合、そのファイルのフォント情報は表示されません。
これは、ファイルを2つの異なるセットに分割するのにすでに十分な場合があります。
スキャンされたページと「通常の」ページ(またはサンニングされたページ)が混在するPDFがある場合は、上記の単純なアプローチを拡張および改良する必要があります。詳細についてはman pdffonts
、またはpdffonts --help
を参照してください。
問題pdffonts
は、次のように、何も返されない場合があることです。
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
そして時々それはこれを返します:
name type emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
[none] Type 3 yes no no 266 0
[none] Type 3 yes no no 9 0
[none] Type 3 yes no no 297 0
[none] Type 3 yes no no 341 0
[none] Type 3 yes no no 381 0
[none] Type 3 yes no no 394 0
[none] Type 3 yes no no 428 0
[none] Type 3 yes no no 441 0
[none] Type 3 yes no no 451 0
[none] Type 3 yes no no 480 0
[none] Type 3 yes no no 492 0
[none] Type 3 yes no no 510 0
[none] Type 3 yes no no 524 0
[none] Type 3 yes no no 560 0
[none] Type 3 yes no no 573 0
[none] Type 3 yes no no 584 0
[none] Type 3 yes no no 593 0
[none] Type 3 yes no no 601 0
[none] Type 3 yes no no 644 0
それを念頭に置いて、PDFからすべてのフォントを取得するための小さなテキストツールを書いてみましょう。
pdffonts my-doc.pdf | tail -n +3 | cut -d' ' -f1 | sort | uniq
PDFがOCR処理されていない場合、これは何も出力しないか、またはを出力します[none]
。
より速く実行したい場合は、-l
フラグを使用して、たとえば最初の5ページのみを分析します。
pdffonts -l 5 my-doc.pdf | tail -n +3 | cut -d' ' -f1 | sort | uniq
次に、bashスクリプトでラップします。例is-pdf-ocred.sh
:
#!/bin/bash
MYFONTS=$(pdffonts -l 5 "$1" | tail -n +3 | cut -d' ' -f1 | sort | uniq)
if [ "$MYFONTS" = '' ] || [ "$MYFONTS" = '[none]' ]; then
echo "NOT OCR'ed: $1"
else
echo "$1 is OCR'ed."
fi
最後に、PDFを検索できるようにします。find
コマンドはのエイリアスや関数を認識しないため.bashrc
、スクリプトへのパスを指定する必要があります。次のように、選択したディレクトリで実行します。
find . -type f -name "*.pdf" -exec /path/to/my/script/is-pdf-ocred.sh '{}' \;
私はpdfファイルがで終わると仮定していますが.pdf
、これは必ずしもあなたが作ることができる仮定ではありません。おそらく、それをlessにパイプするか、テキストファイルに出力することをお勧めします。
find . -type f -name "*.pdf" -exec /path/to/my/script/is-pdf-ocred.sh '{}' \; | less
find . -type f -name "*.pdf" -exec /path/to/my/script/is-pdf-ocred.sh '{}' \; > pdfs.txt
-l 5
フラグを使用して、10秒強で約200のPDFを作成することができました。