/** * This routine parses the command line arguments that were * passed to the program and ses them to set relevant * training-related global parameters * * Globals: * - Config current clustering parameters * @param argc number of command line arguments to parse * @param argv command line arguments * @return none * @note Exceptions: Illegal options terminate the program. */ void ParseArguments(int* argc, char ***argv) { STRING usage; if (*argc) { usage += (*argv)[0]; } usage += " [.tr files ...]"; tesseract::ParseCommandLineFlags(usage.c_str(), argc, argv, true); // Record the index of the first non-flag argument to 1, since we set // remove_flags to true when parsing the flags. tessoptind = 1; // Set some global values based on the flags. Config.MinSamples = MAX(0.0, MIN(1.0, double(FLAGS_clusterconfig_min_samples_fraction))); Config.MaxIllegal = MAX(0.0, MIN(1.0, double(FLAGS_clusterconfig_max_illegal))); Config.Independence = MAX(0.0, MIN(1.0, double(FLAGS_clusterconfig_independence))); Config.Confidence = MAX(0.0, MIN(1.0, double(FLAGS_clusterconfig_confidence))); // Set additional parameters from config file if specified. if (!FLAGS_configfile.empty()) { tesseract::ParamUtils::ReadParamsFile( FLAGS_configfile.c_str(), tesseract::SET_PARAM_CONSTRAINT_NON_INIT_ONLY, ccutil.params()); } }
/*---------------------------------------------------------------------------*/ void ParseArguments(int* argc, char ***argv) { /* ** Parameters: ** argc number of command line arguments to parse ** argv command line arguments ** Globals: ** ShowSignificantProtos flag controlling proto display ** ShowInsignificantProtos flag controlling proto display ** Config current clustering parameters ** tessoptarg, tessoptind defined by tessopt sys call ** Argc, Argv global copies of argc and argv ** Operation: ** This routine parses the command line arguments that were ** passed to the program. The legal arguments are shown in the usage ** message below: ** Return: none ** Exceptions: Illegal options terminate the program. ** History: 7/24/89, DSJ, Created. */ #ifndef USE_STD_NAMESPACE InitGoogle(kUsage, argc, argv, true); tessoptind = 1; #else int Option; int ParametersRead; BOOL8 Error; Error = FALSE; while ((Option = tessopt(*argc, *argv, "F:O:U:D:C:I:M:B:S:X:c:")) != EOF) { switch (Option) { case 'C': ParametersRead = sscanf(tessoptarg, "%lf", &(Config.Confidence) ); if ( ParametersRead != 1 ) Error = TRUE; else if ( Config.Confidence > 1 ) Config.Confidence = 1; else if ( Config.Confidence < 0 ) Config.Confidence = 0; break; case 'I': ParametersRead = sscanf(tessoptarg, "%f", &(Config.Independence) ); if ( ParametersRead != 1 ) Error = TRUE; else if ( Config.Independence > 1 ) Config.Independence = 1; else if ( Config.Independence < 0 ) Config.Independence = 0; break; case 'M': ParametersRead = sscanf(tessoptarg, "%f", &(Config.MinSamples) ); if ( ParametersRead != 1 ) Error = TRUE; else if ( Config.MinSamples > 1 ) Config.MinSamples = 1; else if ( Config.MinSamples < 0 ) Config.MinSamples = 0; break; case 'B': ParametersRead = sscanf(tessoptarg, "%f", &(Config.MaxIllegal) ); if ( ParametersRead != 1 ) Error = TRUE; else if ( Config.MaxIllegal > 1 ) Config.MaxIllegal = 1; else if ( Config.MaxIllegal < 0 ) Config.MaxIllegal = 0; break; case 'c': FLAGS_configfile.set_value(tessoptarg); break; case 'D': FLAGS_D.set_value(tessoptarg); break; case 'U': FLAGS_U.set_value(tessoptarg); break; case 'O': FLAGS_O.set_value(tessoptarg); break; case 'F': FLAGS_F.set_value(tessoptarg); break; case 'X': FLAGS_X.set_value(tessoptarg); break; case '?': Error = TRUE; break; } if (Error) { fprintf(stderr, "Usage: %s %s\n", (*argv)[0], kUsage); exit(2); } } #endif // Set additional parameters from config file if specified. if (!FLAGS_configfile.empty()) { tesseract::ParamUtils::ReadParamsFile( FLAGS_configfile.c_str(), tesseract::SET_PARAM_CONSTRAINT_NON_INIT_ONLY, ccutil.params()); } } // ParseArguments