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



我收到了一些关于如何在Tesseract(使用leptonica(中处理输入图像的问题。我在这里试图做的是有一种方法,可以处理任何图像文件(无需特定格式(,并在稍后将其提供给tesseract API,但这似乎不是使用钩端的正确方法。。。

下面是我正在做的一个例子:

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"功能的问题吗?有可能用这样的东西处理单页和多页图像吗?

附言:我使用的是Tesseract V4.0和Leptonica V1.74.4

提前感谢!

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

相关内容

  • 没有找到相关文章

最新更新