|
|
@ -6,7 +6,8 @@ import textwrap
|
|
|
|
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
|
|
|
|
from .. import alto_namespace, alto_text, page_namespace, page_text, text
|
|
|
|
from .util import working_directory
|
|
|
|
|
|
|
|
from .. import alto_namespace, alto_text, page_namespace, page_text, plain_text, text
|
|
|
|
|
|
|
|
|
|
|
|
data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data')
|
|
|
|
data_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data')
|
|
|
|
|
|
|
|
|
|
|
@ -49,27 +50,51 @@ def test_page_namespace():
|
|
|
|
def test_page_test():
|
|
|
|
def test_page_test():
|
|
|
|
tree = ET.parse(os.path.join(data_dir, 'test.page2018.xml'))
|
|
|
|
tree = ET.parse(os.path.join(data_dir, 'test.page2018.xml'))
|
|
|
|
result = page_text(tree)
|
|
|
|
result = page_text(tree)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# We are currently normalizing on extraction, so the text is normalized.
|
|
|
|
|
|
|
|
#
|
|
|
|
|
|
|
|
# expected = textwrap.dedent("""\
|
|
|
|
|
|
|
|
# ber die vielen Sorgen wegen deelben vergaß
|
|
|
|
|
|
|
|
# Hartkopf, der Frau Amtmnnin das ver⸗
|
|
|
|
|
|
|
|
# ſproene zu berliefern. — Ein Erpreer
|
|
|
|
|
|
|
|
# wurde an ihn abgeſit, um ihn ums Him⸗
|
|
|
|
|
|
|
|
# melswien zu ſagen, daß er das Verſproene
|
|
|
|
|
|
|
|
# glei den Augenbli berbringen mte, die
|
|
|
|
|
|
|
|
# Frau Amtmnnin htte auf ihn verlaen,
|
|
|
|
|
|
|
|
# und nun wßte e nit, was e anfangen
|
|
|
|
|
|
|
|
# ſote. Den Augenbli ſote er kommen,
|
|
|
|
|
|
|
|
# ſon vergieng e in ihrer Ang. — Die
|
|
|
|
|
|
|
|
# Ge wren ſon angekommen, und es fehlte
|
|
|
|
|
|
|
|
# ihr do no an aem. —
|
|
|
|
|
|
|
|
# Hartkopf mußte er bennen, und
|
|
|
|
|
|
|
|
# endli na langem Nadenken fiel es ihm er
|
|
|
|
|
|
|
|
# wieder ein. — Er langte den Zettel aus dem
|
|
|
|
|
|
|
|
# Accisbue heraus, und ſagte ſeiner Frau, daß
|
|
|
|
|
|
|
|
# e das, was da wre, herbeyſaffen mte.
|
|
|
|
|
|
|
|
# Jndeß mangelten do einige Generalia, die
|
|
|
|
|
|
|
|
# alſo wegfielen. — Hartkopf gieng ſelb
|
|
|
|
|
|
|
|
# mit und berbrate es. —""")
|
|
|
|
expected = textwrap.dedent("""\
|
|
|
|
expected = textwrap.dedent("""\
|
|
|
|
ber die vielen Sorgen wegen deelben vergaß
|
|
|
|
über die vielen Sorgen wegen deſſelben vergaß
|
|
|
|
Hartkopf, der Frau Amtmnnin das ver⸗
|
|
|
|
Hartkopf, der Frau Amtmännin das ver-
|
|
|
|
ſproene zu berliefern. — Ein Erpreer
|
|
|
|
ſprochene zu überliefern. – Ein Erpreſſer
|
|
|
|
wurde an ihn abgeſit, um ihn ums Him⸗
|
|
|
|
wurde an ihn abgeſchickt, um ihn ums Him-
|
|
|
|
melswien zu ſagen, daß er das Verſproene
|
|
|
|
melswillen zu ſagen, daß er das Verſprochene
|
|
|
|
glei den Augenbli berbringen mte, die
|
|
|
|
gleich den Augenblick überbringen möchte, die
|
|
|
|
Frau Amtmnnin htte auf ihn verlaen,
|
|
|
|
Frau Amtmännin hätte ſich auf ihn verlaſſen,
|
|
|
|
und nun wßte e nit, was e anfangen
|
|
|
|
und nun wüßte ſie nicht, was ſie anfangen
|
|
|
|
ſote. Den Augenbli ſote er kommen,
|
|
|
|
ſollte. Den Augenblick ſollte er kommen,
|
|
|
|
ſon vergieng e in ihrer Ang. — Die
|
|
|
|
ſonſt vergieng ſie in ihrer Angſt. – Die
|
|
|
|
Ge wren ſon angekommen, und es fehlte
|
|
|
|
Gäſte wären ſchon angekommen, und es fehlte
|
|
|
|
ihr do no an aem. —
|
|
|
|
ihr doch noch an allem. –
|
|
|
|
Hartkopf mußte er bennen, und
|
|
|
|
Hartkopf mußte ſich erſt beſinnen, und
|
|
|
|
endli na langem Nadenken fiel es ihm er
|
|
|
|
endlich nach langem Nachdenken fiel es ihm erſt
|
|
|
|
wieder ein. — Er langte den Zettel aus dem
|
|
|
|
wieder ein. – Er langte den Zettel aus dem
|
|
|
|
Accisbue heraus, und ſagte ſeiner Frau, daß
|
|
|
|
Accisbuche heraus, und ſagte ſeiner Frau, daß
|
|
|
|
e das, was da wre, herbeyſaffen mte.
|
|
|
|
ſie das, was da wäre, herbeyſchaffen möchte.
|
|
|
|
Jndeß mangelten do einige Generalia, die
|
|
|
|
Jndeß mangelten doch einige Generalia, die
|
|
|
|
alſo wegfielen. — Hartkopf gieng ſelb
|
|
|
|
alſo wegfielen. – Hartkopf gieng ſelbſt
|
|
|
|
mit und berbrate es. —""")
|
|
|
|
mit und überbrachte es. –""")
|
|
|
|
assert result == expected
|
|
|
|
assert result == expected
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -92,7 +117,8 @@ def test_page_order():
|
|
|
|
tree = ET.parse(os.path.join(data_dir, 'order.page.xml'))
|
|
|
|
tree = ET.parse(os.path.join(data_dir, 'order.page.xml'))
|
|
|
|
result = page_text(tree)
|
|
|
|
result = page_text(tree)
|
|
|
|
|
|
|
|
|
|
|
|
assert re.search(r'Herr Konfrater.*75.*Etwas f.r Wittwen.*Ein gewi.er Lord.*76\. Die', result, re.DOTALL)
|
|
|
|
print(result)
|
|
|
|
|
|
|
|
assert re.search(r'Herr Konfrater.*75.*Etwas f.r Wittwen.*Ein gewi.{1,2}er Lord.*76\. Die', result, re.DOTALL)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_page_mixed_regions():
|
|
|
|
def test_page_mixed_regions():
|
|
|
@ -106,5 +132,15 @@ def test_page_mixed_regions():
|
|
|
|
|
|
|
|
|
|
|
|
def test_text():
|
|
|
|
def test_text():
|
|
|
|
assert "being erected at the Broadway stock" in text(os.path.join(data_dir, 'test.alto1.xml'))
|
|
|
|
assert "being erected at the Broadway stock" in text(os.path.join(data_dir, 'test.alto1.xml'))
|
|
|
|
assert "wieder ein. — Er langte den Zettel aus dem" in text(os.path.join(data_dir, 'test.page2018.xml'))
|
|
|
|
assert "wieder ein. – Er langte den Zettel aus dem" in text(os.path.join(data_dir, 'test.page2018.xml'))
|
|
|
|
assert "Lorem ipsum" in text(os.path.join(data_dir, 'test.txt'))
|
|
|
|
assert "Lorem ipsum" in text(os.path.join(data_dir, 'test.txt'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_plain(tmp_path):
|
|
|
|
|
|
|
|
with working_directory(str(tmp_path)):
|
|
|
|
|
|
|
|
with open('ocr.txt', 'w') as ocrf:
|
|
|
|
|
|
|
|
ocrf.write('AAAAB')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result = plain_text('ocr.txt')
|
|
|
|
|
|
|
|
expected = 'AAAAB'
|
|
|
|
|
|
|
|
assert result == expected
|
|
|
|