static connection_t* connection_init() { connection_t* connection = (connection_t*) malloc( sizeof( connection_t ) ); memset( connection, 0, sizeof( connection_t ) ); connection->status = CONN_STATUS_RECEIVED; connection->request.params = params_create(); return connection; }
/*--------------------------------------------------------------------------------------------------------------------*/ int main (int argc, char **argv) { params_t *par = 0; osr_err_code err = OSR_OK; osr_expert *expert = 0; int parse_result = 0; par = params_create(); parse_result = parse_command_line (argc, argv, par); if (parse_result) { params_destroy(par); if (LEARN_USAGE_ERR_CODE == parse_result) { print_usage(get_program_name(argv[0])); return 0; } printf ("Error: can't parse command line.\n"); return 1; } if (par->print_usage) printf ("libosr version %s\n", osr_version_text() ); if (par->print_ver) printf ("libosr version %s\n", osr_version_text() ); if (par->separate_html) { err = osr_separate_html (par->separate_html, par->html_separate_step); params_destroy(par); if (OSR_OK == err) return 0; else return 1; } if ( OSR_OK == err ) { expert = osr_expert_create(); if (0 == expert) { if (!par->no_print_err) printf ("Error: OSR initializing error, %s.\n", osr_get_error_text(err)); err = OSR_INVALID_DATA; } if (par->ignore_filter) { osr_filter unlim; osr_get_default_filter(&unlim); unlim.min_symbols_in_word=1, unlim.max_symbols_in_word=1000, unlim.min_words_in_line=1, unlim.min_lines_in_text=1, unlim.min_text_percentage=1; osr_set_filter(expert, &unlim); } } if ( OSR_OK == err ) { unsigned int last_frame_index = 0; err = osr_process_file(expert, par->file_name, par->frame_index, &last_frame_index); if ( OSR_OK != err ) if (!par->no_print_err) { if ( OSR_WRONG_FRAME_INDEX == err ) printf ("Error: OSR can't get frame %d of animated image." " It must be [0;%d]. File %s.", par->frame_index, last_frame_index, par->file_name); else printf ("Error: OSR can't process image (file %s), %s.\n", par->file_name, osr_get_error_text(err)); } } if ( OSR_OK == err ) { if (par->print_verdict) { char verdict = 0; err = osr_get_verdict(expert, &verdict); if (OSR_OK == err) printf ("VERDICT: %s\n", verdict ? "text" : "not text"); else if (!par->no_print_err) printf ("Error: OSR can't get verdict (file %s), %s.\n", par->file_name, osr_get_error_text(err)); } } if ( OSR_OK == err ) { if (par->print_info) { size_t symbols_count = 0, words_count = 0, lines_count = 0, words_pixels_percentage = 0; if (OSR_OK == err) err = osr_get_symbols_count(expert, &symbols_count); if (OSR_OK == err) err = osr_get_words_count (expert, &words_count); if (OSR_OK == err) err = osr_get_lines_count (expert, &lines_count); if (OSR_OK == err) err = osr_get_words_pixels_percentage (expert, &words_pixels_percentage); if (OSR_OK == err) { printf ("TEXT INFO:\n"); if (par->frame_index > 0) printf ( "frame index = %d\n", par->frame_index); printf ("good symbols count = %d\n" "good words count = %d\n" "good lines count = %d\n" "good pixels percentage = %d%%\n", symbols_count, words_count, lines_count, words_pixels_percentage); } else if (!par->no_print_err) printf ("Error: OSR can't get text properties (file %s), %s.\n", par->file_name, osr_get_error_text(err)); } } if ( OSR_OK == err ) { if (par->print_signature) { char gsg7[33]; err = osr_get_GSG7_signature(expert, gsg7); if (OSR_OK == err) { if ( 0 != gsg7[0] ) printf ("GSG7 %.*s\n", 32, gsg7); } else if (!par->no_print_err) printf ("Error: OSR can't get GSG7 (file %s), %s.\n", par->file_name, osr_get_error_text(err)); } } if ( OSR_OK == err ) { if (par->dump_image || par->dump_lines || par->dump_symbols || par->dump_words) { char dump_name [500]; get_dump_name (dump_name, 500, par->file_name); err = osr_get_dump (expert, dump_name, par->dump_image, par->dump_symbols, par->dump_lines, par->dump_words); if (OSR_OK != err) if (!par->no_print_err) printf ("Error: OSR can't get dump of file %s, %s.\n", par->file_name, osr_get_error_text(err)); } } if (par->html_report) { char dump_name [500]; get_dump_name (dump_name, 500, par->file_name); err = osr_get_html_report(expert, par->file_name, dump_name, par->html_report, err, par->frame_index); if (OSR_OK != err) if (!par->no_print_err) printf ("Error: OSR can't get html-report (image file %s), %s.\n", par->file_name, osr_get_error_text(err)); } if (OSR_OK == err ) if (par->win_group) { char gsg7[33]; err = osr_get_GSG7_signature(expert, gsg7); if (OSR_OK == err) { if (0 == gsg7[0]) strncpy (gsg7, "_not_text", 32); printf ("@ if not exist %s mkdir %s\n" "@ move \"%s\" %s\n", gsg7, gsg7, par->file_name, gsg7); } else if (!par->no_print_err) printf ("Error: OSR can't get GSG7 (file %s), %s.\n", par->file_name, osr_get_error_text(err)); } if (par) params_destroy(par); if (expert) osr_expert_destroy(expert); if (OSR_OK == err) return 0; return 1; }