解決策

解決策

PDF文書があれば、文書をスキャンしたもので、スキャンした文書の写真だけを保存するので、容量が非常に大きいファイルなのです。

テキストのみを保存する正しい文書を作成するのに役立つOCRツールはありますか?

まあ、私はその逆が必要です!完璧なPDF文書があり、pdflatexそれを紙に印刷した場合(特定のdpi値で)正確に同じように見えますが、元の画像である「巨大な」PDFに変換する必要があるとします。

私の最初のアイデアは、PDFを一連のJPGに変換してからPDFに変換することでしたが、標準的な方法はありますか?


私がなぜこのようなことをしたいのか疑問に思うなら、私は現在管理していないネットワークプリンタに閉じ込められ、印刷されたファイルからランダムに文字を削除しています!したがって、誰かが何が間違っているのかを理解するまで、これを解決策として残したいと思います。

答え1

画像ベースのPDFも汚染されているかどうかをテストできます。まず、PDFを(複数ページ)TIFFに変換します。ゴーストスクリプト:

gs -sDEVICE=tiffg4 -o sample.tif sample.pdf

次にTIFFをPDFに変換します。例:

tiff2pdf -z -f -F -pA4 -o sample-img.pdf sample.tif

これにより、ページがテキストではなく画像であるPDFファイルが生成されます。

または、システムがTIFFファイルの印刷をサポートしている場合は、直接印刷してみてください。

PDFをPSに変換するオプションもありますがpdf2ps、可能であればより良いようです。

答え2

私はこれをしましたディミツリーで説明されているコメントpdf2psと を使用してps2pdf

.psまず、次のコマンドを使用してPDFをいくつかの形式に変換します。

pdf2ps my_file.pdf my_file.ps

その後、もう一度PDF形式に変換してください。

ps2pdf my_file.ps my_file.pdf

これにより、コンテンツが実際にイメージである元のPDFのラスタライズされたバージョンを取得できます。お役に立てば幸いです。

答え3

解決策

次のコードは1200 DPIにラスタライズしa.pdfc.pdf最初に2400 DPIにラスタライズしてから出力する前に2だけ縮小します。文書

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

白黒でのみ印刷する必要がある場合は、それを交換して作業を高速化できpdfimage24ますpdfimage8

基準

pdf2ps上記の解決策が最も速く、+にのみ触れることがわかりますps2pdf(しかし、pdf2ps+ps2pdf保証しないファイルをラスタライズする)とpdf2ppm(ただし、.jpgファイルを拡大するには変換)

解決策 所要時間(秒) 占有メモリ(KiB) 出力ファイルサイズ(KiB) 印刷時間(秒)
pdftoppm(1200)(.jpg)+ img2pdf(†) 2.710 603092 10341.3
pdf2ps+ps2pdf一時ファイルを含める(源泉)(*) 4.110 37596 1706.4
pdfimage8(1200) 4.180 35668 2348.6 9.5
pdfimage24(1200/2) 5.020 36088 1971.9 9.7
pdfimage24(1200) 6.520 36212 3316.1
pdf2ps+ps2pdfパイプ付き(*) 7.230 37668 1706.4
convert(600) 9.560 964532 5953.6
pdftoppm(1200)(.tiff)+ img2pdf(†) 10.850 1539512 14483.3
convert(600) +gs最適化(源泉) 12.010 964532 1989.4 9.9
pdfimage8(2400/2) 20.350 43872 3481.9
pdfimage24(2400/2) 23.510 46484 4833.2 15.8
pdftoppm(1200)(.png)+ img2pdf源泉)(†) 33.000 626896 14127.2

(*):実際には常にPDFをラスタライズすることは解決策ではありませんが、場合によってはgsこれを行うことにすることもできます(どのような場合はラスタライズされているのかわからず、PDFが複雑すぎる場合があります)。

(†):コードは1ページのPDFファイルにのみ適合するように書かれていますが、調整できます。

ベンチマークソリューションの詳細

pdftoppm(1200)(.jpg)+ img2pdf(†)

pdftoppm -progress -r 1200 -jpeg a.pdf a
img2pdf a-1.jpg -o c.pdf

pdf2ps+ps2pdf一時ファイルを含める(源泉)(*)

gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=c.ps -q -dBATCH -dNOPAUSE a.pdf
ps2pdf c.ps c.pdf

pdfimage8(1200)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r1200 -o c.pdf a.pdf

pdfimage24(1200/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -dDownScaleFactor=2 -o c.pdf a.pdf

pdfimage24(1200)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r1200 -o c.pdf a.pdf

pdf2ps+ps2pdfパイプ付き(*)

gs -sDEVICE=ps2write -dNOCACHE -sOutputFile=- -q -dBATCH -dNOPAUSE a.pdf -c quit | ps2pdf - c.pdf

convert(600)

convert -density 600 a.pdf c.pdf

pdftoppm(1200)(.tiff)+ img2pdf(†)

pdftoppm -progress -r 1200 -tiff a.pdf a
img2pdf a-1.tif -o c.pdf

convert(600) +gs最適化(源泉)

convert -density 600 a.pdf b.pdf
gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite  -sOutputFile=c.pdf b.pdf   -q

pdfimage8(2400/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage8 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

pdfimage24(2400/2)

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r2400 -dDownScaleFactor=2 -o c.pdf a.pdf

pdftoppm(1200)(.png)+ img2pdf源泉)(†)

pdftoppm -progress -r 1200 -png a.pdf a
img2pdf a-1.png -o c.pdf

ベンチマークのソースコードを見つけることができます。ここ

答え4

これ受け入れられた回答ほとんどのユースケースに対処する必要があります。しかし、ラスター化したい状況に直面しています。特定の解像度でこの回答pdftoppm同様の質問で、最高の品質結果を生成するツールを学びました。

簡単な使用例は次のとおりです。

pdftoppm input.pdf output -tiff

これにより、PDFファイルのページ番号に対応するoutput-X.tif名前のファイルが作成されます。X

関連情報