void TextWindow::recognize(const char *imagepath)
{
Pix* pixs = pixRead(imagepath);
if (!pixs)
{
fprintf(stderr, "Cannot open input file: %s\n", imagepath);
exit(2);
}
tesseract::TessBaseAPI api;
const char* lang = "pol";
const char* datapath = "/usr/share/tesseract-ocr";
tesseract::PageSegMode pagesegmode = tesseract::PSM_AUTO;
tesseract::OcrEngineMode enginemode = tesseract::OEM_DEFAULT;
int init_failed = api.Init(datapath, lang, enginemode);
if (init_failed)
{
fprintf(stderr, "Could not initialize tesseract.\n");
exit(1);
}
api.SetImage(pixs);
tesseract::Orientation orientation;
tesseract::WritingDirection direction;
tesseract::TextlineOrder order;
float deskew_angle;
tesseract::PageIterator* it = api.AnalyseLayout();
if (it) {
it->Orientation(&orientation, &direction, &order, &deskew_angle);
printf(
"Orientation: %d\nWritingDirection: %d\nTextlineOrder: %d\n"
"Deskew angle: %.4f\n",
orientation, direction, order, deskew_angle);
} else {
//ret_val = 1;
}
delete it;
pixDestroy(&pixs);
////
tesseract::PointerVector<tesseract::TessResultRenderer> renderers;
PreloadRenderers(&api, &renderers, pagesegmode, "wynik");
if (!renderers.empty()) {
bool succeed = api.ProcessPages(imagepath, NULL, 0, renderers[0]);
if (!succeed) {
fprintf(stderr, "Error during processing.\n");
exit(1);
}
}
}