.png)
紙の文書の写真をスキャン文書に変換するにはどうすればよいですか?関連はありますが、同じではありません。私が話しているのはPDFファイルについてです。リンクされた質問の回答では、画像の処理は複雑に思えます。特に、各画像を個別に処理する: 与えられた私のPDFには何百ページもあります私が期待する解決策は、画像を処理/編集することではなく、単にデジタル写真や文書を実物と同じようにスキャンするつまり、入力が写真ベースのPDFまたは写真のコレクションで、出力が「通常の」スキャンされた文書である「仮想スキャナ」のようなものを意味します。(また、スキャンテーラー推奨ツール - またここ(現在 Linux バージョンはないようです。)
これはないOCRについてない画像をテキストに変換する方法について。
私の言いたいことを明確にするために、いくつか例を挙げます。
があるテキストに基づく PDF ファイル画像ではなく、PDF にエクスポートされたテキスト ファイル (docx または odt とします) です。印刷する準備ができているように見えます。
上記はないここで私が議論していること。
私が興味を持っているのは、以下の画像の PDF、つまり、画像に非常に似ているスキャンされたテキスト ページと、デジタル化されたテキストのように見えるスキャンされたテキスト ページの違いです。
最初のものは次のような画像で構成されています撮影した写真本のページ数:
または
このようなコピー紙に再印刷することはほとんどできない背景も印刷されるので注意してください。
2番目は、スキャンしたテキスト、印刷可能:
または
写真のような PDF はすでに OCR 処理されていてテキスト検索が可能で、(ページの) 写真のコレクションのように見える場合があります。この場合、OCR は問題ではありません。
私が望んでいるのは、「スキャンされた」PDF の白地に黒の鮮明な外観と、写真では普通だが印刷されたページには存在しないはずのすべての「実際の」詳細 (特に影) の削除です。
@vanadiumがコメントで指摘したように、私はスマートフォンのGoogle Scanのように、文書の写真を自動的にクリーンアップするソフトウェアソリューションを探しています。
@user535733がコメントで述べたように、ここでの問題は、少なくともある程度は、グレースケール(スキャン/画像)テキスト白黒に。
答え1
scantailor
メンテナンスは終了していますが、ソースからビルドして使用することは可能です。
しかし元のリポジトリが必要ですqt4
が、最近のUbuntuのバージョンでは簡単にインストールできません。例えば、このフォークに適応しましたqt5
。
前提条件:
sudo apt install libjpeg-dev zlib1g-dev libpng-dev libtiff-dev libboost-dev libxrender-dev libboost-all-dev
インストール:
git clone https://github.com/victl/scantailor
cd scantailor
cmake .
make
sudo make install
免責事項: 私はこのフォークのメンテナーを知りませんので、彼のバージョンの安全性については何も言えません。
別のオプション使用することになるスキャンテーラーアドバンスsnap
...経由でインストールできます。
sudo snap install scantailor-advanced
... またはフラットパック。
...またはppa。
sudo add-apt-repository ppa:alex-p/scantailor
sudo apt update
sudo apt install scantailor # or scantailor-advanced
クイックテスト:
答え2
PDF に関する直接的な解決策として (手動で画像を抽出しない):
OCRを復元するために使用ocrmypdf
(最後に述べたように)補完的なocrmypdf -h
この回答の一部)では、まさに求められている内容のように聞こえるオプションが表示されていることに気付きました。
--remove-background Attempt to remove background from gray or color pages, setting it to white
最初の PDF にはすでに OCR が含まれていたため、次のいずれかのオプションを使用しない限りエラーが発生します。
-f, --force-ocr Rasterize any text or vector objects on each page, apply OCR, and save the rastered output (this rewrites the PDF)
または
-s, --skip-text Skip OCR on any pages that already contain text, but include the page in final output; useful for PDFs that contain a mix of images, text pages, and/or previously OCRed pages
すでに OCR が適用されている数百ページからなる大きなファイルの 1 つにそれぞれを個別に適用すると、プロセスがクラッシュしました。
最善の解決策私にはまずPDFに印刷初期ファイル(OCRを削除)を
ocrmypdf input.pdf output.pdf -l <LANG> --remove-background -v
英語の場合、この-l
オプションは必要ありません。-v
はターミナルでの詳細な情報を表示します。
結果の PDF は入力よりも大きくなります (オプションのため--remove-background
)。以下のようにサイズを縮小してください。
スキャンテイラーについて、主な回答
アイコンからも、まさにここで求められている目的のために設計されていることがわかります。
Scan Tailor を PDF で使用する方法は次のとおりです。
- すべてのPDFページを画像ファイルとして抽出する- このツールは PDF を直接処理せず、画像を必要とするためです。Master PDF Editor はこれを実行できますが、私のマシンでは約 80 枚の画像を抽出した後にクラッシュします。ただし、抽出するページの新しいバッチ/範囲を設定することで、引き続き使用できます。(PDF Mod は処理前にクラッシュしました)。数回試した後、私が好むのは、次のようなコマンドを使用する、CLI の信頼性は高いものの、より遅い方法です。-
pdftoppm MY_PDF.pdf NAME -tiff
前述のようにここtiff
. — (ファイルを返すtif
)の代わりに、png
や などの他の変数を使用することもできますjpeg
。さまざまな抽出オプションの Dolphin サービス メニュー アクションのセットについては、こちらをご覧ください。
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=pdf;tif;jpeg;
X-KDE-Submenu=PDF action: EXTRACT ALL pages
Icon=application-pdf
[Desktop Action pdf]
Name=Extract pages as pdf
Icon=application-pdf
Exec=bash -c 'pdf=$(pdftk "%u" burst); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
[Desktop Action tif]
Name=Extract pages as tif
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -tiff); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
[Desktop Action jpeg]
Name=Extract pages as jpeg
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(pdftoppm "$f" "${f%%.*}" -jpeg); kdialog --title "Extract pages" --msgbox "Extracted! $pdf";';
- 結果の画像をScan Tailorに読み込み、処理します。結果の画像ファイルを別のフォルダに入れて、そのフォルダをScan Tailorの「新規プロジェクト」>「入力ディレクトリ」に追加します。(私はそのプログラムをインストールしました。PPAから(@N0rbertのコメントでメインの回答に書かれているように。)テキストではなく実際の画像を含むページは、それぞれについてデフォルトの「白黒」(ここではテキスト用) ではなく、「グレースケールとカラー」が選択されています。リストされている手順を 1 つずつ実行します。最後の手順 (「出力」) を実行する前にページを確認してください。
- 結果の画像から新しいPDFを作成します(まず、結果の
tif
ファイルが希望どおりであるかどうかを確認してください。)新しいPDFを作成する方法はたくさんあります。また、私が試したGUIツールはすぐにクラッシュしたり、奇妙な結果が出たりしたので、結果のtif
ファイルを別のフォルダに入れて、そこでコマンドを実行することを好みますimg2pdf *.tif -o out.pdf
。ここ(ファイルの適切な名前付けや番号付けが必要になる場合があります。詳細はここ。
結果として得られる「調整された」PDF は最初のものよりも小さくなりますが、サイズ削減の割合は私が無視する要因によって異なります (ただし、最初の PDF に含まれるページは、ステップ 1 で、既存の形式で抽出されるはずです。の代わりにjpeg
と を使用する必要があると思います。上記および下記のコマンドで処理する前に、ターミナルでを使用して、形式、dpi、およびその他の詳細を確認します)。tif
png
pdfimages -list your.pdf
最終的な PDF は、次のようなコマンドでさらに縮小できます。
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
詳細は、ここ。
上記のリンクに基づいた Dolphin サービス メニュー アクションのセットは次のとおりです。
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=shrink;shrink0;shrink1;shrink2;
X-KDE-Submenu=PDF action: SHRINK
Icon=application-pdf
[Desktop Action shrink]
Name=Shrink pdf to "printer" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -sOutputFile="${f%.pdf}_printer.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[Desktop Action shrink0]
Name=Shrink pdf to "prepress" size, 300dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile="${f%.pdf}_prepress.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[Desktop Action shrink1]
Name=Shrink pdf to "ebook size, 150dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -sOutputFile="${f%.pdf}_small.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
[Desktop Action shrink2]
Name=Shrink pdf to "screen" size, 72dpi
Icon=application-pdf
Exec=bash -c 'f="%u"; pdf=$(gs -dQUIET -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/screen -sOutputFile="${f%.pdf}_smaller.pdf" "$f"); kdialog --title "Shrink" --msgbox "Done! $pdf";';
私は助けてもらったこれ答えも。
OCR(テキスト検索およびコピー機能)が失われます上記の手順で、最初のPDFにOCRが存在する場合は、
ocrmypdf input.pdf output.pdf
英語の場合、 言われるようにここ他の言語の場合は、 で検索してapt-cache search tesseract-ocr
インストールしてください。-l <LANG>
特定の言語の場合は、コマンドの最後に を追加してください。ここ; 彼らの名前も参照してくださいここ。
以下は、ルーマニア語 OCR 用の Dolphin サービス メニュー アクションです。2 つのオプションがあります (1 つはターミナルで進行状況を表示し、出力名を固定したもの、もう 1 つはバックグラウンド プロセスですが、出力名は入力に基づいています。ターミナルでプロセスを表示し、出力名は入力に基づいて設定したいのですが、方法がわかりません。できる方がいらっしゃいましたら、こちらに投稿してください)。英語の場合は、「Romanian」を置き換えて変数を削除します-l ron
。
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/pdf;
Actions=ocr1;ocr2;
X-KDE-Submenu=PDF action: apply OCR
Icon=application-pdf
[Desktop Action ocr1]
Name=Apply OCR Romanian (see progress in terminal; output name: ocr_ro.pdf!)
Icon=application-pdf
Exec=konsole --noclose -e ocrmypdf "%u" ocr_ro.pdf -l ron
[Desktop Action ocr2]
Name=Apply OCR Romanian (backgroud process: NO terminal! input>output name)
Icon=application-pdf
Exec=bash -c 'f="%u"; ocrmypdf "$f" "${f%.pdf}_ocr.pdf" -l ron;'
(画像の抽出と処理、および「PDFとして印刷」によりOCRは削除されますが、上記のようにゴーストスクリプトでサイズが縮小されます。ではないしたがって、「縮小」は OCR の前または後に適用できます。
答え3
imageMagickと次のスクリプトを使用して、かなり良い結果が得られました。http://www.fmwconcepts.com/imagemagick/shadowhighlight/index.php
次のパラメータを使用した結果は次のとおりです。
./shadowhighlight -ma 100 -sa 100 -ha 00 -hw 0 -bc 20 inputFile.png OutputFile.png
答え4
Gimp をインストールするだけです (appimage を使用することをお勧めします)。オプションは次のとおりです。
- カラー>しきい値を選択すると、画像は白黒になります。このためには、各ページごとにこれを行う必要があります。
2番目のオプション2) 画像>モード>インデックス>白黒1ビットパレットを使用するを選択します
PDF にページがいくつあっても、すべてを 1 ビットの白黒に変換します。
2021年2月11日編集:シピリクス
私が従う手順は次のとおりです。
- 「シンプル スキャン」または Xsane を使用してページをスキャンします (シンプル スキャンはカラーでより適切に機能することがわかりました)。または、既に利用可能なスキャン済み PDF を使用します。
- ファイル > 開く、または GIMP で PDF ファイルをドラッグ アンド ドロップします。ここで、必要な画像の幅 x 高さを指定する必要があります。(必要な dpi を確認してください。150 dpi または 300 dpi の場合は、それに応じて幅の値を指定します)
- これで、1 ページを超える PDF ファイルがレイヤーとして開きます。
- 画像>モード>インデックス>白黒1ビットパレットを使用するに進みます。
- 次に、「ファイル」>「名前を付けてエクスポート」を使用してPDFをエクスポートします。
- エクスポートされた PDF の各ページが要件どおりかどうかを確認します。そうでない場合は、次の方法で各欠陥ページを個別に処理します。a) [イメージ] > [モード] > [グレースケール] を選択します。b) (ページにグレー/ノイズが多すぎる場合) [色] > [露出] を選択し、必要に応じて調整します。c) [色] > [しきい値] を選択すると、画像が白黒になります。このためには、必要な品質に一致するように、各欠陥ページに対してこれを実行する必要があります。d) 次に、この編集済みページを元の PDF ファイル レイヤーのこのレイヤーに挿入し、欠陥のあるページ レイヤーを削除します。そして、PDF を再度エクスポートします。これが役立つことを願っています。