def xianyu(test_folder, show=False, write_img=True):

    all_imgs = glob.glob(test_folder + "/**")

    for input_path_img in all_imgs:
        postfix = input_path_img.split(".")[-1].lower()
        if postfix not in ["jpeg", "jpg", "png"]:
            continue

        name = os.path.basename(input_path_img).split('.')[0]

        org = cv2.imread(input_path_img)
        img = utils.resize_by_height(org, resize_height=800)

        compo = detect_compo(img, show=show)
        text = ocr.ocr(org, resize_height=800, show=show)
        compo_merge, categories = merge.incorporate(img,
                                                    compo,
                                                    text,
                                                    show=show)

        utils.draw_bounding_box_class(
            img,
            compo_merge,
            categories,
            output=pjoin(test_folder,
                         str(name) + '_det.png'),
        )
        utils.save_corners_json(pjoin(test_folder,
                                      str(name) + '_det.json'), compo_merge,
                                categories)
def ocr(img, resize_height=800, output_path=None, show=False):
    start = time.clock()
    data = pyt.image_to_data(img)
    bboxes = []
    # level|page_num|block_num|par_num|line_num|word_num|left|top|width|height|conf|text
    for d in data.split('\n')[1:]:
        d = d.split()
        conf = d[10]
        if int(conf) != -1:
            bboxes.append([
                int(d[6]),
                int(d[7]),
                int(d[6]) + int(d[8]),
                int(d[7]) + int(d[9])
            ])
    bboxes = merge_text(bboxes)
    bboxes = resize_label(bboxes, img.shape[0], resize_height)
    resize_img = utils.resize_by_height(img, resize_height)
    utils.draw_bounding_box(resize_img,
                            bboxes,
                            name='ocr',
                            color=(255, 6, 6),
                            show=show)
    if output_path is not None:
        utils.save_corners_json(output_path + '.json', bboxes, 'Text')
    # print('OCR [%.3fs] %s' % (time.clock() - start, img_path))
    return bboxes
Пример #3
0
def xianyu(input_path_img, output_path, num, show=False, write_img=False):

    start = time.clock()
    org = cv2.imread(input_path_img)
    img = utils.resize_by_height(org, resize_height=800)

    compo = detect_compo(img,
                         show=show,
                         output_path=output_path.replace(
                             'rico_xianyu_bg_ocr', 'rico_xianyu_bg_cv'))
    text = ocr.ocr(org, show=show)
    compo_merge, categories = merge.incorporate(img, compo, text, show=show)

    utils.draw_bounding_box_class(img, compo_merge, categories, show=show)
    utils.draw_bounding_box_class(img,
                                  compo_merge,
                                  categories,
                                  name='non-text',
                                  non_text=True,
                                  show=show)

    # compo_merge = merge.merge_intersected_compo(compo_merge)
    utils.draw_bounding_box(img, compo_merge, name='merged', show=show)
    utils.save_corners_json(output_path + '.json', compo_merge, categories)
    print('[%.3fs] %d %s' % (time.clock() - start, num, input_path_img))
Пример #4
0
def xianyu(input_img_root='E:\\Mulong\\Datasets\\rico\\combined',
           output_root='E:\\Mulong\\Result\\rico\\rico_xianyu\\rico_xianyu_bg_ocr',
           show=False, write_img=False):
    data = json.load(open('E:\\Mulong\\Datasets\\rico\\instances_test.json', 'r'))
    input_paths_img = [pjoin(input_img_root, img['file_name'].split('/')[-1]) for img in data['images']]
    input_paths_img = sorted(input_paths_img, key=lambda x: int(x.split('\\')[-1][:-4]))  # sorted by index

    num = 0
    start_index = 3762
    end_index = 100000
    for input_path_img in input_paths_img:
        index = input_path_img.split('\\')[-1][:-4]
        if int(index) < start_index:
            continue
        if int(index) > end_index:
            break

        start = time.clock()
        org = cv2.imread(input_path_img)
        img = utils.resize_by_height(org, resize_height=800)

        compo = detect_compo(img, show=show)
        text = ocr.ocr(org, show=show)
        compo_merge, categories = merge.incorporate(img, compo, text, show=show)

        utils.draw_bounding_box_class(img, compo_merge, categories)
        utils.save_corners_json(pjoin(output_root, str(index) + '.json'), compo_merge, categories)
        print('[%.3fs] %d %s' % (time.clock() - start, num, input_path_img))
        num += 1
def detect_compo(org, output_path=None, show=False):
    start = time.clock()
    grad = gradient_laplacian(org)
    rm_noise_flood_fill(grad, show=False)
    compo_bbox = []
    slicing(grad, compo_bbox, (0, 0), show=False)
    utils.draw_bounding_box(org, compo_bbox, show=show)
    if output_path is not None:
        utils.save_corners_json(output_path + '.json', compo_bbox, np.full(len(compo_bbox), 'Compo'))
    # print('Compo det [%.3fs]' % (time.clock() - start))
    return compo_bbox
Пример #6
0
def xianyu(input_path_img, output_path, show=False):

    start = time.clock()
    org = cv2.imread(input_path_img)
    img = utils.resize_by_height(org, resize_height=800)

    compo = detect_compo(img, show=show)
    text = ocr.ocr(org, show=show)
    compo_merge, categories = merge.incorporate(img, compo, text, show=show)

    output_path_img = output_path.split('.')[0] + '.png'
    output_path_json = output_path.split('.')[0] + '.json'

    utils.draw_bounding_box_class(img,
                                  compo_merge,
                                  categories,
                                  output=output_path_img)
    utils.save_corners_json(output_path_json, compo_merge, categories)
    print('[%.3fs] %s' % (time.clock() - start, input_path_img))