Tesseract/Leptonica 处理单页和多页图像的正确方法?

Tesseract/Leptonica proper way to handle single and multipage images?

我有几个关于 Tesseract(使用 leptonica)如何处理输入图像的问题。 我在这里想做的是有一种方法可以处理任何图像文件(不需要特定格式)并稍后将其提供给 tesseract API,但这似乎不是正确的方法用 leptonica 做事...

这是我正在做的一个例子:

string tmpFile ="path/to/my/file";
// Trying to load a PIXA struct, since it can handle multipage images
PIXA* sourceImg =pixaRead(tmpFile.c_str());
if (sourceImg == NULL) {
    // this happen when pixaRead method fails to load the image
    // So we suppose it's a single page image-file.
    sourceImg =new PIXA;
    sourceImg->n =1;
    sourceImg->pix =(Pix**)malloc(sizeof(Pix*));
    assert(sourceImg->pix != NULL);
    sourceImg->pix[0] =pixRead(tmpFile.c_str());
    sourceImg->refcount =1;
}
api = new tesseract::TessBaseAPI();
if (api->Init(NULL, "eng")) {
    fprintf(stderr, "Could not initialize tesseract.\n");
    exit(1);
}
// Now we can process each pages
for(int i=0; i<sourceImg->n; i++) {
    // results is an object I use to save text from each documents,
    // with page count
    if (i > 0)
        results.addPage();
    Pix* image =sourceImg->pix[i];
    api->SetImage(image);
    // Get OCR result
    outText = api->GetUTF8Text();

    // Here I process stuff, not really important    
    int dummyPos=0;
    results.addLine(outText, dummyPos, dummyPos, dummyPos, dummyPos);
    delete [] outText;
}
pixaDestroy(&sourceImg);
api->End();

所以这是可行的,但不是我想要的方式,因为即使我使用多页 tiff,我在加载图像时也会收到以下消息:

Error in pixaReadStream: not a pixa file
Error in pixaRead: pixa not read

它仍然能够处理文档,这要归功于我在 "pixaRead" 失败时使用的 "pixRead" 方法...

有人可以向我解释一下我使用 "pixaRead" 函数有什么问题吗? 是否可以用类似的方法处理单页和多页图像?

PS:我正在使用 Tesseract V4.0 和 Leptonica V1.74.4

提前致谢!

使用 pixaReadMultipageTiff 读取 TIFF 图像(单页或多页),pixRead 读取其他图像格式。