如何压缩 Tesseract 编码的 PDF 同时保留 OCR 中嵌入的文本?

如何压缩 Tesseract 编码的 PDF 同时保留 OCR 中嵌入的文本?

我一直在尝试使用 Tesseract 对我的 PDF 进行 OCR,而且大部分都是成功的,尤其是对于德国 Fraktur 文本(旧式哥特式印刷品),因为 Adob​​e Acrobat 等工具无法正确识别。

问题是 Tesseract 的输出文件相当大,我想在 OCR 之后压缩它们。但是,当我使用 Ghostscript 压缩文件时,嵌入的 OCR 文本被搞乱了。同样,如果我使用 ImageMagick,嵌入的文本会被删除。有办法解决这个问题吗?理论上我可以在 OCR 之前压缩,但这会使 OCR 准确性变差。

一般来说,我的目标是在输出 PDF 文件中嵌入高质量的 OCR 文本,并高度压缩嵌入的图像,以便文件不会占用太多空间。我发现 Adob​​e Acrobat Pro 的“另存为其他 > 缩小尺寸 PDF”功能可以高度压缩图像,但会破坏任何 OCR 文本。无论文件是在 Acrobat 中进行 OCR,还是使用 Tesseract 等工具进行 OCR,都是如此。

这是我目前的工作流程,使用样本 pdf

将 PDF 拆分为 TIFF 文件

pdftk infile.pdf burst output "temp/page_%03d.pdf"
dpi=130 #this is the dpi of the particular file
parallel convert -verbose -density $dpi "{}" -depth 8 -background white -compress zip "{}.tiff" ::: temp/*.pdf

在每个 TIFF 文件上运行 Tesseract(参见示例文件的输出

language=deu_frak
parallel tesseract {} {} -l $language pdf ::: temp/*.tiff
  • 当我将输出的 PDF 文件与 Ghostscript 合并时,我得到了类似的文件这个,这会破坏嵌入的文本
  • 当我将它们与 PDFtk 结合使用时(例如 pdftk temp/*.pdf cat output outfile.pdf`),我得到了一个类似的文件这个,它保留了嵌入的文本,但不知何故使文件更大
  • 然后,当我尝试使用 ImageMagic (例如convert -density 130x130 -quality 5 -compress jpeg outfile-pdftk.pdf outfile-pdftk-imagemagick.pdf)压缩该文件时,它会删除嵌入的 OCR 文本(输出

看起来 Tesseract 不会压缩输出 PDF 中的图像,这是可以预料的 - 它的工作是对文件进行 OCR,而不是压缩输出。

例如,在初始 Tesseract OCR 文件上,pdfimages -list temp/page_001.pdf.tiff.pdf生成:

page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    1067  1508  rgb     3   8  jpeg   no        11  0   129   130  318K 6.7%

... 这表明 PDF 中的图像对象并未得到最佳存储。它仍然是 RGB 格式,而不是黑白格式。相比之下,使用 ImageMagick 压缩后,pdfimages -list结果如下:

  pdfimages -list outfile-pdftk-imagemagick.pdf
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    1075  1520  gray    1   8  jpeg   no         8  0   130   131 54.0K 3.4%
   1     1 smask    1075  1520  gray    1   8  image  no         8  0   130   131 25.1K 1.6%
   2     2 image    1075  1520  gray    1   8  jpeg   no        22  0   130   131 59.9K 3.8%
   2     3 smask    1075  1520  gray    1   8  image  no        22  0   130   131 25.1K 1.6%
   3     4 image    1075  1520  gray    1   8  jpeg   no        36  0   130   131 45.2K 2.8%
   3     5 smask    1075  1520  gray    1   8  image  no        36  0   130   131 25.1K 1.6%
   4     6 image    1075  1520  gray    1   8  jpeg   no        50  0   130   131 62.8K 3.9%
   4     7 smask    1075  1520  gray    1   8  image  no        50  0   130   131 25.1K 1.6%
   5     8 image    1075  1520  gray    1   8  jpeg   no        64  0   130   131 61.1K 3.8%
   5     9 smask    1075  1520  gray    1   8  image  no        64  0   130   131 25.1K 1.6%
   6    10 image    1075  1520  gray    1   8  jpeg   no        78  0   130   131 63.4K 4.0%
   6    11 smask    1075  1520  gray    1   8  image  no        78  0   130   131 25.1K 1.6%
   7    12 image    1075  1520  gray    1   8  jpeg   no        92  0   130   131 65.1K 4.1%
   7    13 smask    1075  1520  gray    1   8  image  no        92  0   130   131 25.1K 1.6%
   8    14 image    1075  1520  gray    1   8  jpeg   no       106  0   130   131 61.0K 3.8%
   8    15 smask    1075  1520  gray    1   8  image  no       106  0   130   131 25.1K 1.6%
   9    16 image    1075  1520  gray    1   8  jpeg   no       120  0   130   131 66.8K 4.2%
   9    17 smask    1075  1520  gray    1   8  image  no       120  0   130   131 25.1K 1.6%
  10    18 image    1075  1520  gray    1   8  jpeg   no       134  0   130   131 65.6K 4.1%
  10    19 smask    1075  1520  gray    1   8  image  no       134  0   130   131 25.1K 1.6%

我们可以看到,图像占用的空间较少,但是嵌入 OCR 的文本被删除了,文件不知何故变小了。相比之下,如果我获取原始文件(没有嵌入 OCR 的文本)并使用 Adob​​e Acrobat 的“另存为其他 > 缩小尺寸 PDF”对其进行压缩,我会得到:

  pdfimages -list infile-adobe.pdf 
page   num  type   width height color comp bpc  enc interp  object ID x-ppi y-ppi size ratio
--------------------------------------------------------------------------------------------
   1     0 image    1000  1499  gray    1   8  jpx    no        38  0   129   129 78.1K 5.3%
   2     1 image    1000  1499  gray    1   8  jpx    no         3  0   129   129 89.1K 6.1%
   3     2 image    1000  1499  gray    1   8  jpx    no         6  0   129   129 65.6K 4.5%
   4     3 image    1000  1499  gray    1   8  jpx    no         9  0   129   129 97.7K 6.7%
   5     4 image    1000  1499  gray    1   8  jpx    no        12  0   129   129 95.4K 6.5%
   6     5 image    1000  1499  gray    1   8  jpx    no        15  0   129   129 98.7K 6.7%
   7     6 image    1000  1499  gray    1   8  jpx    no        18  0   129   129  102K 6.9%
   8     7 image    1000  1499  gray    1   8  jpx    no        21  0   129   129 94.6K 6.5%
   9     8 image    1000  1499  gray    1   8  jpx    no        24  0   129   129  105K 7.2%
  10     9 image    1000  1499  gray    1   8  jpx    no        27  0   129   129  103K 7.1%

... 我们可以看到,Adobe Acrobat 似乎使用 JPEG2000(JPX)压缩图像,而由于专利问题,Ghostscript 和 ImageMagick 无法使用这种技术。

总的来说,关于如何压缩 Tesseract-OCR 的 PDF 文件有什么建议吗?

相关内容