如何将 pdf 文件从灰度转换为黑白?

Tim*_*Tim 12 command-line pdf

我的操作系统是 Ubuntu 12.04。如何将 pdf 文件从灰度转换为黑白?灰度pdf文件来自灰度选项扫描,OCR需要黑白灰度pdf。


更新:

按照 Marco 的回复,BW pdf不好,原始文件在这里

Mar*_*rco 10

1) 使用ghostscript使用psmono设备将PDF 转换为单色PostScript 文件:

gs -q -sDEVICE=psmono -o mono.ps input.pdf
Run Code Online (Sandbox Code Playgroud)

2) 然后将单色 PostScript 转换回 PDF:

ps2pdf mono.ps
Run Code Online (Sandbox Code Playgroud)

编辑:psmono设备创建一个 1 位半色调图像,这显然不是您想要的。我找不到使用 ghostscript 指定阈值的方法,所以我求助于 imagemagick。convert内部使用 ghostscript 来转换 PDF。然后应用阈值过滤生成 1 位图像并再次使用 ghostscript 创建 PDF。由于convert默认使用 75DPI 的分辨率,这可能与您的实际分辨率不匹配,因此您可以提供density参数。并尝试threshold设置。最佳值高度依赖于输入文件。

convert -density 150 -threshold 50% input.pdf output.pdf
Run Code Online (Sandbox Code Playgroud)


Edu*_*scu 5

我发现的最好的方法是,在不损失质量的情况下,去除下一页的阴影、噪音、文本等:

  1. 首先将pdf转换为单个图像

    pdfimages combined_ocr.pdf page

  2. 其次,去除下一页中的阴影、噪音和文本(归功于此博客

    ls ./p*.ppm | xargs -L1 -I {} convert {} -quality 100 -density 300 -fill white -fuzz 80% +opaque "#000000" {}.jpg

这可以作为额外步骤添加,也可以代替上面的命令来实际只获得两种颜色:

ls ./p*.ppm | xargs -L1 -I {} convert {} +dither -colors 2 -type bilevel -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg
Run Code Online (Sandbox Code Playgroud)

50-60% 的fuzz攻击性较小,并获得更具可读性的结果:

ls ./p*.ppm | xargs -L1 -I {} convert {} +dither -colors 2 -type bilevel -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg
Run Code Online (Sandbox Code Playgroud)
  1. 这是为了将每个 jpg 图像制作为 pdf 文件,而不会损失分辨率或质量:

    ls -1 ./*jpg | xargs -L1 -I {} img2pdf {} -o {}.pdf

  2. 这将 pdfpages 连接成一个:

    pdftk *.pdf cat output combined.pdf

  3. 最后,我添加了一个 OCRed 文本图层,该图层不会改变 pdf 中的扫描质量,因此可以搜索它们:

    pypdfocr combined.pdf