TEI ODDから変換可能なスキーマについて:RNG、XSD、DTDなど

概要 以下の記事でODDの作成を試しました。 上記ではRomaというツールを使用していますが、作成したODDについて、以下に示す出力フォーマットがあることがわかります。 具体的には、「RELAX NGスキーマ」「RELAX NGコンパクト」「W3Cスキーマ」「文書型定義」「ISO Schematron制約」が挙げられます。 そこで、これらの違いについて、GPT-4に問い合わせてみたので、その結果を共有します。誤った内容も含まれるかもしれませんが、参考になりましたら幸いです。 Relax NG(RNG)とW3C XMLスキーマの違い Relax NG(RNG)とW3C XMLスキーマは、どちらもXML文書の構造と内容を定義するためのスキーマ言語ですが、いくつかの重要な違いがあります: 表記法 : RNG : 2つの構文を提供します。一つはXMLベースのもので、もう一つはよりコンパクトな非XMLの構文です。 W3C XMLスキーマ : XMLベースの構文のみを提供します。 柔軟性と明瞭性 : RNG : RNGは非常に柔軟で、人が読みやすい設計になっています。パターンベースのアプローチを取り、より直感的なモデリングが可能です。 W3C XMLスキーマ : より厳格で形式的なアプローチを取り、型システムが複雑ですが、これにより強力なデータタイピングが可能になります。 データタイピング : RNG : データタイプはDatatype Libraryを介してサポートされていますが、W3C XMLスキーマほど多様ではありません。 W3C XMLスキーマ : 豊富なビルトインデータタイプを提供し、正確なデータ型制約を設定できます。 拡張性 : RNG : 簡潔さと柔軟性により、スキーマ自体を容易に拡張できます。 W3C XMLスキーマ : 拡張性はありますが、より複雑な構造のため、理解と実装が難しくなる場合があります。 普及度 : RNG : シンプルさと強力なモデリング機能にも関わらず、W3C XMLスキーマほど広くは採用されていません。 W3C XMLスキーマ : より一般的に使用されており、多くのXML処理ツールやライブラリで標準的にサポートされています。 これらの違いにも関わらず、どちらの言語もXML文書の構造を定義し、文書の妥当性を検証するという共通の目的を持っています。選択はしばしば個々のプロジェクトのニーズや開発者の好みに依存します。 DTD(Document Type Definition)との関係は? DTD(Document Type Definition)は、XML文書の構造を定義するための一つの仕様で、W3C XMLスキーマやRelax NG(RNG)よりも歴史が古く、制約を記述する方法が限られています。DTDは非常にシンプルで、XMLの初期から使われている標準的な方法ですが、名前空間やデータ型などのより高度な概念をサポートしていません。 W3C XMLスキーマやRNGに比べて、DTDは次のような制約があります: ...

2023年11月4日 · 1 分 · Nakamura

Romaを使ってプロジェクトに応じたタグを限定し、解説を作成する

概要 以下の記事で、Romaの使い方を説明しました。 今回は、手元にあるTEI/XMLを対象として、TEI ODD (One Document Does-it-all)や解説(HTMLやPDF)の作成に関する一連の流れを説明します。 なお、ODD (One Document Does it all) と RNG (RelaxNG) の違いについて、GPT-4による回答結果を末尾に掲載しています。こちらも参考にしてください。 使用するタグの一覧を取得する まず、プロジェクトで使用するタグの一覧を取得します。 今回、手元にあるTEI/XMLを対象として、使用されているタグの一覧を取得するライブラリおよびチュートリアル用のノートブックを作成しました。 ライブラリ https://nakamura196.github.io/gdb-utils/ チュートリアル用のノートブック https://colab.research.google.com/github/nakamura196/000_tools/blob/main/TEIでタグの使用頻度を分析するチュートリアル.ipynb 例えば、上記のノートブックを実行すると、以下のような結果が得られます。以下は、対象としたTEI/XMLファイル中に含まれるタグとその頻度を取得し、その結果をタグの名前について昇順で取得したものです。 index Tag Count 0 TEI 1 18 addrLine 1 17 address 1 50 app 8 5 author 2 58 back 1 36 bibl 1 47 body 1 56 closer 1 44 correspAction 2 43 correspDesc 1 20 country 1 33 date 6 26 dimensions 1 19 district 1 54 div 1 37 editor 1 40 editorialDecl 1 39 encodingDesc 1 25 extent 2 2 fileDesc 1 29 handDesc 1 30 handNote 1 27 height 1 31 history 1 21 idno 2 16 institution 1 55 lb 13 51 lem 8 59 listPerson 1 12 listWit 1 45 location 1 14 msDesc 1 15 msIdentifier 1 23 objectDesc 1 48 opener 1 32 origin 1 … Romaでタグを限定したODDファイルを作成する 上記で取得したタグに限定したODDファイルを、Romaというツールを用いて作成します。 ...

2023年11月3日 · 8 分 · Nakamura

Visual Studio Code(VSCode)でVersioning Machine(VM5.0)を使用する

