質問: linuxでpdfからocrでテキストを抽出する方法は? pdfインデックスで作成されていないものからテキストを抽出するにはどうすればよいですか?すべてテキストですが、何も検索または選択できません。kubuntuを実行していますが、okularはこの機能があります。
回答: bsdライセンスの linuxのcuneiformへの移植 ocrシステムで成功しました。利用可能なバイナリパッケージがないようです。ソースからビルドする必要があります。 imagemagick c++ライブラリをインストールして、基本的にすべての入力画像形式をサポートするようにしてください(そうしないと、bmpのみが受け入れられます)。簡単なreadmeファイルを除いて、本質的に文書化されていないように見えますが、ocrの結果は非常に良いことがわかりました。それの良い点は、ocrテキストの位置情報を出力できることです。 hocr 形式、つまり、pdfファイルの非表示レイヤーの正しい位置にテキストを戻すことができるようになります。この方法で、「検索可能な"テキストをコピーできるpdf。私は hocr2pdf を使用して、元の画像のみのpdfとocrの結果からpdfを再作成しました。残念ながら、プログラムは複数ページのpdfの作成をサポートしていないようです。そのため、それらを処理するスクリプトを作成する必要がある場合があります。#!/bin/bash # run ocr on a multi-page pdf file and create a new pdf with the # extracted text in hidden layer. requires cuneiform, hocr2pdf, gs. # usage: ./dwim.sh input.pdf output.pdf set -e input="$1" output="$2" tmpdir="$(mktemp -d)" # extract images of the pages (note: resolution hard-coded) gs -sdevice=tiffg4 -r300x300 -soutputfile="$tmpdir/page-%04d.tiff" -dnopause -dbatch -- "$input" # ocr each page individually and convert into pdf for page in "$tmpdir"/page-*.tiff do base="${page%.tiff}" cuneiform -f hocr -o "$base.html" "$page" hocr2pdf -i "$page" -o "$base.pdf" < "$base.html" done # combine the pages into one pdf gs -q -dnopause -dbatch -sdevice=pdfwrite -soutputfile="$output" "$tmpdir"/page-*.pdf rm -rf -- "$tmpdir" 上記のスクリプトは非常に初歩的なものであることに注意してください。たとえば、pdfメタデータは保持されません。