【发布时间】:2014-11-06 08:57:48
【问题描述】:
我的(网络)应用程序的设置如下:我获取用户上传的 PDF 文件,对它们运行 OCR 并向他们展示 OCRed PDF。由于一切都在线,因此最小化生成的 PDF 文件的大小是减少用户加载和等待时间的关键。
我从用户那里收到的文件是 sample.pdf(我创建了一个包含原始文件以及我在此处生成的文件的存档: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 在 tesseract 后减小 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 参数,导致 PDF 中质量较低的 43k 文件和缺少空格的相同问题:
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 图像的质量上妥协(尽管我希望保留颜色,理想情况下)。
非常感谢任何帮助!
【问题讨论】:
-
您正在生成
tiff24nc文件。您是否也尝试过tiffg4并比较结果? -
我打开了一个新问题来实现您在我编写的工具中寻找的功能,该工具是 tesseract 的包装器。希望我能尽快得到它。这里是:github.com/ElectricRCAircraftGuy/PDF2SearchablePDF/issues/5.
标签: pdf pdf-generation ocr tesseract ghostscript