概要 Versioning Machine(VM5.0)は、校異情報の可視化を行うアプリケーションです。 http://v-machine.org/ ここでは、Visual Studio Code(VSCode)を用いて、自身が作成したTEI/XMLファイルを本アプリケーションで表示する方法について説明します。 なお、表示対象となるTEI/XMLファイルは、以下のように、<listWit>タグで校異情報が記述されているものです。 < T . E < . I t . e < < x i f s m H i < < < < l e l t p u l / m n a e i t u p r i < < l s s d D t i b u c s w / w / i D = e e l t l b e t i < < w i < < w s e " r s e l i l D W t t t i t t t i t s h > c S e c i e i n i i t n i i t W c t > t S a c s t e t t n e t t n i t m t t a c > s l l e s l l e t s p t m i t > s e e s s e e s > a : > t o i s s m / > n o x x x > x x x > e / S n m m m m m m A w t S l l l l l l s w m t : : : : : : = w t m i l l i l l " . > t d a a d a a # t > = n n = n n U e " g g " g g T i W = = U = = L - A " " T " " " c " j d L j d > . > a e " a e o " " > " " r > > > > g ヴ G 東 D / ァ o 京 e n イ e 大 r s マ t 学 / ル h 総 B 1 版 e 合 r . ゲ s 図 i 0 ー 書 e " テ W 館 f > 全 e 所 集 r 蔵 ( k の o 略 e ゲ n 称 . ー W テ G A h 自 o ) e 署 e < r 付 t / a 書 h t u 簡 e i s < t g / a l e t n e g i > e t L b l u e e d n > w i i g m W A i u l f h t e r l a m g e C r d a e m r e r G r o o ß m h e 2 r 9 z . o g D i e n z e S m o b p e h r i e 1 8 2 o 2 n i S m a c B h e s s e i n t < z / t d i e t r l e U > n i v e r s i t ä t s b i b l i o t h e k T o k i o < / t i t l e > 後述しますが、本記事では以下で公開されている、東京大学総合図書館所蔵のゲーテ自署付書簡のテキストデータを使用します。 ...

2023年11月3日 · 6 分 · Nakamura

CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。

概要 CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。 https://github.com/TEIC/CETEIcean 以下のissueを参考にさせていただきました。 https://github.com/TEIC/CETEIcean/issues/27 以下で紹介されているスクリプトでは、CETEIceanのv1.8.0では動作しなかったため、CETEIceanのv1.8.0とNuxt3で動作する最小限のリポジトリを作成しました。 デモページ https://nakamura196.github.io/ceteicean-nuxt3 ソースコード https://github.com/nakamura196/ceteicean-nuxt3 主なファイル https://github.com/nakamura196/ceteicean-nuxt3/blob/main/app.vue まとめ 参考になりましたら幸いです。またCETEIceanを開発してくださっている方々に感謝いたします。

2023年7月27日 · 1 分 · Nakamura

TEI Critical Apparatus Toolboxを用いてTEI XMLをLaTeXに変換してみる

概要 TEI Critical Apparatus Toolboxは、a tool for people preparing a natively digital TEI critical editionです。日本語訳の一例は以下です。 ネイティブ デジタル TEI クリティカル エディションを準備する人々のためのツール http://teicat.huma-num.fr/index.php 校異情報を可視化する機能を提供する他、複数の便利な機能を提供しています。 その中で、「TEI から LaTeX および PDF への変換」機能があることを教えていただいたので試してみます。 Print an edition 以下にアクセスします。 http://teicat.huma-num.fr/print.php this dummy edition fileという文字列のリンクをクリックして、以下のサンプルデータをダウンロードします。 http://teicat.huma-num.fr/print-feature-test-file.xml 上記のファイルを本ツールにアップロードします。変換に関する様々なオプションが用意されていますが、デフォルト設定のまま、画面下部の「送信」ボタンをクリックします。 すると、zipファイルがダウンロードされます。myEditionというフォルダが展開され、.log、.pdf、.texの3つのファイルが格納されていることが確認できます。 PDFの例は以下です。 TEXの例は以下です。 注意 2023年4月時点において、上記の機能は日本語を含むxmlファイルではうまく出力できませんでした。この点の改善についても今後検討してみたいと思います。 まとめ TEI/XMLファイルの変換ツール、フローを検討する上で、参考になりましたら幸いです。

2023年4月19日 · 1 分 · Nakamura

app要素を含むTEI/XMLファイルに対して、編集距離を算出するプログラムを作成しました。

概要 app要素を含むTEI/XMLファイルに対して、編集距離を算出するプログラムを作成しました。 以下のGoogle Colabからご利用いただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/編集距離を算出するプログラム.ipynb XMLファイルをアップロードすると、witness間の類似度を算出します。 例 以下のXMLファイルをアップロードしてみます。 https://tei-eaj.github.io/koui/data/nakamura.xml 結果、以下のようなExcelファイルが得られます。witness間の類似度を一覧できます。 index name1 name2 distance ratio 0 中村式五十音 中村式五十音又様 10 0.85 1 中村式五十音 中村式五十音欠損本 7 0.8947368421052632 2 中村式五十音又様 中村式五十音欠損本 8 0.868421052631579 類似度の算出には、以下を使用しています。 https://pypi.org/project/python-Levenshtein/ まとめ テキストの比較方法については色々と検討の余地がありますが、witness間の定量的な比較の一例として参考になりましたら幸いです。 参考 以下で紹介している「二つのテキスト間の差分を抽出するプログラム」にも本機能を追加しました。

2023年1月26日 · 1 分 · Nakamura

