From c1c3f541d44c0b11c655e1b5521ea69258448a9c Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Sun, 3 Apr 2022 01:45:01 +0200 Subject: [PATCH] coordinate transformer wip --- requirements.txt | 2 + .../unit_tests/coordinate_transformer_test.py | 51 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 test/unit_tests/coordinate_transformer_test.py diff --git a/requirements.txt b/requirements.txt index 481d3bc..8caf5f5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -21,3 +21,5 @@ PyMuPDF==1.19.6 fpdf==1.7.2 coverage==6.3.2 Pillow==9.1.0 +PDFNetPython3~=9.1.0 +pdf2image==1.16.0 \ No newline at end of file diff --git a/test/unit_tests/coordinate_transformer_test.py b/test/unit_tests/coordinate_transformer_test.py new file mode 100644 index 0000000..ddbab88 --- /dev/null +++ b/test/unit_tests/coordinate_transformer_test.py @@ -0,0 +1,51 @@ +import numpy as np +import pytest +from fpdf import fpdf +from pdf2image import pdf2image + +from image_prediction.image_extractor.extractor import ImageMetadataPair +from image_prediction.info import Info +from test.conftest import array_to_image, add_image + + +@pytest.fixture +def coordinate_test_image(): + return array_to_image(np.zeros(shape=(100, 100, 3))) + + +@pytest.fixture +def coordinate_test_fpdf(): + pdf = fpdf.FPDF(unit="pt", format=(200, 200)) + return pdf + + +@pytest.fixture +def position_metadata(corner): + metadata = {Info.X1: 0, Info.Y1: 0, Info.WIDTH: 100, Info.HEIGHT: 100, Info.PAGE_IDX: 0} + + if corner == "top left": + metadata.update({Info.X1: 0, Info.Y1: 0}) + + elif corner == "bottom left": + metadata.update({Info.X1: 0, Info.Y1: 100}) + + return metadata + + +@pytest.fixture +def coordinate_test_pdf(position_metadata, coordinate_test_image, coordinate_test_fpdf): + add_image(coordinate_test_fpdf, ImageMetadataPair(coordinate_test_image, position_metadata)) + return coordinate_test_fpdf.output(dest="S").encode("latin1") + + +@pytest.fixture +def coordinate_test_page_image(coordinate_test_pdf): + return pdf2image.convert_from_bytes(coordinate_test_pdf)[0] + + +@pytest.mark.parametrize("corner", ["top left", "bottom left"]) +def test_coordinate_transformer(position_metadata, coordinate_test_page_image): + # coordinate_test_pdf.output("/tmp/x.pdf") + # coordinate_test_page_image.show() + +