3

本当にこれをどこから始めればいいのかわからない

私は 8000 を超える PDF を持つ Linux サーバーを使用しており、どの PDF が ocr され、どの PDF がそうでないかを知る必要があります。

PDFをチェックするためにXPDFを呼び出すある種のスクリプトを考えていましたが、正直なところ、これが可能かどうかはわかりません

助けてくれてありがとう

4

2 に答える 2

4

pdffontsコマンドラインツールがインストールされていることを確認してください。(これには2つのバージョンがあります。1つはの一部として出荷され、もう1つはの一部として出荷されxpdf-utilsますpoppler-utils。)

スキャンされたページのみで構成されるすべてのPDFには、フォントは使用されません(埋め込まれたフォントも埋め込まれていないフォントも使用されません)。

コマンドライン

pdffonts /path/to/scanned.pdf

その場合、そのファイルのフォント情報は表示されません。

これは、ファイルを2つの異なるセットに分割するのにすでに十分な場合があります。

スキャンされたページと「通常の」ページ(またはサンニングされたページ)が混在するPDFがある場合は、上記の単純なアプローチを拡張および改良する必要があります。詳細についてはman pdffonts、またはpdffonts --helpを参照してください。

于 2011-11-03T21:55:08.973 に答える
4

問題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を作成することができました。

于 2013-02-26T19:26:17.783 に答える