Visual Studio Live Shareを用いてTEI/XMLファイルを共同編集する(xmlでなくても可)

概要 Visual Studio Live Shareはリアルタイムの共同開発を可能にするVSCodeの拡張機能です。 https://visualstudio.microsoft.com/ja/services/live-share/ 今回は本拡張機能を使って、TEI/XMLファイルをリアルタイムに共同編集してみます。 デモ動画 共同編集の様子を動画にしました。 https://youtu.be/DzyuJAtzl90 画面右はローカル環境でVSCodeを使用しているユーザ(nakamura196)、画面左はVisual Studio Live Shareによって招待されたユーザ(Guest User)がオンラインのVSCode(vscode.dev)を用いて編集している例です。 1行目はローカルのユーザ(nakamura196)が編集し、1行目はオンラインの共同編集者(Guest User)が編集しています。以下で紹介したTEI/XMLのプレビュー画面も同期されています。 https://zenn.dev/nakamura196/articles/d2733cc49d1239 使い方 Visual Studio Live Shareの使い方は、以下のページを参考にしてください。とても簡単な操作で、共同編集環境を作成することができます。またユーザ毎に「閲覧のみ」「編集可」といった権限の設定ができるので、いろいろな使い方ができます。 https://learn.microsoft.com/en-us/visualstudio/liveshare/quickstart/share 簡単に使い方を紹介します。 招待する側 Visual Studio Live Shareをインストールし、以下のように、画面左のタブから「Live Share」を選択して、「Share」ボタンを押します。 「Invite participants」を押すと、以下のようなリンクがコピーされます。 https://prod.liveshare.vsengsaas.visualstudio.com/join?7D0781A4301C45E7669D4D32CCE870AEBE2B 招待される側 上記のURLにアクセスします。すると、以下のように、ユーザ設定に関するポップアップが右下に表示されます。匿名ユーザとして参加する、すでにアカウントをお持ちであればログインする、などを行います。 その後、以下のように、ホストの承認を待つステータスになります。 ホストが権限を設定することで、招待されたユーザが閲覧または共同編集できるようになります。 上記のデモでは、オンラインのユーザが拡張機能「TEI Japanese Editor」をインストールすることで、プレビュー画面も表示しています。 気づき 別の記事で以下のようなコメントを書きました。 なお、https://github.dev/ など、web版のVSCodeを使用することで、各ユーザが環境のセットアップを行う必要がなくなり、より簡便に編集環境を用意することができそうです。ただし、2023年1月時点ではScholarly XMLなどの拡張機能がweb版に非対応となっており、現時点でこのような環境を使用することは難しいです。 ただ今回の方法を用いると、ローカル環境のユーザ側ではScholarly XMLによるValidationを行うことができ、招待されたユーザはオンラインのVSCodeを使って簡単にセットアップができる、という形になったので、上記の課題を解決する一つの方法になり得るかもしれません。(もちろん、Scholarly XMLがweb版に対応すると解決しますが。) まとめ 今回はTEI/XMLを対象にしましたが、これに限るものではありません。 Visual Studio Live Shareはとても便利な拡張機能です。TEIの学習の際などにも有用な環境になると思います。 TEI/XMLなどの共同編集にあたり、参考になりましたら幸いです。

2023年1月19日 · 1 分 · Nakamura

RELAX NGスキーマを操作するライブラリjingtrangを試す:検証編

概要 あるスキーマに従ったXMLファイルを作成する機会があったのですが、そのスキーマに合致したXMLファイルを作成できているか、確認する必要がありました。 上記の要件に対して、RELAX NGスキーマを操作するライブラリjingtrangを使ってみましたので、その備忘録です。 https://pypi.org/project/jingtrang/ Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す.ipynb Validationを試す # p # w # w i g g ラ p r e v e イ n t a t ブ i g l ラ n フ h i h リ s ァ t d t の t イ t a t イ a ル p t p ン l の s i s ス l ダ : o : ト ウ / n / ー j ン / 対 / ル i ロ r 象 k n ー a の o g ド w X u t ( . M i r t g L g a e i フ e n i t ァ n g _ h イ j a u ル i l b の m l u 用 o を s 意 n 使 e ( o 用 r 校 g ) c 異 a o 源 t n 氏 a t 物 r e 語 i n テ . t キ g . ス i c ト t o の h m ダ u / ウ b n ン . a ロ i k ー o a ド / m ) t u e r i a / 1 0 9 1 6 . / x t m e l s t 2 0 2 1 / m a i n / t e i _ a l l . r n g OKな例 以下のように実行すると、何も出力されませんでした。 ...

2023年1月18日 · 3 分 · Nakamura

WordをTEI/XMLに変換する

