Ejemplo n.º 1
0
def test_full(progress, experimental):
    init_test()
    os.environ["PROGRESS"] = progress
    os.environ["EXPERIMENTAL"] = experimental
    root_folder = f"/results/full-{progress}-{experimental}"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)
    config = {
        "args": {
            "level": True,
            "tesseract": False,
            "num_angles": 179
        },
        "destination": os.path.join(root_folder, "final.pdf"),
    }
    step = {"sources": [os.path.join(os.path.dirname(__file__), "all-1.png")]}
    step = process.transform(config, step, "/tmp/test-config.yaml",
                             root_folder)
    assert len(step["sources"]) == 1
    check_image_file(root_folder, step["sources"][0], "all-1")

    if progress == "TRUE":
        assert os.path.exists(os.path.join(root_folder, "0-level/all-1.png"))
    else:
        assert not os.path.exists(os.path.join(root_folder, "0-level"))
    if experimental == "TRUE":
        assert os.path.exists(os.path.join(root_folder, "tesseract/all-1.png"))
    else:
        assert not os.path.exists(os.path.join(root_folder, "tesseract"))

    assert step["name"] == "finalise"
    process.finalize(config, step, root_folder)
    pdfinfo = process.output(
        ["pdfinfo", os.path.join(root_folder, "final.pdf")]).split("\n")
    regex = re.compile(r"([a-zA-Z ]+): +(.*)")
    pdfinfo = [regex.match(e) for e in pdfinfo]
    pdfinfo = dict([e.groups() for e in pdfinfo if e is not None])
    assert pdfinfo["Pages"] == "1"
    process.call([
        "gm",
        "convert",
        os.path.join(root_folder, "final.pdf"),
        "+adjoin",
        os.path.join(root_folder, "final.png"),
    ])
    check_image_file(root_folder, os.path.join(root_folder, "final.png"),
                     "all-2")
    shutil.rmtree(root_folder)
Ejemplo n.º 2
0
def test_custom_process(test, args):
    init_test()
    root_folder = f"/results/600"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)
    config = {
        "args": args,
    }
    step = {
        "sources": [os.path.join(os.path.dirname(__file__), f"{test}.png")]
    }
    step = process.transform(config, step, "/tmp/test-config.yaml",
                             root_folder)
    assert len(step["sources"]) == 1
    check_image_file(root_folder, step["sources"][0], test)
    shutil.rmtree(root_folder)
Ejemplo n.º 3
0
def test_credit_card_full():
    init_test()
    #    os.environ['PROGRESS'] = 'TRUE'
    root_folder = "/results/credit-card"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)
    config = {
        "args": {
            "level": True,
            "append_credit_card": True,
            "num_angles": 179
        },
        "destination": os.path.join(root_folder, "final.pdf"),
    }
    step = {
        "sources": [
            os.path.join(os.path.dirname(__file__), "credit-card-1.png"),
            os.path.join(os.path.dirname(__file__), "credit-card-2.png"),
        ]
    }
    step = process.transform(config, step, "/tmp/test-config.yaml",
                             root_folder)
    assert len(step["sources"]) == 2
    assert step["name"] == "finalise"
    process.finalize(config, step, root_folder)
    pdfinfo = process.output(
        ["pdfinfo", os.path.join(root_folder, "final.pdf")]).split("\n")
    regex = re.compile(r"([a-zA-Z ]+): +(.*)")
    pdfinfo = [regex.match(e) for e in pdfinfo]
    pdfinfo = dict([e.groups() for e in pdfinfo if e is not None])
    assert pdfinfo["Pages"] == "1"
    process.call([
        "gm",
        "convert",
        os.path.join(root_folder, "final.pdf"),
        "+adjoin",
        os.path.join(root_folder, "final.png"),
    ])
    check_image_file(root_folder, os.path.join(root_folder, "final.png"),
                     "credit-card-1")
    shutil.rmtree(root_folder)
Ejemplo n.º 4
0
def test_empty():
    init_test()
    #    os.environ['PROGRESS'] = 'TRUE'
    root_folder = "/results/empty"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)
    config = {
        "args": {
            "level": True,
        },
        "destination": os.path.join(root_folder, "final.pdf"),
    }
    step = {
        "sources": [
            os.path.join(os.path.dirname(__file__), "empty.png"),
        ]
    }
    step = process.transform(config, step, "/tmp/test-config.yaml",
                             root_folder)
    assert len(step["sources"]) == 0
    assert step["name"] == "finalise"
    shutil.rmtree(root_folder)
