refactoring
This commit is contained in:
parent
39c111fd42
commit
65a4a8e34e
@ -17,13 +17,13 @@ class CoordinateTransformer(Transformer):
|
|||||||
try:
|
try:
|
||||||
return self._forward(metadata)
|
return self._forward(metadata)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return map(self._forward, metadata)
|
return list(map(self._forward, metadata))
|
||||||
|
|
||||||
def backward(self, metadata):
|
def backward(self, metadata):
|
||||||
try:
|
try:
|
||||||
return self._backward(metadata)
|
return self._backward(metadata)
|
||||||
except TypeError:
|
except TypeError:
|
||||||
return map(self._backward, metadata)
|
return list(map(self._backward, metadata))
|
||||||
|
|
||||||
def transform(self, metadata):
|
def transform(self, metadata):
|
||||||
return self.forward(metadata)
|
return self.forward(metadata)
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pytest
|
import pytest
|
||||||
from fpdf import fpdf
|
from fpdf import fpdf
|
||||||
from funcy import project, second, compose
|
from funcy import compose
|
||||||
from pdf2image import pdf2image
|
from pdf2image import pdf2image
|
||||||
|
|
||||||
from image_prediction.image_extractor.extractor import ImageMetadataPair
|
from image_prediction.image_extractor.extractor import ImageMetadataPair
|
||||||
from image_prediction.image_extractor.extractors.parsable import ParsablePDFImageExtractor
|
|
||||||
from image_prediction.info import Info
|
from image_prediction.info import Info
|
||||||
from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
||||||
from image_prediction.transformer.transformers.coordinate.fpdf import FPDFCoordinateTransformer
|
from image_prediction.transformer.transformers.coordinate.fpdf import FPDFCoordinateTransformer
|
||||||
@ -74,24 +73,32 @@ def base_position_metadata(width=100, height=100):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(params=["list", "dict"])
|
||||||
|
def coordinate_type(request):
|
||||||
|
return request.param
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def position_metadata_in_given_system(corner, coordinate_system):
|
def position_metadata_in_given_system(corner, coordinate_system, coordinate_type):
|
||||||
if coordinate_system == "fpdf":
|
if coordinate_system == "fpdf":
|
||||||
return get_fpdf_coordinates(corner)
|
coordinates = get_fpdf_coordinates(corner)
|
||||||
|
|
||||||
elif coordinate_system == "fitz":
|
elif coordinate_system == "fitz":
|
||||||
return get_fitz_coordinates(corner)
|
coordinates = get_fitz_coordinates(corner)
|
||||||
|
|
||||||
elif coordinate_system == "pdfnet":
|
elif coordinate_system == "pdfnet":
|
||||||
return get_pdfnet_coordinates(corner)
|
coordinates = get_pdfnet_coordinates(corner)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
raise ValueError(f"Unknown coordinate system: {coordinate_system}")
|
raise ValueError(f"Unknown coordinate system: {coordinate_system}")
|
||||||
|
|
||||||
|
return [coordinates, coordinates] if coordinate_type == "list" else coordinates
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def position_metadata_in_reference_system(corner):
|
def position_metadata_in_reference_system(corner, coordinate_type):
|
||||||
return get_fpdf_coordinates(corner)
|
coordinates = get_fpdf_coordinates(corner)
|
||||||
|
return [coordinates, coordinates] if coordinate_type == "list" else coordinates
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
@ -120,18 +127,7 @@ def test_fpdf_coordinate_transformer(position_metadata_in_given_system, position
|
|||||||
|
|
||||||
@pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
|
@pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
|
||||||
@pytest.mark.parametrize("coordinate_system", ["fitz"])
|
@pytest.mark.parametrize("coordinate_system", ["fitz"])
|
||||||
def test_fitz_coordinate_transformer(
|
def test_fitz_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
|
||||||
position_metadata_in_given_system, position_metadata_in_reference_system, coordinate_test_pdf,
|
|
||||||
coordinate_test_fpdf
|
|
||||||
):
|
|
||||||
# coordinate_test_fpdf.output("/tmp/x.pdf")
|
|
||||||
# coordinate_test_page_image.show()
|
|
||||||
|
|
||||||
metadata_extracted = next(map(second, ParsablePDFImageExtractor()(coordinate_test_pdf)))
|
|
||||||
position_extracted = project(metadata_extracted, list(position_metadata_in_given_system.keys()))
|
|
||||||
|
|
||||||
assert position_extracted == position_metadata_in_given_system
|
|
||||||
|
|
||||||
transformer = FitzCoordinateTransformer()
|
transformer = FitzCoordinateTransformer()
|
||||||
assert transformer.forward(position_metadata_in_given_system) == position_metadata_in_reference_system
|
assert transformer.forward(position_metadata_in_given_system) == position_metadata_in_reference_system
|
||||||
assert transformer.backward(position_metadata_in_reference_system) == position_metadata_in_given_system
|
assert transformer.backward(position_metadata_in_reference_system) == position_metadata_in_given_system
|
||||||
@ -142,25 +138,6 @@ def test_fitz_coordinate_transformer(
|
|||||||
)(position_metadata_in_reference_system) == position_metadata_in_reference_system
|
)(position_metadata_in_reference_system) == position_metadata_in_reference_system
|
||||||
|
|
||||||
|
|
||||||
# @pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
|
|
||||||
# @pytest.mark.parametrize("coordinate_system", ["fitz"])
|
|
||||||
# def test_pdfnet_coordinate_transformer(
|
|
||||||
# position_metadata_in_given_system, position_metadata_in_reference_system, coordinate_test_fpdf, coordinate_test_page_image
|
|
||||||
# ):
|
|
||||||
# # coordinate_test_page_image.show()
|
|
||||||
# # coordinate_test_fpdf.output("/tmp/xyz.pdf")
|
|
||||||
#
|
|
||||||
# position_metadata_transformed = PDFNetCoordinateTransformer().forward(position_metadata_in_reference_system)
|
|
||||||
# print(json.dumps(EnumFormatter()(position_metadata_transformed), indent=2))
|
|
||||||
#
|
|
||||||
# with tempfile.NamedTemporaryFile(suffix=".pdf") as f:
|
|
||||||
# coordinate_test_fpdf.output(f.name)
|
|
||||||
# draw_metadata_box(f.name, EnumFormatter()(position_metadata_transformed),
|
|
||||||
# # os.path.join("/tmp", os.path.basename(f.name.replace(".pdf", "_annotated.pdf")))
|
|
||||||
# "/tmp/bla.pdf"
|
|
||||||
# )
|
|
||||||
# input()
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
|
@pytest.mark.parametrize("corner", ["top_left", "bottom_left"])
|
||||||
@pytest.mark.parametrize("coordinate_system", ["pdfnet"])
|
@pytest.mark.parametrize("coordinate_system", ["pdfnet"])
|
||||||
def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
|
def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user