我的(web)应用程序的设置如下:我会获取用户上传的PDF文件,对它们运行OCR并显示OCRed PDF。由于所有东西都在线上,因此尽可能将生成的PDF文件大小最小化是降低用户加载和等待时间的关键。
我从用户那里接收的文件是sample.pdf(我创建了一个带有原始文件和我在此处生成的文件的存档:https://dl.dropboxusercontent.com/u/1390155/tess-files/sample.zip)。我使用tesseract 3.04,并执行以下操作:
OCR的结果很好,但生成的PDF大小增加了约2.5倍。
一个显而易见的解决方案是在生成tiff时降低分辨率,但我不想这样做,因为它可能会影响OCR的结果。
我尝试的第二件事是使用Ghostscript在Tesseract后减小PDF大小。
这有点帮助,生成的文件只有101K,大约是原始文件的1.5倍。我可以接受这个,但它似乎也影响了OCR结果。例如,‘RESTAURANT’和‘PIZZERIA’之间的空白(第二行)现在丢失了。
另一个(更简单)使用ghostscript的选项,使用电子书参数,在PDF中导致较低质量的43k文件,并出现相同的缺少空格的问题:
总数(55.50)缺失,最终PDF大小为149k。
总之,以下是我的问题:
- 有人能解释一下为什么使用ghostscript缩小PDF大小会影响OCR结果吗?我认为文本层和图像层是独立的... - 在tesseract生成PDF时,有哪些选项可以降低图像质量? - 我读到其他解决方案如ABBYY OCR使用混合光栅内容(MRC)来减小文件大小。tesseract是否已经实现了这一点?如果没有,是否有一些开源或专有的CLI工具可以用来减小tesseract生成的PDF文件? - 再次强调,只要用户可以搜索文本并从PDF中选择复制/粘贴,我就可以妥协PDF图像的质量(尽管我希望保留颜色)。
非常感谢任何帮助!
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
一个显而易见的解决方案是在生成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的选项,使用电子书参数,在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。
总之,以下是我的问题:
- 有人能解释一下为什么使用ghostscript缩小PDF大小会影响OCR结果吗?我认为文本层和图像层是独立的... - 在tesseract生成PDF时,有哪些选项可以降低图像质量? - 我读到其他解决方案如ABBYY OCR使用混合光栅内容(MRC)来减小文件大小。tesseract是否已经实现了这一点?如果没有,是否有一些开源或专有的CLI工具可以用来减小tesseract生成的PDF文件? - 再次强调,只要用户可以搜索文本并从PDF中选择复制/粘贴,我就可以妥协PDF图像的质量(尽管我希望保留颜色)。
非常感谢任何帮助!
tiff24nc
文件。你是否也尝试过使用tiffg4
并比较结果? - Kurt Pfeifle