我的(网络)应用程序的设置如下:我获取用户上传的 PDF 文件,对它们运行 OCR 并向他们显示 OCRed PDF。由于一切都在线,因此最小化生成的 PDF 文件的大小是减少用户加载和等待时间的关键。
我从用户那里收到的文件是sample.pdf(我已经使用原始文件以及我在此处生成的文件创建了一个存档:https://dl.dropboxusercontent.com/u/1390155/tess-files/sample.zip https://dl.dropboxusercontent.com/u/1390155/tess-files/sample.zip)。我使用 tesseract 3.04 并执行以下操作:
gs -r300 -sDEVICE=tiff24nc -dBATCH -dNOPAUSE -sOutputFile=sample.tiff sample.pdf
tesseract sample.tiff sample-tess -l fra -psm 1 pdf
OCR 的结果很好,但生成的 PDF 的大小现在约为 2.5 倍
- 原始pdf文件大小:60k
- 最终pdf大小:147K
那么请问,如何在保留OCR结果的情况下减小生成的PDF的大小?
一个明显的解决方案是在生成 tiff 时降低分辨率,但我不想这样做,因为它可能会影响 OCR 结果。
我尝试的第二件事是使用 Ghostscript 来减小超立方体后的 PDF 大小:
gs -o sample-down-300.pdf -sDEVICE=pdfwrite -dDownsampleColorImages=true \
-dDownsampleGrayImages=true -dDownsampleMonoImages=true \
-dColorImageResolution=300 -dGrayImageResolution=300 \
-dMonoImageResolution=300 -dColorImageDownsampleThreshold=1.0 \
-dGrayImageDownsampleThreshold=1.5 -dMonoImageDownsampleThreshold=1.0 \
sample-tess.pdf
这有点帮助,生成的文件只有 101K,大约是原始文件的 1.5 倍。我可以接受这一点,但这似乎也会影响 OCR 结果。例如,“RESTAURANT”和“PIZZERIA”(第二行)之间的空白现在丢失了。
Ghostscript 的另一个(更简单的)选项,使用 ebook 参数,会产生一个 43k 文件,PDF 质量稍差,并且存在缺少空格的相同问题:
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dBATCH -dQUIET -sOutputFile=sample-ebook.pdf \
sample-tess.pdf
PDF 质量稍差一点也不错,但我又不想在 OCR 上妥协。
我使用 PNG 和 JPEG 进行了其他测试,但 OCR 结果总是下降(甚至略有下降),并且生成的 PDF 并不小。例如,对于 PNG:
convert -density 300 sample.pdf -transparent white sample.png
tesseract sample.png sample-tess-png -l fra -psm 1 pdf
总计 (55.50) 缺失,最终 PDF 大小为 149k。
总而言之,这是我的问题:
- 有人可以解释为什么使用减小 PDF 的大小吗
Ghostscript 会影响 OCR 结果吗?我认为文本层和
图像层是独立的...
- 是否有可以提供的选项
tesseract 在生成时降低图像质量
PDF?
- 我读到其他解决方案(例如 ABBYY OCR)使用混合光栅化
内容 (MRC) 以减少文件大小。 tesseract 可以做到这一点吗
已经?如果没有,是否有一些开源或专有的 CLI 工具
这样做,我可以用它来减少 tesseract 生成的 PDF
文件?
再说一遍,只要用户可以搜索文本并选择它从 PDF 中复制/粘贴,我就可以牺牲 PDF 图像的质量(尽管理想情况下我希望保留颜色)。
非常感谢任何帮助!