42

尝试运行此命令时:

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 降低了它,但这并没有解决问题。

4

4 回答 4

47

这可能意味着您的 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邮件列表发帖;tesseract-ocr邮件列表发布

于 2012-04-18T12:33:25.267 回答
19

感谢您的帖子 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

这样我就得到了完美的德语变音符号文本。

于 2012-05-31T21:10:44.407 回答
6

将转换调整为以下行确实对我有所帮助。

convert -density 300 input.pdf -depth 8 -background white -alpha Off output.tiff

请注意,其他答案对我不起作用,因为它们使用 deprecated+matte标志而不是-alpha Off.

于 2018-12-17T11:29:24.910 回答
5

您可以尝试使用 libtiff_tools 提供的命令“tiffinfo”来验证 src 图像的 TIFF 格式。存在许多 TIFF 格式,每像素位数 (bpp) 和每像素样本数 (spp) 具有不同的值。

Error in pixReadFromTiffStream: spp not in set {1,3,4}

'spp' 值为 2 对 TIFF 无效。

我通过从 Gimp 直接保存为 TIFF 格式解决了这个问题,而不是使用 ImageMagick 的“转换”将 .png 转换为 .tif。

另请参阅:TIFF 格式

于 2012-02-19T15:29:03.333 回答