added cooridate transformation testing by images
This commit is contained in:
parent
1ffc9dcc68
commit
89afb8f920
@ -4,6 +4,7 @@ from fpdf import fpdf
|
||||
from funcy import compose
|
||||
from pdf2image import pdf2image
|
||||
|
||||
from image_prediction.estimator.preprocessor.utils import image_to_normalized_tensor
|
||||
from image_prediction.image_extractor.extractor import ImageMetadataPair
|
||||
from image_prediction.info import Info
|
||||
from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer
|
||||
@ -65,6 +66,16 @@ def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, positi
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("coordinate_system", ["fpdf"])
|
||||
def test_fpdf_coordinate_transformer_by_image(position_metadata_in_given_system, position_metadata_in_reference_system):
|
||||
metadata_transformed = FPDFCoordinateTransformer()(position_metadata_in_given_system)
|
||||
|
||||
target_image = metadata_to_test_image(position_metadata_in_reference_system)
|
||||
test_image = metadata_to_test_image(metadata_transformed)
|
||||
|
||||
assert np.allclose(target_image, test_image)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def position_metadata_in_given_system(corner, corner2metadata_in_given_system):
|
||||
return corner2metadata_in_given_system[corner]
|
||||
@ -160,31 +171,25 @@ def base_position_metadata(width=100, height=100):
|
||||
}
|
||||
|
||||
|
||||
# utils not needed for tests but for inferring new coordinates systems:
|
||||
def metadata_to_test_image(metadata):
|
||||
image = get_coordinate_test_image()
|
||||
pdf = get_coordinate_test_fpdf()
|
||||
add_image(pdf, ImageMetadataPair(image, metadata))
|
||||
page_image = fpdf_to_page_tensor(pdf)
|
||||
return page_image
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def coordinate_test_pdf(position_metadata_in_given_system, coordinate_test_image, coordinate_test_fpdf):
|
||||
add_image(coordinate_test_fpdf, ImageMetadataPair(coordinate_test_image, position_metadata_in_given_system))
|
||||
return coordinate_test_fpdf.output(dest="S").encode("latin1")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def coordinate_test_image():
|
||||
def get_coordinate_test_image():
|
||||
return array_to_image(np.zeros(shape=(100, 100, 3)))
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def coordinate_test_fpdf():
|
||||
def get_coordinate_test_fpdf():
|
||||
pdf = fpdf.FPDF(unit="pt", format=(300, 300))
|
||||
return pdf
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def coordinate_test_page_image(coordinate_test_pdf):
|
||||
return pdf2image.convert_from_bytes(coordinate_test_pdf)[0]
|
||||
|
||||
|
||||
@pytest.fixture(params=["list", "dict"])
|
||||
def coordinate_type(request):
|
||||
return request.param
|
||||
def fpdf_to_page_tensor(fpdf):
|
||||
pdf = fpdf.output(dest="S").encode("latin1")
|
||||
page_image = pdf2image.convert_from_bytes(pdf)[0]
|
||||
tensor = image_to_normalized_tensor(page_image)
|
||||
return tensor
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user