I'm trying to recognize text from a cropped image but I need to pass it from Mat
to PIX
because X-Platform coding.
And doing the same function passing Mat
and PIX
with the same image, results are very very different (with PIX
it works perfectly, with Mat
it gets messed).
What am I probably doing bad?
Thanks.
PD: (This is one of the code snippets that I'm using)
String imgToString(const char* variables, Mat gray) {
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
if (api->Init(NULL, "eng")) {
String returnString = "Could not initialize tesseract.\n";
fprintf(stderr, "Could not initialize tesseract.\n");
return returnString;
}
api->SetVariable("tessedit_char_whitelist", variables);
// Open input image with leptonica library
api->TesseractRect(gray.data, 1, gray.channels() * gray.size().width, 0, 0, gray.cols, gray.rows);
// Get OCR result
outText = api->GetUTF8Text();
return outText;
}
// The one below works fantastic
String imgToString(const char* variables, const char* filename) {
char *outText;
tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI();
if (api->Init(NULL, "eng")) {
String returnString = "Could not initialize tesseract.\n";
fprintf(stderr, "Could not initialize tesseract.\n");
return returnString;
}
api->SetVariable("tessedit_char_whitelist", variables);
// Open input image with leptonica library
Pix *image = pixRead(filename);
api->SetImage(image);
// Get OCR result
outText = api->GetUTF8Text();
return outText;
}