尝试运行此命令时:
tesseract bond111.tif bond111 batch.nochop makebox
我收到了下一个错误
Error in pixReadFromTiffStream: spp not in set {1,3}
Error in pixReadStreamTiff: pix not read
Error in pixReadTiff: pix not read
假设spp not in set
是主要错误,这是什么意思?
起初它有麻烦,因为bpp高于24,所以我使用Gimp减少了它,但这并没有解决问题。
答案 0 :(得分:44)
这可能意味着您的TIFF图像具有Alpha通道,因此Tesseract使用的底层Leptonica库不支持它。如果您正在使用Imagemagick,请注意-draw
等操作可能会导致添加Alpha通道。如果您在工作流程中使用convert
并希望立即再次删除该频道,请在写入前将图像展平,方法是在输出文件名之前添加-background white -flatten +matte
,例如:
convert input.tiff -fill white -draw 'rectangle 10,10 20,20' -background white -flatten +matte output.tiff
Tesseract(好吧,Leptonica)最近接受了PNG,对它们不那么挑剔,所以无论如何将工作流程迁移到PNG可能更容易。
来源:magick-users mailing list posting; tesseract-ocr mailing list posting
答案 1 :(得分:17)
感谢您的ZakW帖子,您指出了正确的方向。 无论如何我还需要设置'-depth 8'。无论我做什么,质量对于OCR都不够好。
对我来说有用的是这个解决方案:
ghostscript -o document.tiff -sDEVICE=tiffgray -r720x720 -g6120x7920 -sCompression=lzw document.pdf
tesseract document.tiff document -l deu
vim document.txt
这样我就可以用德语的变形金刚获得完美的文本。
答案 2 :(得分:4)
您可以尝试使用libtiff_tools提供的命令'tiffinfo'来验证src图像的TIFF格式。存在许多TIFF格式,每像素位数(bpp)和每像素采样数(spp)具有不同的值。
Error in pixReadFromTiffStream: spp not in set {1,3,4}
'spp'值为2对TIFF无效。
我通过直接从Gimp保存为TIFF格式解决了这个问题,而不是使用ImageMagick的'convert'从.png转换为.tif。
另请参阅:TIFF format
答案 3 :(得分:2)
将转换调整为以下一行确实对我有所帮助。
convert -density 300 input.pdf -depth 8 -background white -alpha Off output.tiff
请注意,其他答案对我不起作用,因为它们使用了已弃用的+matte
标志而不是-alpha Off
。