概要 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ファイルに変換することができました。 < < < < < < < < < < < < < < < < < < < < < < < < < < < l s ワ / l l s 日 / l s 名 / l s < の / l l s < < l l s 文 / l l s < < l l s 割 < の < も / l l s 二 / l s 作 / l b e ー s b b e 付 s b e 前 s b e r < < < 形 s b b e s 朱 / s r s b b e 字 s b b e p 中 / p p s b b e 注 n あ < い / よ n こ < ス / あ s b b e 〇 s b e 成 s b / g ド e / / g の e / g の e / g u r 中 / r な / r さ r で e / / g e 書 s e e s e / / g の e / / g e 村 p e e p e / / g は o あ m い n う o ん m タ n り e / / g 二 e / g : e / > > の g > > 行 g > 行 g > > b b 村 r t か r t と r u 両 g > > > g e g d e g > > > サ g > > > r 覚 e r r e g > > > t あ i い o に t な i イ o ま g > > 三 g > 中 g > 入 > t に > t に > y > b > む t る t b 側 > g g > イ > s r s s r > e あ l t 入 e l ル t す > t 年 > t 村 > 力 y ス y ス > > ら > p > y ル t > t > ズ N s N N s あ e e 力 e e 。 y 一 y 覚 サ p タ p タ l > ビ y y に a N a a N t s > し t s > 「 p 月 p ン e イ e イ a を p p つ m a m m a y t て y t こ e 十 e プ = ル = ル c 記 e e い e m e e m p o く p o ん = 七 = ル " 「 " 「 e 述 = = て > e > e e n だ e n な " 日 " d d p p = し " " は > > = e さ = e 」 d p a a e e " ま r は r 」 検 " い " の a e t t r r l す e ス e を 討 割 u 。 割 u 後 t r e e s s e 。 d タ d 使 中 書 n 正 書 n に e s l L o o f 緑 " イ " 用 で " i し " i 全 l o i i n n t 色 > ル > し す > t く > t 角 i n n n l L " が 「 て 。 の 」 = 改 = ス n l e e i i > 左 く よ を " 行 " ペ e i " 」 n n ル だ う 使 w さ w ー " n > を e e ビ さ な 用 b れ b ス > e 使 " 」 で い 人 し r る r を " 用 > を す 。 名 て " ま " 入 > し 使 。 に く / で / れ て 用 は だ > 、 > て く し 、 さ 全 い だ て ス い 角 ま さ く タ 。 ス す い だ イ ペ 。 。 さ ル ー 先 い 「 ス 頭 。 を に 末 入 2 尾 力 文 に し 字 2 て の 文 く 空 字 だ 白 の さ が 空 い 入 白 。 り が ま 入 す り 。 ま す 。 別途開発中のTEI/XMLビューアで表示した例が以下です。<rt place="left">や朱書などのスタイルがまだ適用できていませんが、人名や割書などは再現することができました。 ...

2023年1月17日 · 4 分 · Nakamura

Romaを用いてカスタマイズしたrngファイルを作成する:使用するTEIタグを限定する

概要 本記事では、Romaというウェブアプリケーションを用いて、 TEI ODD (One Document Does-it-all) のカスタマイズを試みます。 https://romabeta.tei-c.org/ TEI ODDについては、以下の公式サイトをご確認ください。勉強不足により、私自身も十分に理解できておりません。 https://wiki.tei-c.org/index.php/ODD ただ一つの用途として、TEIを用いたプロジェクトにおいて、使用する(具体的には、補助や検証を行う?)タグを限定することができます。 これにより、大量に用意されたTEIのタグに悩んでしまう、といった課題を軽減することができそうです。 今回は、以下で紹介した、ExcelからTEI/XMLを作成するフローで使用するタグを想定して、Romaを用いたodd/rngファイルのカスタマイズを行ってみます。 使用するタグ 本ユースケースでは、以下のタグを使用します。 テキスト関連 pb ab lb seg choice orig note reg 画像関連 facsimile surface label zone 上記のタグに限定したodd/rngファイルを作成します。 Romaの使用 Romaにアクセスします。 https://romabeta.tei-c.org/ 「SELECT ODD」において、「TEI Minimal」を選択してみます。 設定画面において、Titleなどを修正します。特に、Language関係の2項目を日本語に設定することをお勧めします。 例えばabタグなど、各プロジェクトで使用するタグのみを選択していきます。 編集が完了したら、「RelaxNG schema」を選択してダウンロードします。 合わせて「Customization as ODD」もダウンロードしておくことをお勧めします。このODDファイルをRomaのトップ画面のフォームからアップロードすることにより、追加の編集ができました。 XMLファイルへの追加 ダウンロードしたtei_excel.rngファイルを、編集対象とするXMLファイルと同じ階層に置いた場合には、以下のように<?xml-model ... ?>を追記します。 < < < ? ? T < x x E t T m m I e t E l l i e I - x H i > v m m e H e o l a e r d n d a s e s e d i l = r e o " > r n h h > = r t " e t 1 f p . = : 0 " / " t / e w e i w n _ w c e . o x t d c e i e i n l - g . c = r . " n o u g r t " g f / - s n 8 c s " h / ? e 1 > m . a 0 t " y > p e n s = " h t t p : / / r e l a x n g . o r g / n s / s t r u c t u r e / 1 . 0 " t y p e = " a p p l i c a t i o n / x m l " ? > 一方、githubなどのサーバにアップロードした場合には、以下のように、URLの形式で指定することもできます。 ...

2023年1月12日 · 3 分 · Nakamura

ExcelからTEI/XMLを作成するフローの一例を作成しました。