Ejemplo n.º 5
0
def test_assisted_split_join_full():
    init_test()
    #    os.environ['PROGRESS'] = 'TRUE'
    root_folder = "/results/assisted-split-join-full"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)

    for number in (1, 2):
        shutil.copyfile(
            os.path.join(os.path.dirname(__file__),
                         f"split-join-{number}.png"),
            os.path.join(root_folder, f"image-{number}.png"),
        )

    config = {
        "args": {
            "assisted_split": True,
            "level": True,
            "tesseract": False,
            "num_angles": 179
        },
        "destination": os.path.join(root_folder, "final.pdf"),
    }
    step = {
        "sources": ["image-1.png", "image-2.png"],
    }
    config_file_name = os.path.join(root_folder, "config.yaml")
    step = process.transform(config, step, config_file_name, root_folder)
    assert step["name"] == "split"
    images = step["sources"]
    assert os.path.basename(images[0]) == config["assisted_split"][0]["image"]
    assert len(images) == 2
    for number, elements in enumerate([
        ({
            "value": 738,
            "vertical": True,
            "margin": 0
        }, ["-", "1.2"]),
        ({
            "value": 3300,
            "vertical": True,
            "margin": 0
        }, ["1.1", "-"]),
    ]):
        limit, destinations = elements
        config["assisted_split"][number]["limits"] = [limit]
        config["assisted_split"][number]["destinations"] = destinations
    step = process.split(config, step, root_folder)
    assert step["name"] == "finalise"
    assert len(step["sources"]) == 1
    check_image_file(root_folder, step["sources"][0], "assisted-split-join-1")

    process.finalize(config, step, root_folder)
    pdfinfo = process.output(
        ["pdfinfo", os.path.join(root_folder, "final.pdf")]).split("\n")
    regex = re.compile(r"([a-zA-Z ]+): +(.*)")
    pdfinfo = [regex.match(e) for e in pdfinfo]
    pdfinfo = dict([e.groups() for e in pdfinfo if e is not None])
    assert pdfinfo["Pages"] == "1"
    process.call([
        "gm",
        "convert",
        os.path.join(root_folder, "final.pdf"),
        "+adjoin",
        os.path.join(root_folder, "final.png"),
    ])
    check_image_file(root_folder, os.path.join(root_folder, "final.png"),
                     "assisted-split-join-2")
    shutil.rmtree(root_folder)
Ejemplo n.º 6
0
def test_assisted_split_full(type_, limit):
    init_test()
    #    os.environ['PROGRESS'] = 'TRUE'
    root_folder = f"/results/assisted-split-full-{type_}"
    if not os.path.exists(root_folder):
        os.makedirs(root_folder)

    shutil.copyfile(
        os.path.join(os.path.dirname(__file__), f"limit-{type_}-all-1.png"),
        os.path.join(root_folder, "image-1.png"),
    )
    config = {
        "args": {
            "assisted_split": True,
            "level": True,
            "tesseract": False,
            "sharpen": True,
            "num_angles": 179,
            "threshold_block_size_crop": 20,
            "threshold_value_c_crop": 20,
        },
        "destination": os.path.join(root_folder, "final.pdf"),
    }
    step = {
        "sources": ["image-1.png"],
    }
    config_file_name = os.path.join(root_folder, "config.yaml")
    step = process.transform(config, step, config_file_name, root_folder)
    assert step["name"] == "split"
    images = step["sources"]
    assert len(images) == 1
    assert os.path.basename(images[0]) == config["assisted_split"][0]["image"]
    check_image_file(root_folder, images[0], f"assisted-split-{type_}-1",
                     0.998)
    # check_image_file(root_folder, config['assisted_split'][0]['source'], 'assisted-split-{}-2'.format(type_))
    limits = [
        item for item in config["assisted_split"][0]["limits"]
        if item["vertical"]
    ]
    print(json.dumps(limits))
    assert not [item for item in limits if item["name"] == "C"
                ], "We shouldn't have center limit"
    limits = [item for item in limits if item["name"] == limit["name"]]
    assert limits == [limit]
    config["assisted_split"][0]["limits"] = limits
    check_image_file(root_folder, images[0], f"assisted-split-{type_}-1",
                     0.998)
    step = process.split(config, step, root_folder)
    assert len(step["sources"]) == 2
    assert step["name"] == "finalise"
    check_image_file(root_folder, step["sources"][0],
                     f"assisted-split-{type_}-3")
    check_image_file(root_folder, step["sources"][1],
                     f"assisted-split-{type_}-4")
    process.finalize(config, step, root_folder)
    pdfinfo = process.output(
        ["pdfinfo", os.path.join(root_folder, "final.pdf")]).split("\n")
    regex = re.compile(r"([a-zA-Z ]+): +(.*)")
    pdfinfo = [regex.match(e) for e in pdfinfo]
    pdfinfo = dict([e.groups() for e in pdfinfo if e is not None])
    assert pdfinfo["Pages"] == "2"
    process.call([
        "gm",
        "convert",
        os.path.join(root_folder, "final.pdf"),
        "+adjoin",
        os.path.join(root_folder, "final.png"),
    ])
    check_image_file(root_folder, os.path.join(root_folder, "final.png"),
                     f"assisted-split-{type_}-5")
    shutil.rmtree(root_folder)