文書の高品質スキャンがあります。このようなスキャンはPDF形式です。
Ocr情報をPDFに追加して、検索可能にするにはどうすればよいですか?検索可能というのは、pdfをエビエンスで表示するときに、CTRL-Fで実際にpdfコンテンツを検索できるようにすることが目標であることを意味します。
Ubuntu debパッケージを提供します。 OCRエンジンとしてtesseractを使用します。次の呼び出しは、スキャンしたPDFにテキストレイヤーを追加します。
pdfsandwich scanned.pdf
以下は同じことを行いますが、別の言語(ISO 639-2コード、tesseract-ocr-LANGCODE
パッケージをダウンロード)でレイアウトを設定します:
pdfsandwich -verbose -lang spa -layout single scanned.pdf
エラーが発生した場合は、 Sourceforgeから最新バージョンのdebをダウンロードしてください 。
免責事項:私はpdfsandwichの開発者であるため、明らかに偏っています。
理想的ではない解決策を見つけましたが、非常に効果的な解決策です。
私は PDF X-Change Viewer Wineを使用しています。既存の画像ベースのpdfにテキストレイヤーを追加するOCR機能があります。
したがって、この不可視レイヤーからテキストを検索およびコピーできます。
簡単に実装でき、同じ品質の入力ファイルと適切なサイズの出力PDFを提供するソリューションはOCRmyPDFです。
コマンドラインソリューションでは、 pdfocr を使用できます。
簡単に言うと、ソフトウェアをインストールします。
$ Sudo apt-get install python-software-properties
$ Sudo add-apt-repository ppa:gezakovacs/pdfocr
$ Sudo apt-get update
$ Sudo apt-get install pdfocr
次に、pdfocrを実行します。
$ pdfocr -i scanned.pdf -o scanned.with.search.pdf
Ubuntu 12.04 LTSでうまくいきました。
これは、ImageMagickのconvert
、tesseract
、parallel
およびpdftk
(すべてdebianベースのディストリビューションで利用可能)に基づいた、手早くて汚いソリューションです。主に このブログ投稿 に基づいています。
#!/bin/sh -ex
density=${2:-"300"} # default to 300 DPI if 2nd parameter is not given
convert -monitor -density "$density" "$1" -monochrome -compress lzw -alpha deactivate page_%05d.tif
parallel --bar "tesseract {} {.} pdf 2>/dev/null" ::: page_*.tif
pdftk page_*.pdf cat output "${1%.*}-ocred.pdf" compress
# Cleanup temp files
rm page_?????.tif page_?????.pdf
Ppmファイルを含むディレクトリ全体では、このスクリプトppm2ocrpdf.shを使用できます
#!/bin/sh
mkdir .pdf
for f in *.ppm; do
echo " Running convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf"
convert -compress JPEG -quality 88 "$f" -page a4 "$f"ppm.pdf
echo " Running tesseract -l deu "$f" "$f" pdf"
tesseract -l deu "$f" "$f" pdf
echo " Running pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf"
pdftk "$f".pdf cat output ./.pdf/"$f"ocr.pdf
echo " Running rm "$f"ppm.pdf"
rm "$f"ppm.pdf
echo " Running rm "$f".pdf"
rm "$f".pdf
done
echo " Running pdftk *.pdf cat output ../outdocument.pdf"
pdftk ./.pdf/*.pdf cat output outOcrDocument.pdf
echo " Running rm ./.pdf/*.pdf"
rm ./.pdf/*.pdf
echo " Running rmdir .pdf"
rmdir .pdf
echo "Done"