概要 Excelで作成したデータから、TEI/XMLを作成するフローの一例を作成しました。 以下のようなTEI/XMLファイルが出力されます。pbタグを使ったページ区切り、lbタグを使った行IDの指定、choice・orig・regタグを使った複数表記、noteタグを使った注釈、およびIIIF画像との関連づけ、などに対応します。 < < ? T < < < x E t < t < f < < T m I e f < < < t e b < < t a s < < / s < f E l i i t < / p < / s < f e x o p a < < b e c u l [ / z s u l [ s a I x H l i t t u a p o a s i i t d b b l s い < な a o x s r a 2 l o u r a 2 l u c > v m e e t i i b b u u b l H > y > b e つ c < か s b d t i f b 2 a n r f b 3 a r s e l a D l t t l / b r u e e > c g れ h o 給 < r た c に e > y > m a e ] b e f a e ] b f i r n d e e l l i > l c r D a o x > の o r け n 給 o e ま r h い g > i c l e a c l e a m s s e s S e e c i e c e d r m 御 i i る o け n r g ふ e o と > l e > l l c e > l c i i = r c t / S a c D e s e r l 時 c g t る o i > g i や e > r e > e l o " > > m > t t a e D c r e : に e > e ー t g > c む s x > s > e n h t m i t s e > > s i か > た e > e こ s o = o > = t > t o i c s p d 女 c ま > > と o u " u " t > n o > c = = 御 o ふ な u r 1 r 1 p S n > " " 更 r 河 き r c 1 c . : t S # p 衣 r ゝ c e 2 e 0 / m t p a あ e は e = 6 = " / t m a g ま s = " " " w > t g e た p " h h e w > e _ さ = h t l t n w _ 2 ふ " t t r t c . 2 2 ら # t p y p o t 2 - ひ p p s = s d e " b a s : " : i i / - g : 1 / n - > 1 e 3 / g c " _ d 1 d = . / 2 d l 9 l " o > 2 l . " . u r - . n n t g b n d u d f / - d l l l - n 1 l . x . 8 s - . g = g " / 2 g o " o ? 1 0 o . 1 . > . " . j 0 j 0 j p 4 p " t p 4 / > y a " a p a p p e p i u i = i l / " i y i 校 i i = i 異 i i " i " i f 8 f > f 9 / 3 5 3 3 4 " 4 4 3 3 3 7 x 7 7 6 m 6 6 8 l 8 8 6 : 6 6 i / c d c m a = a a n " n n v p v i a a a f s g s e / e / s 2 _ 2 t 2 2 3 . " 2 " j - s x b x o m - m n l 1 l " : - : > i 2 i d 0 d = " = " / " p > p a a g g e e _ _ 2 2 2 3 " " > > 上記のTEI/XMLデータの可視化の一例を以下に示します。画像、テキスト(original)、テキスト(Regularization)、注釈を同一画面上に表示しています。 ...

2023年1月10日 · 4 分 · Nakamura

TEIビューアでの利用を想定したCustom OpenSegDragon Viewerを作成しました。

概要 TEIビューアでの利用を想定したCustom OpenSegDragon Viewerを作成しました。 背景 以下のようなTEIとIIIFを対応させたビューア開発において、次に示す機能を持ったビューアが必要でした。 https://www.hi.u-tokyo.ac.jp/collection/digitalgallery/wakozukan/tei/ IIIFのマニフェストファイルを読み込むことができる。 ビューアコンポーネント側でのコマ送りを、コンポーネント外で把握することができる。 画像の部分領域をハイライトすることができる。 上記の要件を全てを満たす既存のIIIF対応ビューアを見つけることができなかったため、独自のビューアの開発を試みました。合わせて、npmパッケージとして公開することも試みました。 開発したビューア ドキュメンテーション等がまだ不十分ですが、以下のページで公開しています。このページで、ソースコードへのリンクも掲載しています。 https://www.npmjs.com/package/@nakamura196/osd-custom-viewer vue3とviteを使ったコンポーネントの開発およびnpmでの公開にあたっては、以下のサイトを参考にしました。 https://blog.egmond.dev/vue-component-to-npm-package 使用例 以下のページで導入例をご確認いただけます。 https://nakamura196.github.io/nuxt3-iiif-viewer/custom-osd コンポーネント内外からのコマ送りが可能です。これにより、例えばIIIF画像とTEIテキストの並列表示を行った際、TEIテキスト側からのコマ送りや、画像のコマ送りによる当該テキストへのスクロールなどを行うことができます。 またハイライト機能用いることで、あるテキスト行に対応した画像の部分領域をハイライトさせる、といったことが可能です。 使用例のソースコードは以下です。 https://github.com/nakamura196/nuxt3-iiif-viewer/blob/main/pages/custom-osd/index.vue ssrでの公開にあたり、pluginsフォルダに以下を追加しています。 https://github.com/nakamura196/nuxt3-iiif-viewer/blob/main/plugins/custom-osd.client.js まとめ ドキュメンテーションの充実や、IIIF v3への対応など、多くのTODOが残っていますが、参考になりましたら幸いです。

2022年12月26日 · 1 分 · Nakamura

Gatsby CETEIceanを試す

概要 Raffaele Vigliantiさんが作成されたGatsby CETEIceanを試してみました。 https://github.com/raffazizzi/gatsby-ceteicean-workshop 試作サイト 以下が試作したサイトです。MUIの追加や、縦書き表示、RDFデータへのリンクなど、いくつかのカスタマイズを加えています。 https://nakamura196.github.io/gatsby-ceteicean-workshop/ データとして、以下の「校異源氏物語テキストDB」のTEI/XMLファイルを使用しています。 https://kouigenjimonogatari.github.io/ ソースコード カスタマイズ内容を含むソースコードは以下でご確認いただけます。 https://github.com/nakamura196/gatsby-ceteicean-workshop まとめ Gatsby CETEIceanを用いることで、TEI/XMLファイルの公開環境を効率的に開発することができそうです。 参考になりましたら幸いです。

