diff --git a/tests/resources/euler_rechenkunst01_1738_0025.xml b/tests/resources/euler_rechenkunst01_1738_0025.xml
new file mode 100644
index 0000000..1a92f73
--- /dev/null
+++ b/tests/resources/euler_rechenkunst01_1738_0025.xml
@@ -0,0 +1,1626 @@
+
+
+ OCR-D
+ 2016-09-29T14:32:09
+ 2018-04-25T08:56:33
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 9
+
+
+ 9
+
+
+ 9
+
+
+
+
+
+
+
+
+ der
+
+
+
+
+ rechten
+
+
+
+
+ gegen
+
+
+
+
+ der
+
+
+
+
+ lincken
+
+
+
+
+ Hand
+
+
+
+
+ bedeutet
+
+
+ der rechten gegen der lincken Hand bedeutet
+
+
+
+
+
+
+
+ wie
+
+
+
+
+ folget:
+
+
+ wie folget:
+
+
+ der rechten gegen der lincken Hand bedeutet
+wie folget:
+
+
+
+
+
+
+
+
+ I.
+
+
+ I.
+
+
+ I.
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -
+
+
+
+
+ nichts
+
+
+ 0 - nichts
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ -
+
+
+
+
+ eins
+
+
+ 1 - eins
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ -
+
+
+
+
+ zwey
+
+
+ 2 - zwey
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ -
+
+
+
+
+ drey
+
+
+ 3 - drey
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ -
+
+
+
+
+ vier
+
+
+ 4 - vier
+
+
+ 0 - nichts
+1 - eins
+2 - zwey
+3 - drey
+4 - vier
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ -
+
+
+
+
+ fuͤnf
+
+
+ 5 - fuͤnf
+
+
+
+
+
+
+
+ 6
+
+
+
+
+ -
+
+
+
+
+ ſechs
+
+
+ 6 - ſechs
+
+
+
+
+
+
+ 7
+
+
+
+
+ -
+
+
+
+
+ ſieben
+
+
+ 7 - ſieben
+
+
+
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ acht
+
+
+ 8 - acht
+
+
+
+
+
+
+
+ 9
+
+
+
+
+ -
+
+
+
+
+ neun
+
+
+ 9 - neun
+
+
+ 5 - fuͤnf
+6 - ſechs
+7 - ſieben
+8 - acht
+9 - neun
+
+
+
+
+
+
+
+
+ Auf
+
+
+
+
+ der
+
+
+
+
+ zweyten
+
+
+
+
+ Stelle
+
+
+
+
+ aber
+
+
+
+
+ bedeutet.
+
+
+ Auf der zweyten Stelle aber bedeutet.
+
+
+ Auf der zweyten Stelle aber bedeutet.
+
+
+
+
+
+
+
+
+ II.
+
+
+ II.
+
+
+ II.
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -
+
+
+
+
+ nichts
+
+
+ 0 - nichts
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ -
+
+
+
+
+ zehen
+
+
+ 1 - zehen
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ -
+
+
+
+
+ zwanzig
+
+
+ 2 - zwanzig
+
+
+
+
+
+
+ 3
+
+
+
+
+ -
+
+
+
+
+ dreyßig
+
+
+ 3 - dreyßig
+
+
+
+
+
+
+ 4
+
+
+
+
+ -
+
+
+
+
+ vierzig
+
+
+ 4 - vierzig
+
+ 0 - nichts
+1 - zehen
+2 - zwanzig
+3 - dreyßig
+4 - vierzig
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ -
+
+
+
+
+ fuͤnfzig
+
+
+ 5 - fuͤnfzig
+
+
+
+
+
+
+
+ 6
+
+
+
+
+ -
+
+
+
+
+ ſechzig
+
+
+ 6 - ſechzig
+
+
+
+
+
+
+ 7
+
+
+
+
+ -
+
+
+
+
+ ſiebenzig
+
+
+ 7 - ſiebenzig
+
+
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ achtzig
+
+
+ 8 - achtzig
+
+
+
+
+
+
+ 9
+
+
+
+
+ -
+
+
+
+
+ neunzig
+
+
+ 9 - neunzig
+
+ 5 - fuͤnfzig
+6 - ſechzig
+7 - ſiebenzig
+8 - achtzig
+9 - neunzig
+
+
+
+
+
+
+
+
+ Auf
+
+
+
+
+ der
+
+
+
+
+ dritten
+
+
+
+
+ Stelle
+
+
+
+
+ bedeutet.
+
+
+ Auf der dritten Stelle bedeutet.
+
+
+ Auf der dritten Stelle bedeutet.
+
+
+
+
+
+
+
+
+ III.
+
+
+ III.
+
+
+ III.
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -
+
+
+
+
+ nichts
+
+
+ 0 - nichts
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ -
+
+
+
+
+ hundert
+
+
+ 1 - hundert
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ -
+
+
+
+
+ zwey
+
+
+
+
+ hundert
+
+
+ 2 - zwey hundert
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ -
+
+
+
+
+ drey
+
+
+
+
+ hundert
+
+
+ 3 - drey hundert
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ -
+
+
+
+
+ vier
+
+
+
+
+ hundert
+
+
+ 4 - vier hundert
+
+
+ 0 - nichts
+1 - hundert
+2 - zwey hundert
+3 - drey hundert
+4 - vier hundert
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ -
+
+
+
+
+ fuͤnf
+
+
+
+
+ hundert
+
+
+ 5 - fuͤnf hundert
+
+
+
+
+
+
+
+ 6
+
+
+
+
+ -
+
+
+
+
+ ſechs
+
+
+
+
+ hundert
+
+
+ 6 - ſechs hundert
+
+
+
+
+
+
+ 7
+
+
+
+
+ -
+
+
+
+
+ ſieben
+
+
+
+
+ hundert
+
+
+ 7 - ſieben hundert
+
+
+
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ acht
+
+
+
+
+ hundert
+
+
+ 8 - acht hundert
+
+
+
+
+
+
+ 9
+
+
+
+
+ -
+
+
+
+
+ neun
+
+
+
+
+ hundert
+
+
+ 9 - neun hundert
+
+
+ 5 - fuͤnf hundert
+6 - ſechs hundert
+7 - ſieben hundert
+8 - acht hundert
+9 - neun hundert
+
+
+
+
+
+
+
+
+ Auf
+
+
+
+
+ der
+
+
+
+
+ vierten
+
+
+
+
+ Stelle
+
+
+
+
+ bedeutet.
+
+
+ Auf der vierten Stelle bedeutet.
+
+
+ Auf der vierten Stelle bedeutet.
+
+
+
+
+
+
+
+
+ IV.
+
+
+ IV.
+
+
+ IV.
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -
+
+
+
+
+ nichts
+
+
+ 0 - nichts
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ -
+
+
+
+
+ tauſend
+
+
+ 1 - tauſend
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ -
+
+
+
+
+ zwey
+
+
+
+
+ tauſend
+
+
+ 2 - zwey tauſend
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ -
+
+
+
+
+ drey
+
+
+
+
+ tauſend
+
+
+ 3 - drey tauſend
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ -
+
+
+
+
+ vier
+
+
+
+
+ tauſend
+
+
+ 4 - vier tauſend
+
+
+ 0 - nichts
+1 - tauſend
+2 - zwey tauſend
+3 - drey tauſend
+4 - vier tauſend
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ -
+
+
+
+
+ fuͤnf
+
+
+
+
+ tauſend
+
+
+ 5 - fuͤnf tauſend
+
+
+
+
+
+
+
+ 6
+
+
+
+
+ -
+
+
+
+
+ ſechs
+
+
+
+
+ tauſend
+
+
+ 6 - ſechs tauſend
+
+
+
+
+
+
+ 7
+
+
+
+
+ -
+
+
+
+
+ ſieben
+
+
+
+
+ tauſend
+
+
+ 7 - ſieben tauſend
+
+
+
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ acht
+
+
+
+
+ tauſend
+
+
+ 8 - acht tauſend
+
+
+
+
+
+
+ 9
+
+
+
+
+ -
+
+
+
+
+ neun
+
+
+
+
+ tauſend
+
+
+ 9 - neun tauſend
+
+ 5 - fuͤnf tauſend
+6 - ſechs tauſend
+7 - ſieben tauſend
+8 - acht tauſend
+9 - neun tauſend
+
+
+
+
+
+
+
+
+ Auf
+
+
+
+
+ der
+
+
+
+
+ fuͤnften
+
+
+
+
+ Stelle
+
+
+
+
+ bedeutet.
+
+
+ Auf der fuͤnften Stelle bedeutet.
+
+
+ Auf der fuͤnften Stelle bedeutet.
+
+
+
+
+
+
+
+
+ V.
+
+
+ V.
+
+
+ V.
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+ -
+
+
+
+
+ nichts
+
+
+ 0 - nichts
+
+
+
+
+
+
+
+ 1
+
+
+
+
+ -
+
+
+
+
+ zehen
+
+
+
+
+ tauſend
+
+
+ 1 - zehen tauſend
+
+
+
+
+
+
+
+ 2
+
+
+
+
+ -
+
+
+
+
+ zwanzig
+
+
+
+
+ tauſend
+
+
+ 2 - zwanzig tauſend
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ -
+
+
+
+
+ dreyßig
+
+
+
+
+ tauſend
+
+
+ 3 - dreyßig tauſend
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ -
+
+
+
+
+ vierzig
+
+
+
+
+ tauſend
+
+
+ 4 - vierzig tauſend
+
+
+ 0 - nichts
+1 - zehen tauſend
+2 - zwanzig tauſend
+3 - dreyßig tauſend
+4 - vierzig tauſend
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ -
+
+
+
+
+ fuͤnfzig
+
+
+
+
+ tauſend
+
+
+ 5 - fuͤnfzig tauſend
+
+
+
+
+
+
+
+ 6
+
+
+
+
+ -
+
+
+
+
+ ſechzig
+
+
+
+
+ tauſend
+
+
+ 6 - ſechzig tauſend
+
+
+
+
+
+
+ 7
+
+
+
+
+ -
+
+
+
+
+ ſiebenzig
+
+
+
+
+ tauſend
+
+
+ 7 - ſiebenzig tauſend
+
+
+
+
+
+
+
+ 8
+
+
+
+
+ -
+
+
+
+
+ achtzig
+
+
+
+
+ tauſend
+
+
+ 8 - achtzig tauſend
+
+
+
+
+
+
+ 9
+
+
+
+
+ -
+
+
+
+
+ neunzig
+
+
+
+
+ tauſend
+
+
+ 9 - neunzig tauſend
+
+
+ 5 - fuͤnfzig tauſend
+6 - ſechzig tauſend
+7 - ſiebenzig tauſend
+8 - achtzig tauſend
+9 - neunzig tauſend
+
+
+
+
+
+
+
+ A
+
+
+
+
+ 5
+
+
+ A 5
+
+ A 5
+
+
+
+
+
+
+
+
+ Anf
+
+
+ Anf
+
+ Anf
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/resources/kant_aufklaerung_1784_0020.xml b/tests/resources/kant_aufklaerung_1784_0020.xml
new file mode 100644
index 0000000..47484cd
--- /dev/null
+++ b/tests/resources/kant_aufklaerung_1784_0020.xml
@@ -0,0 +1,2129 @@
+
+
+ OCR-D
+ 2016-09-20T11:09:27.431+02:00
+ 2018-04-24T17:44:49.605+01:00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ (
+
+
+
+
+
+
+ 484
+
+
+
+
+
+
+ )
+
+
+
+
+ ( 484 )
+
+
+
+ ( 484 )
+
+
+
+
+
+
+
+
+
+
+ gewiegelt
+
+
+
+
+
+
+ worden
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+ ſo
+
+
+
+
+
+
+ ſchaͤdlich
+
+
+
+
+
+
+ iſt
+
+
+
+
+
+
+ es
+
+
+
+
+
+
+ Vorurtheile
+
+
+
+
+
+
+ zu
+
+
+
+
+ gewiegelt worden; ſo ſchaͤdlich iſt es Vorurtheile zu
+
+
+
+
+
+
+
+
+
+ pflanzen
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ weil
+
+
+
+
+
+
+ ſie
+
+
+
+
+
+
+ ſich
+
+
+
+
+
+
+ zuletzt
+
+
+
+
+
+
+ an
+
+
+
+
+
+
+ denen
+
+
+
+
+
+
+ ſelbſt
+
+
+
+
+
+
+ raͤchen
+
+
+
+
+
+
+ ,
+
+
+
+
+ pflanzen, weil ſie ſich zuletzt an denen ſelbſt raͤchen,
+
+
+
+
+
+
+
+
+
+ die
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ oder
+
+
+
+
+
+
+ deren
+
+
+
+
+
+
+ Vorgaͤnger
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ihre
+
+
+
+
+
+
+ Urheber
+
+
+
+
+
+
+ geweſen
+
+
+
+
+ die, oder deren Vorgaͤnger, ihre Urheber geweſen
+
+
+
+
+
+
+
+
+
+ ſind
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+ Daher
+
+
+
+
+
+
+ kann
+
+
+
+
+
+
+ ein
+
+
+
+
+
+
+ Publikum
+
+
+
+
+
+
+ nur
+
+
+
+
+
+
+ langſam
+
+
+
+
+
+
+ zur
+
+
+
+
+ ſind. Daher kann ein Publikum nur langſam zur
+
+
+
+
+
+
+
+
+
+ Aufklaͤrung
+
+
+
+
+
+
+ gelangen
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+ Durch
+
+
+
+
+
+
+ eine
+
+
+
+
+
+
+ Revolution
+
+
+
+
+
+
+ wird
+
+
+
+
+ Aufklaͤrung gelangen. Durch eine Revolution wird
+
+
+
+
+
+
+
+
+
+ vielleicht
+
+
+
+
+
+
+ wohl
+
+
+
+
+
+
+ ein
+
+
+
+
+
+
+ Abfall
+
+
+
+
+
+
+ von
+
+
+
+
+
+
+ perſoͤnlichem
+
+
+
+
+
+
+ Despo-
+
+
+
+
+ vielleicht wohl ein Abfall von perſoͤnlichem Despo-
+
+
+
+
+
+
+
+
+
+ tism
+
+
+
+
+
+
+ und
+
+
+
+
+
+
+ gewinnſuͤchtiger
+
+
+
+
+
+
+ oder
+
+
+
+
+
+
+ herrſchſüchtiger
+
+
+
+
+
+
+ Be
+
+
+
+
+
+
+ -
+
+
+
+
+ tism und gewinnſuͤchtiger oder herrſchſüchtiger Be-
+
+
+
+
+
+
+
+
+
+ druͤkkung
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ aber
+
+
+
+
+
+
+ niemals
+
+
+
+
+
+
+ wahre
+
+
+
+
+
+
+ Reform
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ Den
+
+
+
+
+
+
+ -
+
+
+
+
+ druͤkkung, aber niemals wahre Reform der Den-
+
+
+
+
+
+
+
+
+
+ kungsart
+
+
+
+
+
+
+ zu
+
+
+
+
+
+
+ Stande
+
+
+
+
+
+
+ kommen
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+ ſondern
+
+
+
+
+
+
+ neue
+
+
+
+
+
+
+ Vor
+
+
+
+
+
+
+ -
+
+
+
+
+ kungsart zu Stande kommen; ſondern neue Vor-
+
+
+
+
+
+
+
+
+
+ urtheile
+
+
+
+
+
+
+ werden
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ eben
+
+
+
+
+
+
+ ſowohl
+
+
+
+
+
+
+ als
+
+
+
+
+
+
+ die
+
+
+
+
+
+
+ alten
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ zum
+
+
+
+
+ urtheile werden, eben ſowohl als die alten, zum
+
+
+
+
+
+
+
+
+
+ Leitbande
+
+
+
+
+
+
+ des
+
+
+
+
+
+
+ gedankenloſen
+
+
+
+
+
+
+ großen
+
+
+
+
+
+
+ Haufens
+
+
+
+
+ Leitbande des gedankenloſen großen Haufens
+
+
+
+
+
+
+
+
+
+ dienen
+
+
+
+
+
+
+ .
+
+
+
+
+ dienen.
+
+
+
+ gewiegelt worden; ſo ſchaͤdlich iſt es Vorurtheile zu
+pflanzen, weil ſie ſich zuletzt an denen ſelbſt raͤchen,
+die, oder deren Vorgaͤnger, ihre Urheber geweſen
+ſind. Daher kann ein Publikum nur langſam zur
+Aufklaͤrung gelangen. Durch eine Revolution wird
+vielleicht wohl ein Abfall von perſoͤnlichem Despo-
+tism und gewinnſuͤchtiger oder herrſchſüchtiger Be-
+druͤkkung, aber niemals wahre Reform der Den-
+kungsart zu Stande kommen; ſondern neue Vor-
+urtheile werden, eben ſowohl als die alten, zum
+Leitbande des gedankenloſen großen Haufens
+dienen.
+
+
+
+
+
+
+
+
+
+
+ Zu
+
+
+
+
+
+
+ dieſer
+
+
+
+
+
+
+ Aufklaͤrung
+
+
+
+
+
+
+ aber
+
+
+
+
+
+
+ wird
+
+
+
+
+
+
+ nichts
+
+
+
+
+
+
+ erfordert
+
+
+
+
+ Zu dieſer Aufklaͤrung aber wird nichts erfordert
+
+
+
+
+
+
+
+
+
+ als
+
+
+
+
+
+
+ Freiheit
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+ und
+
+
+
+
+
+
+ zwar
+
+
+
+
+
+
+ die
+
+
+
+
+
+
+ unſchaͤdlichſte
+
+
+
+
+
+
+ unter
+
+
+
+
+ als Freiheit; und zwar die unſchaͤdlichſte unter
+
+
+
+
+
+
+
+
+ allem
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ was
+
+
+
+
+
+
+ nur
+
+
+
+
+
+
+ Freiheit
+
+
+
+
+
+
+ heißen
+
+
+
+
+
+
+ mag
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ naͤmlich
+
+
+
+
+
+
+ die
+
+
+
+
+
+
+ :
+
+
+
+
+ allem, was nur Freiheit heißen mag, naͤmlich die:
+
+
+
+
+
+
+
+
+
+ von
+
+
+
+
+
+
+ ſeiner
+
+
+
+
+
+
+ Vernunft
+
+
+
+
+
+
+ in
+
+
+
+
+
+
+ allen
+
+
+
+
+
+
+ Stuͤkken
+
+
+
+
+
+
+ oͤffentlichen
+
+
+
+
+ von ſeiner Vernunft in allen Stuͤkken oͤffentlichen
+
+
+
+
+
+
+
+
+
+ Gebrauch
+
+
+
+
+
+
+ zu
+
+
+
+
+
+
+ machen
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+ Nun
+
+
+
+
+
+
+ hoͤre
+
+
+
+
+
+
+ ich
+
+
+
+
+
+
+ aber
+
+
+
+
+
+
+ von
+
+
+
+
+
+
+ al
+
+
+
+
+
+
+ -
+
+
+
+
+ Gebrauch zu machen. Nun hoͤre ich aber von al-
+
+
+
+
+
+
+
+
+
+ len
+
+
+
+
+
+
+ Seiten
+
+
+
+
+
+
+ rufen
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ raͤſonnirt
+
+
+
+
+
+
+ nicht
+
+
+
+
+
+
+ !
+
+
+
+
+
+
+ Der
+
+
+
+
+
+
+ Offi
+
+
+
+
+
+
+ -
+
+
+
+
+ len Seiten rufen: raͤſonnirt nicht! Der Offi-
+
+
+
+
+
+
+
+
+
+ zier
+
+
+
+
+
+
+ ſagt
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ raͤſonnirt
+
+
+
+
+
+
+ nicht
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ſondern
+
+
+
+
+
+
+ exercirt
+
+
+
+
+
+
+ !
+
+
+
+
+
+
+ Der
+
+
+
+
+ zier ſagt: raͤſonnirt nicht, ſondern exercirt! Der
+
+
+
+
+
+
+
+
+
+ Finanzrath
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ raͤſonnirt
+
+
+
+
+
+
+ nicht
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ſondern
+
+
+
+
+
+
+ bezahlt
+
+
+
+
+
+
+ !
+
+
+
+
+
+
+ Der
+
+
+
+
+ Finanzrath: raͤſonnirt nicht, ſondern bezahlt! Der
+
+
+
+
+
+
+
+
+
+ Geiſtliche
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ raͤſonnirt
+
+
+
+
+
+
+ nicht
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ſondern
+
+
+
+
+
+
+ glaubt
+
+
+
+
+
+
+ !
+
+
+
+
+
+
+ (
+
+
+
+
+
+
+ Nur
+
+
+
+
+ Geiſtliche: raͤſonnirt nicht, ſondern glaubt! (Nur
+
+
+
+
+
+
+
+
+
+ ein
+
+
+
+
+
+
+ einziger
+
+
+
+
+
+
+ Herr
+
+
+
+
+
+
+ in
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ Welt
+
+
+
+
+
+
+ ſagt
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ raͤſonnirt
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ſo
+
+
+
+
+ ein einziger Herr in der Welt ſagt: raͤſonnirt, ſo
+
+
+
+
+
+
+
+
+
+ viel
+
+
+
+
+
+
+ ihr
+
+
+
+
+
+
+ wollt
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ und
+
+
+
+
+
+
+ woruͤber
+
+
+
+
+
+
+ ihr
+
+
+
+
+
+
+ wollt
+
+
+
+
+
+
+ ;
+
+
+
+
+
+
+ aber
+
+
+
+
+
+
+ ge
+
+
+
+
+
+
+ -
+
+
+
+
+ viel ihr wollt, und woruͤber ihr wollt; aber ge-
+
+
+
+
+
+
+
+
+
+ horcht
+
+
+
+
+
+
+ !
+
+
+
+
+
+
+ )
+
+
+
+
+
+
+ Hier
+
+
+
+
+
+
+ iſt
+
+
+
+
+
+
+ uͤberall
+
+
+
+
+
+
+ Einſchraͤnkung
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ Frei
+
+
+
+
+
+
+ -
+
+
+
+
+ horcht!) Hier iſt uͤberall Einſchraͤnkung der Frei-
+
+
+
+
+
+
+
+
+
+ heit
+
+
+
+
+
+
+ .
+
+
+
+
+
+
+ Welche
+
+
+
+
+
+
+ Einſchraͤnkung
+
+
+
+
+
+
+ aber
+
+
+
+
+
+
+ iſt
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ Aufklaͤ
+
+
+
+
+
+
+ -
+
+
+
+
+ heit. Welche Einſchraͤnkung aber iſt der Aufklaͤ-
+
+
+
+
+
+
+
+
+
+ rung
+
+
+
+
+
+
+ hinderlich
+
+
+
+
+
+
+ ?
+
+
+
+
+
+
+ welche
+
+
+
+
+
+
+ nicht
+
+
+
+
+
+
+ ,
+
+
+
+
+
+
+ ſondern
+
+
+
+
+
+
+ ihr
+
+
+
+
+
+
+ wohl
+
+
+
+
+
+
+ gar
+
+
+
+
+ rung hinderlich? welche nicht, ſondern ihr wohl gar
+
+
+
+
+
+
+
+
+
+ befoͤrderlich
+
+
+
+
+
+
+ ?
+
+
+
+
+
+
+ —
+
+
+
+
+
+
+ Ich
+
+
+
+
+
+
+ antworte
+
+
+
+
+
+
+ :
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ oͤffentliche
+
+
+
+
+ befoͤrderlich? — Ich antworte: der oͤffentliche
+
+
+
+
+
+
+
+
+
+ Gebrauch
+
+
+
+
+
+
+ ſeiner
+
+
+
+
+
+
+ Vernunft
+
+
+
+
+
+
+ muß
+
+
+
+
+
+
+ jederzeit
+
+
+
+
+
+
+ frei
+
+
+
+
+
+
+ ſein
+
+
+
+
+
+
+ ,
+
+
+
+
+ Gebrauch ſeiner Vernunft muß jederzeit frei ſein,
+
+
+
+
+
+
+
+
+
+ und
+
+
+
+
+
+
+ der
+
+
+
+
+
+
+ allein
+
+
+
+
+
+
+ kann
+
+
+
+
+
+
+ Aufklaͤrung
+
+
+
+
+
+
+ unter
+
+
+
+
+
+
+ Menſchen
+
+
+
+
+
+
+ zu
+
+
+
+
+ und der allein kann Aufklaͤrung unter Menſchen zu
+
+
+
+
+ Zu dieſer Aufklaͤrung aber wird nichts erfordert
+als Freiheit; und zwar die unſchaͤdlichſte unter
+allem, was nur Freiheit heißen mag, naͤmlich die:
+von ſeiner Vernunft in allen Stuͤkken oͤffentlichen
+Gebrauch zu machen. Nun hoͤre ich aber von al-
+len Seiten rufen: raͤſonnirt nicht! Der Offi-
+zier ſagt: raͤſonnirt nicht, ſondern exercirt! Der
+Finanzrath: raͤſonnirt nicht, ſondern bezahlt! Der
+Geiſtliche: raͤſonnirt nicht, ſondern glaubt! (Nur
+ein einziger Herr in der Welt ſagt: raͤſonnirt, ſo
+viel ihr wollt, und woruͤber ihr wollt; aber ge-
+horcht!) Hier iſt uͤberall Einſchraͤnkung der Frei-
+heit. Welche Einſchraͤnkung aber iſt der Aufklaͤ-
+rung hinderlich? welche nicht, ſondern ihr wohl gar
+befoͤrderlich? — Ich antworte: der oͤffentliche
+Gebrauch ſeiner Vernunft muß jederzeit frei ſein,
+und der allein kann Aufklaͤrung unter Menſchen zu
+
+
+
+
+
+
+
+
+
+
+ Stan
+
+
+
+
+
+
+ -
+
+
+
+
+ Stan-
+
+
+
+
+ Stan-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/test_run.py b/tests/test_run.py
index b4e2dbd..370deef 100644
--- a/tests/test_run.py
+++ b/tests/test_run.py
@@ -2,7 +2,12 @@ from os import environ
from pathlib import Path
import logging
from PIL import Image
-from eynollah.cli import layout as layout_cli, binarization as binarization_cli
+from eynollah.cli import (
+ layout as layout_cli,
+ binarization as binarization_cli,
+ enhancement as enhancement_cli,
+ machine_based_reading_order as mbreorder_cli,
+)
from click.testing import CliRunner
from ocrd_modelfactory import page_from_file
from ocrd_models.constants import NAMESPACES as NS
@@ -44,8 +49,7 @@ def test_run_eynollah_layout_filename(tmp_path, subtests, pytestconfig, caplog):
options=options):
with caplog.filtering(only_eynollah):
result = runner.invoke(layout_cli, args + options, catch_exceptions=False)
- print(result)
- assert result.exit_code == 0
+ assert result.exit_code == 0, result.stdout
logmsgs = [logrec.message for logrec in caplog.records]
assert str(infile) in logmsgs
assert outfile.exists()
@@ -73,8 +77,7 @@ def test_run_eynollah_layout_directory(tmp_path, pytestconfig, caplog):
runner = CliRunner()
with caplog.filtering(only_eynollah):
result = runner.invoke(layout_cli, args)
- print(result)
- assert result.exit_code == 0
+ assert result.exit_code == 0, result.stdout
logmsgs = [logrec.message for logrec in caplog.records]
assert len([logmsg for logmsg in logmsgs if logmsg.startswith('Job done in')]) == 2
assert any(logmsg for logmsg in logmsgs if logmsg.startswith('All jobs done in'))
@@ -88,6 +91,8 @@ def test_run_eynollah_binarization_filename(tmp_path, subtests, pytestconfig, ca
'-i', str(infile),
'-o', str(outfile),
]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
caplog.set_level(logging.INFO)
def only_eynollah(logrec):
return logrec.name == 'SbbBinarizer'
@@ -100,8 +105,7 @@ def test_run_eynollah_binarization_filename(tmp_path, subtests, pytestconfig, ca
options=options):
with caplog.filtering(only_eynollah):
result = runner.invoke(binarization_cli, args + options)
- print(result)
- assert result.exit_code == 0
+ assert result.exit_code == 0, result.stdout
logmsgs = [logrec.message for logrec in caplog.records]
assert any(True for logmsg in logmsgs if logmsg.startswith('Predicting'))
assert outfile.exists()
@@ -119,14 +123,121 @@ def test_run_eynollah_binarization_directory(tmp_path, subtests, pytestconfig, c
'-di', str(indir),
'-o', str(outdir),
]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
caplog.set_level(logging.INFO)
def only_eynollah(logrec):
return logrec.name == 'SbbBinarizer'
runner = CliRunner()
with caplog.filtering(only_eynollah):
result = runner.invoke(binarization_cli, args)
- print(result)
- assert result.exit_code == 0
+ assert result.exit_code == 0, result.stdout
logmsgs = [logrec.message for logrec in caplog.records]
assert len([logmsg for logmsg in logmsgs if logmsg.startswith('Predicting')]) == 2
assert len(list(outdir.iterdir())) == 2
+
+def test_run_eynollah_enhancement_filename(tmp_path, subtests, pytestconfig, caplog):
+ infile = testdir.joinpath('resources/kant_aufklaerung_1784_0020.tif')
+ outfile = tmp_path.joinpath('kant_aufklaerung_1784_0020.png')
+ args = [
+ '-m', EYNOLLAH_MODELS,
+ '-i', str(infile),
+ '-o', str(outfile.parent),
+ # subtests write to same location
+ '--overwrite',
+ ]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
+ caplog.set_level(logging.INFO)
+ def only_eynollah(logrec):
+ return logrec.name == 'enhancement'
+ runner = CliRunner()
+ for options in [
+ [], # defaults
+ ["-sos"],
+ ]:
+ with subtests.test(#msg="test CLI",
+ options=options):
+ with caplog.filtering(only_eynollah):
+ result = runner.invoke(enhancement_cli, args + options)
+ assert result.exit_code == 0, result.stdout
+ logmsgs = [logrec.message for logrec in caplog.records]
+ assert any(True for logmsg in logmsgs if logmsg.startswith('Image was enhanced')), logmsgs
+ assert outfile.exists()
+ with Image.open(infile) as original_img:
+ original_size = original_img.size
+ with Image.open(outfile) as enhanced_img:
+ enhanced_size = enhanced_img.size
+ assert (original_size == enhanced_size) == ("-sos" in options)
+
+def test_run_eynollah_enhancement_directory(tmp_path, subtests, pytestconfig, caplog):
+ indir = testdir.joinpath('resources')
+ outdir = tmp_path
+ args = [
+ '-m', EYNOLLAH_MODELS,
+ '-di', str(indir),
+ '-o', str(outdir),
+ ]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
+ caplog.set_level(logging.INFO)
+ def only_eynollah(logrec):
+ return logrec.name == 'enhancement'
+ runner = CliRunner()
+ with caplog.filtering(only_eynollah):
+ result = runner.invoke(enhancement_cli, args)
+ assert result.exit_code == 0, result.stdout
+ logmsgs = [logrec.message for logrec in caplog.records]
+ assert len([logmsg for logmsg in logmsgs if logmsg.startswith('Image was enhanced')]) == 2
+ assert len(list(outdir.iterdir())) == 2
+
+def test_run_eynollah_mbreorder_filename(tmp_path, subtests, pytestconfig, caplog):
+ infile = testdir.joinpath('resources/kant_aufklaerung_1784_0020.xml')
+ outfile = tmp_path.joinpath('kant_aufklaerung_1784_0020.xml')
+ args = [
+ '-m', EYNOLLAH_MODELS,
+ '-i', str(infile),
+ '-o', str(outfile.parent),
+ ]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
+ caplog.set_level(logging.INFO)
+ def only_eynollah(logrec):
+ return logrec.name == 'mbreorder'
+ runner = CliRunner()
+ with caplog.filtering(only_eynollah):
+ result = runner.invoke(mbreorder_cli, args)
+ assert result.exit_code == 0, result.stdout
+ logmsgs = [logrec.message for logrec in caplog.records]
+ # FIXME: mbreorder has no logging!
+ #assert any(True for logmsg in logmsgs if logmsg.startswith('???')), logmsgs
+ assert outfile.exists()
+ #in_tree = page_from_file(str(infile)).etree
+ #in_order = in_tree.xpath("//page:OrderedGroup//@regionRef", namespaces=NS)
+ out_tree = page_from_file(str(outfile)).etree
+ out_order = out_tree.xpath("//page:OrderedGroup//@regionRef", namespaces=NS)
+ #assert len(out_order) >= 2, "result is inaccurate"
+ #assert in_order != out_order
+ assert out_order == ['r_1_1', 'r_2_1', 'r_2_2', 'r_2_3']
+
+def test_run_eynollah_mbreorder_directory(tmp_path, subtests, pytestconfig, caplog):
+ indir = testdir.joinpath('resources')
+ outdir = tmp_path
+ args = [
+ '-m', EYNOLLAH_MODELS,
+ '-di', str(indir),
+ '-o', str(outdir),
+ ]
+ if pytestconfig.getoption('verbose') > 0:
+ args.extend(['-l', 'DEBUG'])
+ caplog.set_level(logging.INFO)
+ def only_eynollah(logrec):
+ return logrec.name == 'mbreorder'
+ runner = CliRunner()
+ with caplog.filtering(only_eynollah):
+ result = runner.invoke(mbreorder_cli, args)
+ assert result.exit_code == 0, result.stdout
+ logmsgs = [logrec.message for logrec in caplog.records]
+ # FIXME: mbreorder has no logging!
+ #assert len([logmsg for logmsg in logmsgs if logmsg.startswith('???')]) == 2
+ assert len(list(outdir.iterdir())) == 2