Go语言 JPEG参数结构不匹配:库认为大小为624,调用方预期为656

iyzzxitl  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(126)

我正在Golang使用OCR编写PDF到文本的解决方案。
我使用的库是GosseractGo-Fitz
这个程序一直在工作,直到我试图用Gosseract从内存中加载一个图像:

func ProcessDoc(file []byte) (string, error) {
    var text strings.Builder

    client := gosseract.NewClient()

    doc, err := fitz.NewFromMemory(file)

    if err != nil {
        log.Println(err)
        return "", nil
    }

    for n := 0; n < doc.NumPage(); n++ {
        img, err := doc.Image(n)

        if err != nil {
            log.Println(err)
            return "", err
        }

        buf := new(bytes.Buffer)

        err = jpeg.Encode(buf, img, nil)

        if err != nil {
            log.Println(err)
            return "", err
        }

        client.SetImageFromBytes(buf.Bytes())
        
        res, err := client.Text()
        
        if err != nil {
            return "", err
        }

        text.WriteString(res)
    }
    return text.String(), nil
}

然后我得到这个错误:

JPEG parameter struct mismatch: library thinks size is 624, caller expects 656
Error in pixReadStreamJpeg: internal jpeg error
Error in pixReadMemJpeg: pix not read
Error in pixReadMem: jpeg: no pix returned

经过大量的搜索,我了解到libleptonicamupdf可能使用不同版本的jpeglib.h,但整个系统中只有一个该文件的示例。
我还应该注意,我从源代码编译了libjpeg,然后编译了libmupdflibleptonica,以使用该版本的libjpeg来避免任何形式的冲突,但它仍然返回Struct Mismatch错误。

xqkwcwgp

xqkwcwgp1#

您是否正在从源代码编译mupdf?
默认情况下,mupdf包含它自己的libjpeg版本--有可能mupdf是根据它自己的版本编译的,而libleptonica是根据系统版本编译的。

相关问题