2022年12月20日 · 1 分 · Nakamura

TEI Boilerplateを試す

概要 TEI Boilerplateの日本語訳例は以下です。 TEI ( Text Encoding Initiative ) P5 コンテンツを最新のブラウザーで直接公開するための軽量ソリューションです。TEI Boilerplate を使用すると、サーバー側での処理や HTML への変換を行わずに、TEI XML ファイルを Web に直接提供できます。当社のTEI Boilerplate Demoは、TEI Boilerplate によってレンダリングされる多くの TEI 機能を示しています。 TEI Boilerplate は、Web 上で TEI/XML を公開および表示するための多くの優れた XSLT ソリューションに代わるものではありません。これは、より複雑な XSLT ソリューションに代わるシンプルで軽量なソリューションとなることを目的としています。 今回は、このTEI Boilerplateの使い方の例を説明します。 リポジトリのクローンとサーバの起動 以下のリポジトリを使用します。 https://github.com/TEI-Boilerplate/teibp-teach 本リポジトリは、TEI-Boilerplate 対応の http サーバを立ち上げるプロジェクト、と説明されています。 まず、リポジトリをクローンします。 g i t c l o n e h t t p s : / / g i t h u b . c o m / T E I - B o i l e r p l a t e / t e i b p - t e a c h 次に、ライブラリのインストールを行います。 ...

2022年12月17日 · 1 分 · Nakamura

TEIテキストの作成支援ツール「FairCopy」の紹介

概要 研究仲間に、「FairCopy」というTEIテキストの作成支援ツールを教えていただきました。本ツールはGUIを介してTEIテキストを作成可能なツールで、とても便利なものに感じました。 有料のツールですが、2週間は無料で試用できるため、この調査結果を共有します。 インストール 以下のSign Up画面から情報を送信することで、トライアルのコードとアプリケーションのダウンロードリンクが表示されます。 https://faircopyeditor.com/sign_up ダウンロード後にアプリケーションを起動すると、以下のようなプロジェクトの選択画面が表示されます。 プロジェクトの作成 プロジェクトを作成します。今回は、以下のような情報を入力しました。 その後、以下のような画面が表示されます。 作成するデータ 今回は、すでに公開されている校異源氏物語テキストDBで公開されている「きりつぼ」のTEIデータについて、本ツールを使って再現することを試みます。 https://kouigenjimonogatari.github.io/tei/01.xml 国立国会図書館で公開されているIIIF画像と、プロジェクトで翻刻したテキストデータを対応づけたTEI/XMLファイルです。 新規リソースの作成 「NEW RESOURCE」をクリックすると、以下のような登録フォームが表示されます。適当なNameとIDを与えます。 また「Resource Type」については、複数の選択肢が表示されますが、TEI Header付きのTEIとIIIFを組み合わせたXMLファイルを作成したい場合には、「TEI Document」を選択するのがよさそうです。 結果、以下のように、「校異源氏物語・きりつぼ」フォルダの中に、「TEI Header」というファイルが作成されます。 IIIFのインポート まず、IIIF画像のインポートを試みます。「IMPORT IIIF」ボタンを押し、以下のようなIIIFマニフェストのインポート画面において、URLを入力します。 今回は、以下のマニフェストのURLを入力しました。 https://www.dl.ndl.go.jp/api/iiif/3437686/manifest.json すると、以下のように画像が追加されます。 その行をクリックすと、以下のように、マニフェストファイル内の画像が取り込まれます。ID列で、各画像にIDが与えられていることが確認できます。テキストと画像の紐付けにおいて、後ほど使用します。 画面右上の画像アイコンをクリックすると、画像を表示することもできます。 参考までに、「校異源氏物語・きりつぼ」に戻り、以下のように、画像の行のチェックボックスを選択して、「ACTIONS」 > 「Export」を押すと、XMLファイルが出力されます。 以下のように、facsimile要素を持つXMLファイルが作成されます。 < < ? T < < x E f < < < < . T m I a s < < / s < < . f E l c u l g s u l g s . a I x s r a r u r a r u c > v m i f b a r f b a r s e l m a e p f a e p f i r n i c l h a c l h a m s s l e > i c e > i c i i = e 1 c e 2 c e l o " x < > x < > e n h s m / m m / m > = t a l l i l l i " t m : a m : a m 1 p e i b e i b e . : A d e T d e T 0 / s = l y = l y " / = " > p " > p w " f e f e e w h 0 = 0 = n w t 0 " 0 " c . t 0 a 1 a o t p " p " p d e s p p i i : u l u l n - / l i l i g c x c x c = . w = a = a " o w " t " t U r w 0 i 0 i T g . " o " o F d n n - n l u / u / 8 s . l j l j " n y s y s ? 1 d = o = o > . l " n " n 0 . 0 " 0 " " g " " > o u u . l r l r j r l r l p x = x = / = " = " a " h " h p 6 t 6 t i 8 t 8 t / 9 p 9 p i 0 s 0 s i " : " : i / / f l / l / / r w r w 3 y w y w 4 = w = w 3 " . " . 7 4 d 4 d 6 7 l 7 l 8 0 . 0 . 6 6 n 6 n / " d " d m l l a s . s . n a g a g i m o m o f e . e . e A j A j s s p s p t = / = / . " a " a j h p h p s t i t i o t / t / n p i p i " s i s i > : i : i / f / f / / / / w 3 w 3 w 4 w 4 w 3 w 3 . 7 . 7 d 6 d 6 l 8 l 8 . 6 . 6 n / n / d R d R l 0 l 0 . 0 . 0 g 0 g 0 o 0 o 0 . 0 . 0 j 0 j 0 p 1 p 2 / " / " a / a / p > p > i i / / i i i i i i f f / / 3 3 4 4 3 3 7 7 6 6 8 8 6 6 / / c c a a n n v v a a s s / / 1 2 " " > > 後ほど、TEI Headerとtext - bodyを組み合わせたTEI/XMLをエクスポートしますが、上記のように、画像やテキスト、TEI Headerなど、それぞれの要素のTEI/XMLをエクスポートする機能が提供されています。 ...

