From 89baa2c074bf910756a7625e7dad550cd7f893d5 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Wed, 3 Jan 2024 11:43:03 +0100 Subject: [PATCH] TST: Add test for layout extraction mode (#2390) --- resources/multicolumn-lorem-ipsum.txt | 44 +++++++++++++++++++++++++++ tests/test_workflows.py | 12 ++++++++ 2 files changed, 56 insertions(+) create mode 100644 resources/multicolumn-lorem-ipsum.txt diff --git a/resources/multicolumn-lorem-ipsum.txt b/resources/multicolumn-lorem-ipsum.txt new file mode 100644 index 000000000..7ef043366 --- /dev/null +++ b/resources/multicolumn-lorem-ipsum.txt @@ -0,0 +1,44 @@ + Two-Column Document with Lorem Ipsum + + Your Name + January 3, 2024 + +Abstract pellentesque ante. Phasellus adipiscing semper elit. + Proin fermentum massa ac quam. Sed diam turpis, +This is a sample document with two columns filled molestie vitae, placerat a, molestie nec, leo. Maece- +with Lorem Ipsum text. nas lacinia. Nam ipsum ligula, eleifend at, accumsan + Lorem ipsum dolor sit amet, consectetuer adip- nec, suscipit a, ipsum. Morbi blandit ligula feugiat +iscing elit. Ut purus elit, vestibulum ut, placerat magna. Nunc eleifend consequat lorem. Sed lacinia +ac, adipiscing vitae, felis. Curabitur dictum gravida nulla vitae enim. Pellentesque tincidunt purus vel +mauris. Nam arcu libero, nonummy eget, con- magna. Integer non enim. Praesent euismod nunc +sectetuer id, vulputate a, magna. Donec vehicula eu purus. Donec bibendum quam in tellus. Nullam +augue eu neque. Pellentesque habitant morbi tris- cursus pulvinar lectus. Donec et mi. Nam vulpu- +tique senectus et netus et malesuada fames ac turpis tate metus eu enim. Vestibulum pellentesque felis eu +egestas. Mauris ut leo. Cras viverra metus rhon- massa. +cus sem. Nulla et lectus vestibulum urna fringilla Quisque ullamcorper placerat ipsum. Cras nibh. +ultrices. Phasellus eu tellus sit amet tortor gravida Morbi vel justo vitae lacus tincidunt ultrices. Lorem +placerat. Integer sapien est, iaculis in, pretium quis, ipsum dolor sit amet, consectetuer adipiscing elit. In +viverra ac, nunc. Praesent eget sem vel leo ultri- hachabitasseplateadictumst. Integertempusconva- +ces bibendum. Aenean faucibus. Morbi dolor nulla, llis augue. Etiam facilisis. Nunc elementum fermen- +malesuada eu, pulvinar at, mollis ac, nulla. Cur- tum wisi. Aenean placerat. Ut imperdiet, enim sed +abitur auctor semper nulla. Donec varius orci eget gravida sollicitudin, felis odio placerat quam, ac pul- +risus. Duis nibh mi, congue eu, accumsan eleifend, vinar elit purus eget enim. Nunc vitae tortor. Proin +sagittis quis, diam. Duis eget orci sit amet orci dig- tempus nibh sit amet nisl. Vivamus quis tortor vitae +nissim rutrum. risus porta vehicula. + Nam dui ligula, fringilla a, euismod sodales, sollic- +itudin vel, wisi. Morbi auctor lorem non justo. Nam Fusce mauris. Vestibulum luctus nibh at lectus. +lacus libero, pretium at, lobortis vitae, ultricies et, Sed bibendum, nulla a faucibus semper, leo velit ul- +tellus. Donec aliquet, tortor sed accumsan biben- tricies tellus, ac venenatis arcu wisi vel nisl. Vestibu- +dum, erat ligula aliquet magna, vitae ornare odio lum diam. Aliquam pellentesque, augue quis sagittis +metus a mi. Morbi ac orci et nisl hendrerit mollis. posuere, turpis lacus congue quam, in hendrerit risus +Suspendisse ut massa. Cras nec ante. Pellentesque eros eget felis. Maecenas eget erat in sapien mattis +a nulla. Cum sociis natoque penatibus et magnis dis porttitor. Vestibulum porttitor. Nulla facilisi. Sed +parturient montes, nascetur ridiculus mus. Aliquam a turpis eu lacus commodo facilisis. Morbi fringilla, +tincidunturna. Nullaullamcorpervestibulumturpis. wisi in dignissim interdum, justo lectus sagittis dui, +Pellentesque cursus luctus mauris. et vehicula libero dui cursus dui. Mauris tempor + Nulla malesuada porttitor diam. Donec felis erat, ligula sed lacus. Duis cursus enim ut augue. Cras +congue non, volutpat at, tincidunt tristique, libero. ac magna. Cras nulla. Nulla egestas. Curabitur a +Vivamus viverra fermentum felis. Donec nonummy leo. Quisque egestas wisi eget nunc. Nam feugiat + + + 1 \ No newline at end of file diff --git a/tests/test_workflows.py b/tests/test_workflows.py index 6cc0fe750..bab772220 100644 --- a/tests/test_workflows.py +++ b/tests/test_workflows.py @@ -24,6 +24,7 @@ TESTS_ROOT = Path(__file__).parent.resolve() PROJECT_ROOT = TESTS_ROOT.parent RESOURCE_ROOT = PROJECT_ROOT / "resources" +SAMPLE_ROOT = PROJECT_ROOT / "sample-files" sys.path.append(str(PROJECT_ROOT)) @@ -1039,3 +1040,14 @@ def test_cr_with_cm_operation(): ) # currently threre is still a white space on last line missing # so we can not do a full comparison. + + +@pytest.mark.samples() +@pytest.mark.xfail(reason="#2388 implements this") +def test_text_extraction_layout_mode(): + pdf_path = SAMPLE_ROOT / "026-latex-multicolumn/multicolumn.pdf" + reader = PdfReader(pdf_path) + actual = reader.pages[0].extract_text(extraction_mode="layout") + with open(RESOURCE_ROOT / "multicolumn-lorem-ipsum.txt") as fp: + expected = fp.read() + assert actual.strip() == expected.strip()