Tesseract和tiff格式 - spp不在集{1,3}

Asa*_*saf 38 tesseract

尝试运行此命令时:

tesseract bond111.tif bond111 batch.nochop makebox
Run Code Online (Sandbox Code Playgroud)

我得到了下一个错误

Error in pixReadFromTiffStream: spp not in set {1,3}
Error in pixReadStreamTiff: pix not read
Error in pixReadTiff: pix not read
Run Code Online (Sandbox Code Playgroud)

假设这spp not in set是主要的错误,它是什么意思?起初它有麻烦,因为bpp高于24,所以我使用Gimp减少了它,但这并没有解决问题.

小智 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
Run Code Online (Sandbox Code Playgroud)

Tesseract(好吧,Leptonica)现在接受PNG并且对它们不那么挑剔,因此无论如何将工作流程迁移到PNG可能更容易.

来源:magick-users 邮件列表发布 ; tesseract-ocr 邮件列表发布

  • 请注意,根据文档不推荐使用`+ matte`.请改用"-alpha Off". (17认同)
  • 看起来-flatten命令将其缩减为单个页面.删除固定的一切为我. (6认同)
  • @fotNelton谢谢:这是-alpha Off为我做的.-flatten对于多页扫描绝对没有帮助 (4认同)
  • 有趣.这个解决方案适合我,但只生成输入pdf的最后一页. (2认同)

Flo*_*agg 18

谢谢你的帖子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
Run Code Online (Sandbox Code Playgroud)

这样我就可以用德语的变形金刚获得完美的文本.


Ent*_*ain 6

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

convert -density 300 input.pdf -depth 8 -background white -alpha Off output.tiff
Run Code Online (Sandbox Code Playgroud)

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


小智 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的'convert'从.png转换为.tif。

另请参阅:TIFF格式