2022年11月11日 · 14 分 · Nakamura

テキストマークアップツール「CATMA」の使い方

概要 テキストマークアップツールの一つである「CATMA」の入門的な使い方を紹介します。 https://catma.de/ アノテーションの結果はTEIフォーマットでエクスポートできるため、他のシステムでも活用可能な相互運用性の高いデータを作成できると思われます。また実験的な段階とのことですが、JSON APIも提供されています。これを使うことで、アノテーションはCATMAで行い、その結果をAPIを経由して、他のシステムで利用する、という構成も考えられます。 上記は未検証の内容を含む、一部発展的な取組みになりますが、本記事では、CATMAの基本的な使い方を備忘録として残します。 使い方 以下にアクセスして、「Sign Up」を行います。Googleのアカウントでログインするとスムーズかと思います。 https://app.catma.de/catma/ ログイン後の画面は以下です。 プロジェクトの作成 「Create New Project」から新しいプロジェクトを作成します。 ドキュメントの登録 以下のように、「+」ボタンを押して、「Add Document」を行います。 今回は以下のような単純なtxtファイルを試します。 私 の 名 前 は 中 村 覚 で す 。 その後の選択肢は基本的にそのままでOKですが、以下のように、言語は「Japanisch」にしておくとよいかもしれません。 以下のように、exampleというドキュメントと、example Default Annotaitonsというアノテーションを保存するためのコレクションが作成されます。 タグセットの作成 次に、タグセットを作成します。左のメニューから「Tags」を選択して、画面右上の「+」ボタン、「Add Tagset」を選択します。 今回は「はじめてのタグセット」という名前をタグセットを作成しました。さらに、画面右上の「+」ボタンから、「Add Tag」を選択します。 そして、以下のように、タグの追加対象となるタグセットを選択して、今回は、「persName」というタグを追加してみます。「プロパティ」などを追加設定できますが、今回はスキップします。 アノテーション 左のメニューから、「Annotate」に移動して、以下のように、アノテーション対象のドキュメントとして「example」、タグセットとして「はじめてのタグセット」を選択します。 アノテーション付与対象の選択し、画面右から付与対象のタグを選択します。先のタグの追加画面で設定した色の下線が引かれます。 エクスポート 左のメニューから、「Project」に戻り、「example Default Annotations」を選択して、メニューアイコンから「Export Documents & Collections」を選択します。 zipファイルがダウンロードされ、元テキストであるtxtファイルと、アノテーション結果を格納したxmlファイルが展開されます。 xmlファイルは以下のようなTEIのフォーマットで出力されます。<encodingDesc>に使用したタグ、具体的にはpersNameが示されます。 ...

2022年11月10日 · 8 分 · Nakamura

MediaWikiのTEI拡張を試す(結果:うまくいきませんでした。)

概要 MediaWikiでTEIの編集を可能とする拡張機能が開発されています。 https://www.mediawiki.org/wiki/Extension:TEI 編集画面の例は以下です。 Omeka Sの翻刻支援モジュールであるScriptoは、Omeka SとMediaWikiを連携させることで、Omeka Sに登録された画像データ等に対する翻刻を可能にします。 https://omeka.org/s/modules/Scripto/ この環境に、上述したTEI拡張を組み合わせることで、TEIに準拠した翻刻ができないかを試しました。ただ、結果として、今回のTEI拡張をうまく動作させることができませんでした。 以下、この取り組みに関する備忘録です。 なお、オンライン上でTEIを編集できるツールとして、以下があります。こちらも参考になりましたら幸いです。 https://digital-editing.fas.harvard.edu/editor/ MediaWikiのセットアップ AWSのLightsailを用いて作成したLAMP環境に、MediaWikiをインストールしました。このインスール方法については、公式のドキュメントなど、多くの記事がすでに存在するため、そちらに説明を譲ります。 https://www.mediawiki.org/wiki/Manual:Installing_MediaWiki/ja TEI拡張のインストール 以下のページのInstallationを参考に、拡張機能を追加します。 https://www.mediawiki.org/wiki/Extension:TEI 以下、日本語訳です。 ファイルをダウンロードして、extensions/フォルダー内のディレクトリに配置します。 LocalSettings.phpの下部に次のコードを追加します。 w f L o a d E x t e n s i o n ( ' T E I ' ) ; 完了 – ウィキのSpecial:Versionに移動して、拡張機能が正常にインストールされたことを確認します。 上記のSpecial:Versionのページには、日本語設定の場合は、以下からアクセスできます。 /index.php?title=特別:バージョン情報 以下のような画面が表示されます。 そして、以下の記述をLocalSettings.phpにさらに追加します。 d d $ $ $ e e w w w f f g g g i i E E N n n x x a e e t t m ( ( r r e a a s ' ' N N p N N a a a S S m m c _ _ e e e T T s s C E E p p o I I a a n ' _ c c t , T e e e A s s n 1 L [ [ t 0 K N N M 0 ' S S o , _ _ d ) T T e ; 1 E E l 0 I I s 1 ] _ [ T N ) = A S ; L _ ' K T T ] E E I I = ] ' ; ' = T E ' I t _ e T i a ' l ; k ' ; 追加作業 上記まで行いましたが、TEIが有効になりませんでした。以下の追加作業が必要でした。 ...

