slub / mets-mods2tei

Convert bibliographic meta data in MODS format to TEI headers
Apache License 2.0
8 stars 7 forks source link

Add TEI corresp references #66

Closed bertsky closed 1 year ago

bertsky commented 1 year ago

Allows adding @corresp to every tei:lb pointing to alto:TextLine/@ID.

Makes @corresp at every tei:pb (pointing to the image filename) optional.

wrznr commented 1 year ago

Looks good. However, running with Loskiel led to:

$ mm2tei -o -T FULLTEXT -r page -r line LoskGesc_497166623_mets.xml
Traceback (most recent call last):
  File "/data/ocr-d/ocrd_all/venv/bin/mm2tei", line 8, in <module>
    sys.exit(cli())
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/mets_mods2tei/scripts/mets_mods2tei.py", line 63, in cli
    tei.fill_from_mets(mets, ocr, corresp=add_refs)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/mets_mods2tei/api/tei.py", line 192, in fill_from_mets
    self.add_ocr_text(mets)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/mets_mods2tei/api/tei.py", line 708, in add_ocr_text
    self.__add_ocr_to_node(node, mets)
  File "/data/ocr-d/ocrd_all/venv/lib/python3.7/site-packages/mets_mods2tei/api/tei.py", line 772, in __add_ocr_to_node
    lb.set("corresp", line.get("ID"))
  File "src/lxml/etree.pyx", line 816, in lxml.etree._Element.set
  File "src/lxml/apihelpers.pxi", line 593, in lxml.etree._setAttributeValue
  File "src/lxml/apihelpers.pxi", line 1538, in lxml.etree._utf8
TypeError: Argument must be bytes or unicode, got 'NoneType'
bertsky commented 1 year ago

Looks good. However, running with Loskiel led to:

That happened, because this ALTO input did not contain any TextLine/@ID. Apparently, these are not mandatory in ALTO on the line level (only in TextBlock/@ID). I added a fallback to block level plus counters.

bertsky commented 1 year ago

Here is what the output looks like:

snippet of Loskiel

```XML

krrata:

Seite z Lin.>9 —21 —9> —104 —,16 —,z; —>8i —224 —226 —227 —249 —255 —259 —262 —26; —2k 5284 —Z01;i4 —Z;> —Z57 —559 —Z97 —509 —511 —,;,2 —67z —687 —716^-.?s; —

4 lies! Chikasaws statt Chikaa«6 von unten schalte nach dem Worte Besoirein: s. S. 75.2 schalte nach dem Worte Wamrvm ein:s. S. ?4-iz und 14 äel. die Worte: schon oben gedachtez statt sohaue» lies: so hauen6 — Schalngen lies: Schlangenz von unten, statt gräßlichen lies: gräßlichsten14 — — — ausgerechnet lies: aus ge­rechnet2 statt solle lies: soll8 von unten statt Tschvpp lies: Tschvopio — — lies: Georgien, und kam10 — — statt schenkte UeS: schenkten>7 lies; fanden in dieser Lehre1 statt zu ihm lies: zum Bruder Mack8 — verkündiget lies: verkündigen5 — er würd' zur lies: er wird zur7 von unten lies: Gemcintagen17 statt mit ihren Lehrern lies: ihrer Lehrerz — der lies: dem Ohio; von unten, nach dem Worte Anbau schalteein: den man FrieOenshärren nannte11 lies: Kricgsnoth und die7 statt Mohvnk- lies: Mvhak-Sprache2 — gegen lies: über; — seinem lies: seines6 — Charakter lies: Charakters5 von unten lies: nun so einzurichteni — —- statt zerstört lies: gestörtz — — — Cujugu lies: Cajugu4 — — — uns zu selber lies: uns sel­ber zu12 statt müßten lies: müßenr >— Abmarsch lies: Anmarsch4 von unten statt diese Amerikaner selbst lies:diese Wilde» selbst1 statt Vater und Mutter lies: Väter undMütter.

```

bertsky commented 1 year ago

So that's still different from what your line-breaking recipe tidy -xml -i -w 100 would output:

snippet of Loskiel

```XML ?s; —

4 lies! Chikasaws statt Chikaa« 6 von unten schalte nach dem Worte Besoir ein: s. S. 75. 2 schalte nach dem Worte Wamrvm ein: s. S. ?4- iz und 14 äel. die Worte: schon oben gedachte z statt sohaue» lies: so hauen 6 — Schalngen lies: Schlangen z von unten, statt gräßlichen lies: gräßlichsten 14 — — — ausgerechnet lies: aus ge­ rechnet 2 statt solle lies: soll 8 von unten statt Tschvpp lies: Tschvop io — — lies: Georgien, und kam 10 — — statt schenkte UeS: schenkten >7 lies; fanden in dieser Lehre 1 statt zu ihm lies: zum Bruder Mack 8 — verkündiget lies: verkündigen 5 — er würd' zur lies: er wird zur 7 von unten lies: Gemcintagen 17 statt mit ihren Lehrern lies: ihrer Lehrer z — der lies: dem Ohio ; von unten, nach dem Worte Anbau schalte ein: den man FrieOenshärren nannte 11 lies: Kricgsnoth und die 7 statt Mohvnk- lies: Mvhak-Sprache 2 — gegen lies: über ; — seinem lies: seines 6 — Charakter lies: Charakters 5 von unten lies: nun so einzurichten i — —- statt zerstört lies: gestört z — — — Cujugu lies: Cajugu 4 — — — uns zu selber lies: uns sel­ ber zu 12 statt müßten lies: müßen r >— Abmarsch lies: Anmarsch 4 von unten statt diese Amerikaner selbst lies: diese Wilde» selbst 1 statt Vater und Mutter lies: Väter und Mütter.

```

bertsky commented 1 year ago

Perhaps lb/@facs would have been more consistent, because DTABf does not use either, but uses pb/@corresp as file URI and pb/@facs as identifier, as do other dialects.

Perhaps, we could also use a facsimile section with one surface per file that contains all zone segments including coordinates and segment type?