580 const char* lang =
nullptr;
581 const char* image =
nullptr;
582 const char* outputbase =
nullptr;
583 const char* datapath =
nullptr;
584 bool list_langs =
false;
585 bool print_parameters =
false;
589 #ifdef DISABLED_LEGACY_ENGINE 602 setMsgSeverity(L_SEVERITY_ERROR);
605 #if defined(HAVE_TIFFIO_H) && defined(_WIN32) 607 TIFFSetErrorHandler(Win32ErrorHandler);
608 TIFFSetWarningHandler(Win32WarningHandler);
609 #endif // HAVE_TIFFIO_H && _WIN32 611 ParseArgs(argc, argv, &lang, &image, &outputbase, &datapath, &dpi,
612 &list_langs, &print_parameters, &vars_vec, &vars_values, &arg_i,
613 &pagesegmode, &enginemode);
615 if (lang ==
nullptr) {
620 if (image ==
nullptr && !list_langs && !print_parameters)
633 const int init_failed = api.
Init(datapath, lang, enginemode, &(argv[arg_i]),
634 argc - arg_i, &vars_vec, &vars_values,
false);
636 SetVariablesFromCLArgs(&api, argc, argv);
642 PrintLangsList(&api);
647 fprintf(stderr,
"Could not initialize tesseract.\n");
651 if (print_parameters) {
653 fprintf(stdout,
"Tesseract parameters:\n");
659 FixPageSegMode(&api, pagesegmode);
662 char dpi_string[255];
663 snprintf(dpi_string, 254,
"%d", dpi);
668 int ret_val = EXIT_SUCCESS;
670 Pix* pixs = pixRead(image);
672 fprintf(stderr,
"Leptonica can't process input file: %s\n", image);
687 it->
Orientation(&orientation, &direction, &order, &deskew_angle);
689 "Orientation: %d\nWritingDirection: %d\nTextlineOrder: %d\n" 690 "Deskew angle: %.4f\n",
691 orientation, direction, order, deskew_angle);
693 ret_val = EXIT_FAILURE;
705 bool in_training_mode =
710 #ifdef DISABLED_LEGACY_ENGINE 712 auto osd_warning = std::string(
"");
714 const char* disabled_osd_msg =
715 "\nERROR: The page segmentation mode 0 (OSD Only) is currently disabled.\n\n";
716 fprintf(stderr,
"%s", disabled_osd_msg);
721 "\nWarning: The page segmentation mode 1 (Auto+OSD) is currently disabled. " 722 "Using PSM 3 (Auto) instead.\n\n";
726 "\nWarning: The page segmentation mode 12 (Sparse text + OSD) is currently disabled. " 727 "Using PSM 11 (Sparse text) instead.\n\n";
729 #endif // def DISABLED_LEGACY_ENGINE 734 if (in_training_mode) {
736 }
else if (outputbase !=
nullptr) {
737 PreloadRenderers(&api, &renderers, pagesegmode, outputbase);
741 if (outputbase !=
nullptr && strcmp(outputbase,
"-") &&
742 strcmp(outputbase,
"stdout")) {
746 if (!renderers.
empty()) {
747 if (banner) PrintBanner();
748 #ifdef DISABLED_LEGACY_ENGINE 749 if (!osd_warning.empty()) {
750 fprintf(stderr,
"%s",osd_warning.c_str());
753 bool succeed = api.
ProcessPages(image,
nullptr, 0, renderers[0]);
755 fprintf(stderr,
"Error during processing.\n");
PageSegMode GetPageSegMode() const
Orientation and script detection only.
bool GetBoolVariable(const char *name, bool *value) const
void SetImage(const unsigned char *imagedata, int width, int height, int bytes_per_pixel, int bytes_per_line)
Automatic page segmentation, but no OSD, or OCR.
Find as much text as possible in no particular order.
void SetPageSegMode(PageSegMode mode)
void PrintVariables(FILE *fp) const
DLLSYM void tprintf(const char *format,...)
Fully automatic page segmentation, but no OSD.
int push_back(T * object)
int direction(EDGEPT *point)
bool ProcessPages(const char *filename, const char *retry_config, int timeout_millisec, TessResultRenderer *renderer)
static TESS_API DawgCache * GlobalDawgCache()
void Orientation(tesseract::Orientation *orientation, tesseract::WritingDirection *writing_direction, tesseract::TextlineOrder *textline_order, float *deskew_angle) const
bool SetVariable(const char *name, const char *value)
PageIterator * AnalyseLayout()
static TESS_API void Update()
int Init(const char *datapath, const char *language, OcrEngineMode mode, char **configs, int configs_size, const GenericVector< STRING > *vars_vec, const GenericVector< STRING > *vars_values, bool set_only_non_debug_params)
Sparse text with orientation and script det.
void SetOutputName(const char *name)