🚀

WordをTEI/XMLに変換する

2023/01/17に公開

概要

WordをTEI/XMLファイルに変換する機会がありました。調べてみたところ、TEIGarage ConversionなどのTEI公式のツールに加えて、以下のTEI Publisherでの変換例が見つかりました。

https://teipublisher.com/exist/apps/tei-publisher/test/test.docx.xml

上記の例では、Wordのスタイル情報を中心に、TEIのタグに変換しているようだったので、この方法を試してみました。なお今回は、TEI Publisherとは独立して使用することを目的として、python-docxライブラリを使用しました。

Wordファイル

以下のようなWordファイルを試作しました。いずれも仮ですが、「tei:persName」や「tei:warichu」といったスタイルを作成し、色などのスタイルを変更しました。スタイルを当てていくことで、簡易な構造化を行う仕組みです。

TEI/XMLへの変換

上記のようなWordファイルを入力として、スタイル情報を中心に、TEI/XMLに変換するスクリプトを作成しました。いずれpipなどを使って共有したいと考えています。

変換したTEI/XMLの例は以下です。まだまだ改善が必要ですが、validなTEI/XMLファイルに変換することができました。

    <lb/>
    <seg>
     ワードの入力サンプル
    </seg>
    <lb/>
    <lb/>
    <seg type="dateline">
     日付の行にスタイル「dateLine」を使用してください。先頭に2文字の空白が入ります。
    </seg>
    <lb/>
    <seg type="personline">
     名前の行にスタイル「personLine」を使用してください。末尾に2文字の空白が入ります。
    </seg>
    <lb/>
    <seg>
     <ruby>
      <rb>
       中村
      </rb>
      <rt>
       なかむら
      </rt>
      <rt place="left">
       さとる
      </rt>
     </ruby>
     の形で両側ルビを記述します。緑色が左ルビです。
    </seg>
    <lb/>
    <lb/>
    <seg>
     <seg type="red">
      朱書
     </seg>     はスタイル「
     <seg type="red">
      red
     </seg>     」を使用してください。
    </seg>
    <lb/>
    <lb/>
    <seg>
     文字のサイズについては検討中です。
    </seg>
    <lb/>
    <lb/>
    <seg>
     <persName>
      中村覚
     </persName>     のような人名には、スタイル「
     <persName>
      persName
     </persName>     」を使用してください。
    </seg>
    <lb/>
    <lb/>
    <seg>
     割注は
     <note type="割書">
      あああああ
      <milestone unit="wbr"/>
      いいい
     </note>
     のように入力してください。正しく改行されるまで、全角スペースを入力してください。
     <note type="割書">
      こんな
      <milestone unit="wbr"/>
      スタイル
     </note>
     もあります。「こんな」の後に全角スペースを入れています。
    </seg>
    <lb/>
    <lb/>
    <seg type="dateline">
     二〇二三年一月十七日
    </seg>
    <lb/>
    <seg type="personline">
     作成:中村覚
    </seg>
    <lb/>

別途開発中のTEI/XMLビューアで表示した例が以下です。<rt place="left">や朱書などのスタイルがまだ適用できていませんが、人名や割書などは再現することができました。

まとめ

複雑な構造は難しいと思いますが、Wordで作成したテキストをある程度意図した形でTEI/XMLに変換できるようになれば、TEI/XMLの導入ハードルを軽減できるのではないかと思います。引き続き試行錯誤を試みたいと思います。

Discussion