2022年11月10日 · 2 分 · Nakamura

[TEI x JavaScript] Nuxt3で意図しないWhitespaceを削除する

課題 TEI/XMLファイルを読み込み、JavaScript(Vue.jsなど)で可視化を行う際、意図しないWhitespaceが入ってしまうケースがありました。 具体的には、以下のようなHTMLを書いた場合、 < t / e < t m d / e p i お < お d m l v 問 a 願 i p a > い い v l t 合 h し > a e わ r ま t > せ e す e は f > = " # " > こ ち ら か ら < / a > 以下のように表示され、「お問い合わせは こちらから お願いします」と意図しないスペースが入ってしまいました。 ...

2022年10月25日 · 4 分 · Nakamura

python-docxを用いた両側ルビ

python-docxを用いて、Wordで両側ルビを実現する方法の備忘録です。 以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/python_docxを用いた両側ルビ.ipynb 出力例は以下です。 入力例は以下です。 < < < b p 私 < に / p < が / / o > は r < < / 行 p > r < < / あ p b d u r < < / r r き > u r r r り > o y b b r < < / r < < / r t u ま b b t u ま d > y > u r r r u r r r 場 b b し y > b す y > b b t u b b t u > p y た > 入 p y 。 > y > b y > b l > 。 学 l > > 打 p y > 球 p y a 試 a < l > < l > c 験 c / a / a e < e r c r c = / = b e b e " r " > = > = l b a " " e > b r r f o i i t v g g " e h h > " t t ビ > " " リ に > > ヤ ゅ ダ キ ー う < ウ ド が / < < く r / / し t r r け > t t ん > > < / r t > まだ不完全はプログラムではありますが、参考になりましたら幸いです。 ...

2022年10月4日 · 2 分 · Nakamura

TEI/XMLファイルを縦書きPDFに変換する方法の1例

概要 TEI/XMLファイルを縦書きPDFに変換する方法について、その1例を備忘録として残します。 以下のノートブックで、「校異源氏物語」を対象としたプログラムをお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/TEI_XMLファイルを縦書きPDFに変換する.ipynb 変換の流れ 今回は、Quartoを使用しています。 https://quarto.org/ インストールの方法は以下を参考にしてください。 https://quarto.org/docs/get-started/ TEI/XML -> qmd まずTEI/XMLファイルの内容をqmdファイルに変換します。以下は、変換スクリプトのサンプルです。 f s e i i t a e t f o o t t a f { " w r o l m d i u l e o p s e i u o t " i o u e p t t e x r a . x t t r e " t m p m o = l h m t t m t l h m x h e r e o e e i i h a e o a d t f b = n t o r n = f f k = : r t o . o . s t s = t i = e : : c s p w 4 B s o . = s " n e e d f " x t e r e s p s " . t . t f i " { " : r r n i i a = a o s = e n e n e " r " t { e i ( t m u t u o l a x a x d s " i a f p o e p t s h p u s e m t m t a ( - t u e ( p ( o i o . . p o m e e t o - l t r ) a t r f u s f . u e + + a s - e h e } t e t u p p i f p n = = = = / . } o n h x l . l n i . t = = { p " r c , t B S f i d n f s " e i a } e ) e o i t ( d i : " \ " . d t " - " a u n e " ( n p n s t } h d w u p d x t " d b " e e . . o " t ( C t i a ( " g x q d c ) i o h ( t u " : " t m i : f p i o l t b : d r a u e l s e h o + " n / s l n d . " o d a c S ( r p ) r y " m o f o f e a . " " e n : u i n t t ) ) ( t p l ( h e . . \ o e e t . x t f n p n , e b t e i " a t ' x a x n t / r t s t d h k ' = e ( ) o ) T n " , u , r a p i u m " e g " e e ) x e x , ( . i n m f f s j l r i i t i " e l n _ m ) c e d o o u ) C k n r ) h = o s [ i T g i 0 l r a v ] d u t e r e a = e ) r T n i r ( / u ) t e o ) o l s / g e n j i - d o c - s t y l e . d o c x 以下がqmdファイルの例です。 ...

2022年10月3日 · 7 分 · Nakamura