refactoring
This commit is contained in:
parent
39c111fd42
commit
65a4a8e34e
@ -17,13 +17,13 @@ class CoordinateTransformer(Transformer):
|
||||
try:
|
||||
return self._forward(metadata)
|
||||
except TypeError:
|
||||
return map(self._forward, metadata)
|
||||
return list(map(self._forward, metadata))
|
||||
|
||||
def backward(self, metadata):
|
||||
try:
|
||||
return self._backward(metadata)
|
||||
except TypeError:
|
||||
return map(self._backward, metadata)
|
||||
return list(map(self._backward, metadata))
|
||||
|
||||
def transform(self, metadata):
|
||||
return self.forward(metadata)
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
import numpy as np
|
||||
import pytest
|
||||
from fpdf import fpdf
|
||||
from funcy import project, second, compose
|
||||
from funcy import compose
|
||||
from pdf2image import pdf2image
|
||||
|
||||
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.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
||||
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
|
||||
def position_metadata_in_given_system(corner, coordinate_system):
|
||||
def position_metadata_in_given_system(corner, coordinate_system, coordinate_type):
|
||||
if coordinate_system == "fpdf":
|
||||
return get_fpdf_coordinates(corner)
|
||||
coordinates = get_fpdf_coordinates(corner)
|
||||
|
||||
elif coordinate_system == "fitz":
|
||||
return get_fitz_coordinates(corner)
|
||||
coordinates = get_fitz_coordinates(corner)
|
||||
|
||||
elif coordinate_system == "pdfnet":
|
||||
return get_pdfnet_coordinates(corner)
|
||||
coordinates = get_pdfnet_coordinates(corner)
|
||||
|
||||
else:
|
||||
raise ValueError(f"Unknown coordinate system: {coordinate_system}")
|
||||
|
||||
return [coordinates, coordinates] if coordinate_type == "list" else coordinates
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def position_metadata_in_reference_system(corner):
|
||||
return get_fpdf_coordinates(corner)
|
||||
def position_metadata_in_reference_system(corner, coordinate_type):
|
||||
coordinates = get_fpdf_coordinates(corner)
|
||||
return [coordinates, coordinates] if coordinate_type == "list" else coordinates
|
||||
|
||||
|
||||
@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("coordinate_system", ["fitz"])
|
||||
def test_fitz_coordinate_transformer(
|
||||
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
|
||||
|
||||
def test_fitz_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
|
||||
transformer = FitzCoordinateTransformer()
|
||||
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
|
||||
@ -142,25 +138,6 @@ def test_fitz_coordinate_transformer(
|
||||
)(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("coordinate_system", ["pdfnet"])
|
||||
def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, position_metadata_in_reference_system):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user