def extract_drawable_images(data_pa, path_app, log_level=0): """Extract drawable images for each (app, img, layout) tuple. :param data_pa: List, each row contains (app, img, layout, permissions) tuple. :param path_app: String, the path of the decoded Apps. :param log_level: Int, 0 to 2, silent, or normal (process bar), or verbose mode. :return: List, compressed images. """ results = [] log_helper = ProcessPrinter(len(data_pa) / 20, log_level) for app_name, wid_name, img_name, layout, _ in data_pa: result, result_path, result_traces = extract_drawable_image( app_name, img_name, path_app) results.append(result) log_helper.update('[image]', app_name, wid_name, img_name, layout, ':', (result[0], result[1]) if result is not None else result) log_helper.finish() return results
def extract_layout_texts(data_pa, path_app, search_range, log_level=0): results = [] log_helper = ProcessPrinter(len(data_pa) / 20, log_level) for app_name, img_name, layout, _ in data_pa: result = handle_layout_text(app_name, img_name, layout, path_app, search_range) results.append(result) log_helper.update('[layout]', app_name, img_name, layout, ':', result) log_helper.finish() return results
def extract_resource_texts(data_pa, log_level=0): results = [] log_helper = ProcessPrinter(len(data_pa) / 20, log_level) for app_name, img_name, layout, _ in data_pa: result = handle_resource_text(img_name) results.append(result) log_helper.update('[res]', app_name, img_name, layout, ':', result) log_helper.finish() return results
def extract_embedded_texts(data_pa, drawable_images, app2lang, east_model, ocr_size, ocr_padding, enable_cache=True, log_level=0): results = [] log_helper = ProcessPrinter(len(data_pa) / 20, log_level) for i in range(len(data_pa)): app_name, img_name, layout, _ = data_pa[i] result = extract_embedded_text(app_name, img_name, drawable_images[i], east_model, app2lang[app_name], 'english', ocr_size, ocr_padding, enable_cache) results.append(result) log_helper.update('[embedded]', app_name, img_name, layout, ':', result) log_helper.finish() return results
def translate_texts(data_pa, texts, enable_cache=True, log_level=0): from translate_text import translate_any_to_english assert len(data_pa) == len(texts) results = [] log_helper = ProcessPrinter(sum([len(t) for t in texts]) / 20, log_level) for i in range(len(data_pa)): app_name, img_name, layout, _ = data_pa[i] translated = [] for t in texts[i]: r = translate_any_to_english(t, enable_cache) translated.append(r) log_helper.update('[translate]', app_name, img_name, layout, ':', t, '->', r) results.append(translated) log_helper.finish() return results