LEAF-Writerをローカル環境で動かす

概要 LEAF-Writerをローカル環境で動作する機会がありましたので、備忘録です。 リポジトリ 以下を使用します。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer 方法 g c n n i d p p t m m l c e i r l a u o f n n - e w d r e h i v t t t e p r s : / / g i t l a b . c o m / c a l i n c s / c w r c / l e a f - w r i t e r / l e a f - w r i t e r 3000ポートでLEAF-Writerが起動します。 ...

2024年6月26日 · 1 分 · Nakamura

DHCフォーマットの中身を確認する

概要 Digital HumanitiesやThe Japanese Association for Digital Humanities (JADH)の年次大会では、以下のdhconvalidatorというツールを使い、DOCXやODT形式のファイルを、DHCファイルに変換して提出することが多いです。 https://github.com/ADHO/dhconvalidator 今回は、このフォーマットを理解するための備忘録です。 内容を確認する DHCファイルは以下のように説明されています。 This is essentially a ZIP archive containing their original OCT/DOCX file, an HTML rendering and an XML-TEI rendering, plus a folder with the image files, properly renamed). (機械翻訳)これは基本的に、元のOCT/DOCXファイル、HTMLレンダリング、XML-TEIレンダリングを含むZIPアーカイブであり、適切に名前が付けられた画像ファイルのフォルダも含まれています。 したがって、上記のdhconvalidatorを使って作成された.dhc形式のファイルについて、展開してみます。 u n z i p n a k a m u r a . d h c 結果、以下のようにファイルが展開されました。 ...

2024年6月16日 · 3 分 · Nakamura

cwrcのwikidata-entity-lookupを試す

概要 以下の記事の続きです。 LEAF-WRITERの特徴として、以下が挙げられています。 the ability to look up and select identifiers for named entity tags (persons, organizations, places, or titles) from the following Linked Open Data authorities: DBPedia, Geonames, Getty, LGPN, VIAF, and Wikidata. この機能は、以下のようなライブラリが使用されています。 https://github.com/cwrc/wikidata-entity-lookup この機能を試しています。 使い方 以下などで、npmパッケージが公開されています。 https://www.npmjs.com/search?q=cwrc 上記のリストにはありませんが、今回は以下を対象にします。 https://www.npmjs.com/package/wikidata-entity-lookup 以下でインストールします。 n p m i w i k i d a t a - e n t i t y - l o o k u p wikidataLookup.findPersonは、以下のように実行することができました。 ...

2024年5月16日 · 2 分 · Nakamura

CWRC XML Validator APIを試す

概要 TEI/XMLを対象としたエディタの一つとして、LEAF-WRITERがあります。 https://leaf-writer.leaf-vre.org/ 以下のように説明されています。 The XML & RDF online editor of the Linked Editing Academic Framework GitLabのリポジトリは以下です。 https://gitlab.com/calincs/cwrc/leaf-writer/leaf-writer このツールの特徴の一つとして、以下が説明されています。 continuous XML validation このvalidationには以下のAPIが使用されているようでした。 https://validator.services.cwrc.ca/ また、ライブラリは以下のようです。 https://www.npmjs.com/package/@cwrc/leafwriter-validator 今回は、上記のAPIを試してみます。 試す 以下のページが表示されます。 https://validator.services.cwrc.ca/ Try ItのPOSTで以下を試しています。 Schema URL: https://raw.githubusercontent.com/nakamura196/test2021/main/tei_excel.rng Schema Type: RNG_XML Document Content: < < < < ? ? ? s T / x x x c E T m m m h I < < E l l l e t / t / I - - m x e t e t > v m m a m i < e x < e e o o t l H f / i t b / x r d d y n e i f H > o b t s e e p s a l < < < i e d < > i l l e = d e t / p / s / l a y p d o n " e D i t u p o s e d > > p y n h h s h r e t < i b < u u < o D e I > > = r r = t > s l t t l p b r p u e r " e e " t c e i l i > l c > r s > a 1 f f h p > S t e c P i e I c c m . = = t : t l S a u c D n e > 0 " " t / m e t t b a e f D < " h h p / t > m i l t s o e n t t : w > T t o i i c r s a e t t / w i > n c o > m c m n p p / w t S a n a > e c : : p . l t t S t > o / u t e m i t i S d / r e < t o m o a i w w l i / > n t n t n w w . - t > o g w w o c i I a r = . . c . t n b u " t t l o l f o U e e c r e o u N T i i . g > r t a F - - o / m k - c c r n a t a 8 . . g s t h m " o o / / i e u ? r r d 1 o r > g g s . n s a / / d 0 < o < r r l " / u / e e / > p r n l l s > c a e e c e m a a h < e s s e / > e e m p . / / a > x x t m m r l l / n t t " e e ? i i > / / c c u u s s t t o o m m / / s s c c h h e e m m a a / / r r e e l l a a x x n n g g / / t t e e i i _ _ a a l l l l . . r r n n g g " " t t y y p p e e = = " " a a p p p p l l i i c c a a t t i i o o n n / / x x m m l l " " s c h e m a 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 " ? > 上記は、http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rngをスキーマとする場合にはエラーが生じませんが、使用可能なタグを限定したhttps://raw.githubusercontent.com/nakamura196/test2021/main/tei_excel.rngではエラーが生じるはずです。 ...

2024年5月16日 · 6 分 · Nakamura

RELAX NGとSchematron

概要 oXygen XML EditorでTEI/XMLを作成すると、以下のようなテンプレートが作成されます。 < < < < ? ? ? s T / x x x c E < < T m m m h I t / t / E l l l e e t e t I - - m x i e x e > v m m a m H < i t < x e o o t l e f / H > b / t r d d y n a i f e o b > s e e p s d l < < < i a d < o i l l e = e e t / p / s / l d y p d o n " r D i t u p o s e e > > y n h h s h > e t < i b < u u < o D r S > = r r = t s l t t l p b r p u e > o " e e " t c e i l i > l c > r s m 1 f f h p > S t e c P i e I c c e . = = t : t l S a u c D n e > 0 " " t / m e t t b a e f D t " h h p / t > m i l t s o e e t t : w > T t o i i c r s x e t t / w i > n c o > m c t n p p / w t S a n a > c : : p . l t t S t h o / u t e m i t i e d / r e < t o m o r i w w l i / > n t n e n w w . - t > . g w w o c i I a < = . . c . t n b / " t t l o l f o p U e e c r e o u > T i i . g > r t F - - o / m - c c r n a t 8 . . g s t h " o o / / i e ? r r d 1 o > g g s . n s / / d 0 < o r r l " / u e e / > p r l l s > c e e c e a a h < s s e / e e m p / / a > x x t m m r l l / n t t " e e ? i i > / / c c u u s s t t o o m m / / s s c c h h e e m m a a / / r r e e l l a a x x n n g g / / t t e e i i _ _ a a l l l l . . r r n n g g " " t t y y p p e e = = " " a a p p p p l l i i c c a a t t i i o o n n / / x x m m l l " " s c h e m a 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 " ? > この時、以下の違いが気になりましたので、GPT4への問い合わせ結果を共有します。 ...

2024年5月16日 · 7 分 · Nakamura

Docker版のTEI Publisherを使用する

概要 Docker版のTEI Publisherを使用する機会があったので、備忘録です。 https://teipublisher.com/exist/apps/tei-publisher-home/index.html TEI Publisherは以下のように説明されています。 TEI Publisher facilitates the integration of the TEI Processing Model into exist-db applications. The TEI Processing Model (PM) extends the TEI ODD specification format with a processing model for documents. That way intended processing for all elements can be expressed within the TEI vocabulary itself. It aims at the XML-savvy editor who is familiar with TEI but is not necessarily a developer. (機械翻訳) TEI Publisherは、TEI Processing Modelをexist-dbアプリケーションに統合することを容易にします。TEI Processing Model(PM)は、ドキュメントの処理モデルを備えたTEI ODD仕様形式を拡張します。これにより、すべての要素の意図された処理をTEI語彙自体内で表現することができます。このモデルは、TEIに精通しているが必ずしも開発者ではないXML熟練のエディターを対象としています。 ...

2024年5月15日 · 3 分 · Nakamura

PythonでXML文字列を整形する

概要 PythonでXML文字列を整形するプログラムの備忘録です。 プログラム1 以下を参考にしました。 https://hawk-tech-blog.com/python-learn-prettyprint-xml/ 不要な空行を削除する処理などを加えています。 f i d r m e o p f m o r p r p p p r x t r e r r r e m e p e e e t l r t a t t t u . e t r t t t r d i s y y y n o f e m y d = = = p ( r i r = r p r e m o e r e t p u m . e . t o g i s t s y r h n u t u t _ i b y b s d ( . ( m t o r r r i r m " e " n i . [ p \ i n p l n d g a t a \ o ) r c s m : s ] e * e + ( \ S \ " n t n > " r " \ , i , n n " g " n ( " \ n r , t " o < , u r " g e , p h p r _ a " e s r > t t s \ t r e n y i d \ ) n . t g t < ) o " # p ) r 連 e 続 t # し t た y 不 改 x 要 行 m な ( l 空 空 ( 行 白 i を 行 n 削 を d 除 含 e む n ) t を = 単 " 一 \ の t 改 " 行 ) に ) 置 換 # イ ン デ ン ト 後 の 不 要 な 改 行 を 削 除 プログラム2 以下を参考にしました。 ...

2024年5月9日 · 3 分 · Nakamura

Node.jsでXML文字列をパースする

概要 Node.jsでXML文字列を解析し、その中から情報を抽出するための関数を完成させるには、xmldom ライブラリの使用をお勧めします。これにより、ブラウザでDOMを操作するような方法でXMLを扱うことができます。以下に、xmldom を使ってXMLを解析し、“PAGE” タグに焦点を当てて要素を抽出するための関数の設定方法を示します。 xmldom ライブラリをインストールする: まず、XML文字列を解析するために必要な xmldom をインストールしてください。 n p m i n s t a l l x m l d o m xmldom を使用してXMLを解析し、必要な要素を抽出します。 c c c c c c o o o o o o n n n n n n s s D s s 全 s 発 s t t O t t て t 見 o M の さ l { x P p x P p れ e m a a m A a た . D l r r l G g P l O S s s D E e A o M t e e o 要 s G g P r r r c 素 E ( a i を を = 要 ' r n 使 = = 取 素 P s g 用 得 x の A e し n p m 数 G r = て e a l を E X w r D ロ 要 } " M s o グ 素 . L D e c に の = . 文 O r . 記 数 . 字 M . g 録 : r " 列 P p e ( ' e ; を a a t 例 , q 解 r r E ) u 析 s s l p i e e e a r r F m g e ( r e e ( ) o n s ' ; m t . x S s l m t B e l r y n d i T g o n a t m g g h ' ( N ) ) x a ; ; m m l e S ( t ' r P i A n G g E , ' ) ' ; t e x t / x m l ' ) ; この例では、XML文字列をログに記録し、文書に解析し、各 “PAGE” 要素を繰り返し処理して属性や内容をログに記録する基本的な関数を設定します。ループ内の処理は、各ページから特定の詳細を抽出するなど、具体的な要件に基づいてカスタマイズできます。 ...

2024年4月24日 · 2 分 · Nakamura

TEI/XMLの可視化例:Leafletを用いた地図表示

概要 TEI/XMLファイルの可視化にあたり、可視化例とソースコードを公開するリポジトリを作成しました。 https://github.com/nakamura196/tei_visualize_demo 可視化例は以下のページでご確認いただけます。 https://nakamura196.github.io/tei_visualize_demo/ 今回、MarkerClusterを用いたマーカー表示の例を追加しましたので、紹介します。 前提 Leafletを使って、(MarkerClusterを使用せずに、)マーカーの表示ができていることを前提とします。まだの方は、以下の可視化例、およびソースコードを参考にしてください。 可視化例 https://nakamura196.github.io/tei_visualize_demo/01/ ソースコード https://github.com/nakamura196/tei_visualize_demo/blob/main/docs/01/index.html MarkerClusterを使った実装例 可視化例は以下です。 https://nakamura196.github.io/tei_visualize_demo/02/ ソースコードは以下です。 https://github.com/nakamura196/tei_visualize_demo/blob/main/docs/02/index.html 「TEIを用いた『渋沢栄一伝記資料』テキストデータの再構築と活用」のデータを利用しています。 ライブラリの追加 以下を追記します。 < < < l l s i r h i r h c n e r n e r r k l e k l e i = f = f p " = " = t s " s " t h t h s y t y t r l t l t c e p e p = s s s s " h : h : h e / e / t e / e / t t l t l p " e " e s a a : f f / l l / e e l t t e . . a g g f i i l t t e h h t u u . b b g . . i i i t o o h / / u L L b e e . a a i f f o l l / e e L t t e . . a m m f a a l r r e k k t e e . r r m c c a l l r u u k s s e t t r e e c r r l / / u d d s i i t s s e t t r / / / M M d a a i r r s k k t e e / r r l C C e l l a u u f s s l t t e e e t r r . . . m c D a s e r s f k " a e u r l c t l . u c s s t s e " r - s r c . j s " > < / s c r i p t > L.markerClusterGroupの利用 markersを作成して、個々のmarkerをaddLayerメソッドを使って追加します。最後に、mapにaddLayerメソッドを使って、markersを追加します。 ...

2024年4月12日 · 4 分 · Nakamura

デジタル源氏物語における校異源氏物語と現代語訳の対応づけ

概要 「デジタル源氏物語」は『源氏物語』に関する様々な関連データを収集・作成し、それらを結びつけることで、『源氏物語』研究はもちろん、古典籍を利用した教育・研究活動の一助となる環境の提案を目指したサイトです。 https://genji.dl.itc.u-tokyo.ac.jp/ 本サイトが提供する機能の一つとして、「校異源氏物語と現代語訳の対応づけ」があります。以下のように、「校異源氏物語」と青空文庫で公開されている与謝野晶子訳の対応箇所がハイライト表示されます。 この記事では、上記の機能を実現するための手順について説明します。 データ 以下のようなデータを作成します。 https://genji.dl.itc.u-tokyo.ac.jp/data/tei/koui/54.xml 「校異源氏物語」のテキストデータに対して、anchorタグを使って、与謝野晶子訳のファイルとIDのペアを対応付ます。 < t e < x b t o < > d p y > < < < < < > l p l s / l b b b e < や < 又 s b / / g a ま a の e > f > n に n 日 g a c c お c は > c o h は h よ s r o し o か = r r て r は " e れ に # s c い c z p o せ o o = r さ r n " r せ r e h e 給 e _ t s や s 2 t p う p 0 p = に = 5 s " 経 " 5 : h 仏 h " / t な t / t と t n w p く p = 3 s や s " i : う : 2 d せ / 0 . さ / 5 g せ g 5 r e 給 e " g n n / / j j > k i i o . . u d d i l l g . . e i i n t t j c c i . . m u u o - - n t t o o o g k k a y y t o o a . . r a a i c c / . . a j j p p p i / a a i p p t i i e / / m i i s t t / e e 2 m m 0 s s 5 / / 5 t t - e e 0 i i 1 / . y y j o o s s s o a a n n n " o o > / / 5 5 6 6 . . x x m m l l # # Y Y G G 5 5 6 6 0 0 0 0 0 0 0 0 0 0 3 4 0 0 0 0 " " / / > > このデータの作成にあたっては、以下のツールを開発して使用しました。 ...

2024年1月7日 · 14 分 · Nakamura

Oxygen XML Editorのイメージマップエディタの使用例

概要 Oxygen XML Editorのイメージマップエディタの使用方法に関する説明です。 動画 https://youtu.be/9dZQ1v0Rky0?si=8EhAZdVsLqgPz2Rf 使用方法 以下のようなTEI/XMLファイルを用意します。<graphic>のurlの値は、当該ファイルからの相対パスや、PC上の絶対パス、およびインターネット上で公開されているURLを指定します。 以下の例では、TEI/XMLファイルと同じフォルダに格納されているdigidepo_3437686_pn_null_9c48d89b-e2ec-4593-8d00-6fbc1d29d1bd.jpgというファイルを参照しています。 < < < ? ? T / x x E < < T m m I t / f / E l l e < t a < f I - x i f / e c s / a > v m m H i < < < f i s u < s c e o l e l t / p / s / i H i r g u s r d n a e i < t u < p o < s l e m f r r i s e s d D t t i b a u u a o e a i a a f m i l = e e l i t l b b r b u D d l c p a i o " r s e t l i / l c / r e e e e h c l n h h > c S l e c > i e > c s r > > i e e = r t > t e S a c D e c > c > > " e t m > t t a e D > 1 f p t S m i t s e u . = : > a t o i c s r 0 " / m > n o > c l " h / p S n > = t w l t S " ? t w e m t d > p w < t m i : . / > t g t t > i / e i d w i t e w - l p w c e o . . > _ t o 3 e r 4 i g 3 - / 7 c n 6 . s 8 o / 6 r 1 _ g . p 0 n r " _ e > n l u e l a l s _ e 9 / c x 4 m 8 l d / 8 t 9 e b i - / e c 2 u e s c t - o 4 m 5 / 9 s 3 c - h 8 e d m 0 a 0 / - r 6 e f l b a c x 1 n d g 2 / 9 t d e 1 i b _ d a . l j l p . g r " n / g > " t y p e = " a p p l i c a t i o n / x m l " s c h e m a 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 " ? > 画面下部の「作者」というボタンをクリックすると、以下のように「イメージマップエディタ」が表示されます。上記の動画を参考に、アノテーションを付与します。 ...

2023年12月12日 · 6 分 · Nakamura

Nuxt3でXMLをフォーマットしてシンタックスハイライト表示する

概要 以下の画像にあるように、Nuxt3を使ってXML形式のテキストデータを表示する機会がありましたので、その備忘録です。 インストール 以下の2つのライブラリを使用しました。 n n p p m m i i x h m i l g - h f l o i r g m h a t t . t j e s r 使い方 Nuxt3のコンポーネントとして、以下のようなファイルを作成しました。xml-formatterでXML形式の文字列をフォーマットし、さらにhighlight.jsを使ってシンタックスハイライトを行っています。 < i i i i } c } c o } c } < < p } s m m m n o ) o n ) o ; / t / s r / c p p p t x n x ; n M f ; n r } s e < t t e w w w w w s r o o o e m s m s o s e ) c m p e y h h h h o t i r r r r l t l t u r t t i f ; r p r m l { i i i i r y p t t t f : : n ` ` そ m u n i i l e p e 以 t t t t d l t a p f t h f う a f r d l p a l > 下 e e e e - e h " f c s r " o e i o で t o n e t t t c a の - - - - w > s l h o e t o " r d g r な t r n e > e l t ス s s s s r e j i r r p , m ( h m い e m f t r > a e タ p p p p a t s g m P i s a ( l a 場 d a o a : s > イ a a a a p u h a r n t ) i t 合 X t r t s ル c c c c : p f l t o g = t g t は M X m i ( = は e e e e r i t p ; e = h e 、 L M a o n " 適 : : : : b l o g e T w d > t d 適 . L t n o p 切 r a m h r y i X A X 切 v t : d a で p - - e n t p t M { u M な a = e e - 、 r m p a g " . f e h L t L 非 l r " ) 4 p e o r - k = h j r D o ` 同 u ( ( " r - z e p - " i s { e = ` 期 e x x = e w - - r w t g m f を 処 m m " > 要 r p w e o s h s a r 関 直 理 = l l , - 素 a r r - r " l t " u e 数 接 を s s n h 内 p e a w d > i y x l f が ア 行 h t t o t の ; - p r ; g l m t < 非 ッ っ l r r d m テ w ; a h e l s s 同 プ て j i i e l キ r p t s - ( t 期 デ く s n n . = ス a ; . / f d r で ー だ . g g t " ト p j x o e i な ト さ h : , y f の C ; I s c r f n い で い i p o 折 S O n " o m i g 場 き 。 g s { e r り S p t ; d a n > 合 ま h t m 返 e O e e t e ( は す l r ! a し 3 r p r . t P " 、 。 i i = t を M a e n c e r " g n = t 制 r e s r o ) h g e 御 z 4 a t s " p ; t ) " d し i - " ; s A C X て l 6 7 E ; < u = o M い l x P t > m L ま a p r o m " す , l o ( { e > 。 o p f n < 1 r T o t / 9 e y r " p 9 r p m , r 9 e a e 年 5 > t > か . ( X ら 5 ) M 2 + , L 0 ( 0 { p 2 r 年 o ま p で s に . 対 x 応 m l ) ) . v a l u e ; まとめ TEI/XMLデータの可視化などにおいて、参考になりましたら幸いです。 ...

2023年11月6日 · 5 分 · Nakamura

Mirador3プラグイン開発: Text Overlay pluginで縦書き対応を行う

概要 Text Overlay plugin for Mirador 3は、OCRまたはトランスクリプションに基づいて選択可能なテキストオーバーレイを表示するMirador3のプラグインです。 https://github.com/dbmdz/mirador-textoverlay 以下でデモページが公開されています。 https://mirador-textoverlay.netlify.app/ 一方、日本語などの縦書きテキストを表示してみると、以下のようにうまく表示ができませんでした。 そこで、上記のリポジトリをフォークして、縦書きテキストも表示できるようにしました。以下のリポジトリでソースコードを公開しています。(いずれプルリクエストも検討したいと思います。) https://github.com/nakamura196/mirador-textoverlay 結果、以下のように縦書きテキストも表示できるようになりました。 デモページは以下です。 https://nakamura196.github.io/mirador-integration-textoverlay/?manifest=https://nakamura196.github.io/static/iiif/6722fa34-2fff-11ee-a029-0242ac1c000c/manifest_o.json&annotationState=1&canvasIndex=3 以下、本モジュール開発に関連する事項をメモします。 マニフェストファイルの構造 本モジュールでは、以下の要件を満たすIIIFマニフェストが必要とのことでした。 https://github.com/dbmdz/mirador-textoverlay#requirements-for-supported-iiif-manifests いくつかのオプションがありますが、以下のwellcome collectionのマニフェストを参考にしました。 https://iiif.wellcomecollection.org/presentation/v2/b18035723 Canvas毎にseeAlsoでALTO XMLファイルへのURLが指定されています。 { } { } { } { } { } " " " " " " } " " " " , , , } " } " " " @ @ f h w s ] " ] " @ @ l t " " " " " " " " , s , h w i i t o e i e " " " " " " , o , w i t a h " " " w h w h w h w h } e " " " " e i m { d y r i d r @ @ p p w h } t { } i d y b u @ @ s i e i e i e i e e @ p f l i d a " p m g t v c i r r i e h t " p e m i t e " " " " " " " d i d i d i d i ] A i r o a g t g " " " " : e a h h i o d o o d i } " e " " " h : e l b d y r @ @ p p w h s t g t g t g t g l d o r b h h e @ @ m r " t t " c n " f t t g , o r @ @ l i " " n " p v c i r r i e i h h h h h h h h s " f m e t " s i t o e " : " " : e t : i o h h n C i t a n " : : a : e i o d o o d i z " t " t " t " t o : i a l " : " d y t s h : : " e l c " t " o d y b " h i " c n " f t t g e : " : " : " : " " l t " : : " p i o t " 7 : x " e o : " : n " p e : t " " l " : e t : i o h h s : : : : : " e " : 2 : e v u t d " 1 3 t h " l : t : e l t s - " h " e l c " t " 7 1 2 7 h " : 3 4 [ " a r p c i 0 2 { " t : " 2 " e " " " p c " : t " : x " e o : " : 2 1 4 2 8 4 3 1 { t : " 3 1 " : t c s t m 2 , : t : 4 3 h n " : : " s : , t d t h " l : , 0 3 0 6 0 2 0 t " M 7 1 h i e : y a 4 p " 1 3 t t h : C { p c { " t : " 7 [ 0 , 0 , 0 , 2 p " t E 2 , t " o " / p g , " s h " 1 7 t " t " " / a s t : t : 3 1 4 s h e T , t o n : / e e h : t h , 2 p : t s T / n : y p " 2 0 : t x S p a " i s / t / t t s p c e i v / p " s h " , 2 / t t - s : : { i : j t / p t : [ s : x i a / e h : t h 4 / p / A : A i I p p i : p / : A t i s i s t / t t , a : x L / n " f m e : i / : / / n f " i : t / p t p / m T / n s . a g / i / / i / n o . , i I p i : p i l O i o c w g " / f i / i i o f w f m : i / : . w " i t : e e , i . i i i i t e . a / i / / w w , X i a p l " i w i i f i a p l w g / f i / e w M f t a l , i e f i . f t a l e e i . i i l . L . i i c f l . f w . i g c l " i w i i l l " w o n o . l i . e w o e o l , i e f i c o e n t m i c o i l e n m c f l . f o c l " i e o / o l l L e o . l i . m . l , n c m a / c l i - c m i c o i e g c g o a e p a o c s " o e o / o c o o " l p c i p m o t l c m a / o v m , l i / i e m " l o a e p a l / e e l i / c e , e l p c i p l s c c i l m i o c c l i / i e t o t m e a m l o t e l i / c a l i a c g a l l i c i l m i t n l o g t e g e l o t m e a m i d e n e i e c e n i a c g a o a c . / 2 " t c . o g t e g n r t o 2 n , i t o n e i e . d i r / . l o i r . / 2 " o s o g c o e n o g o 2 n , r / n / o r v . n / r / . l g a . i n g e o . p g c o e / l o m t / l r o r / o r v t t r a e i 1 g r e t n g e e o g g x m . / g s h t / l x / / e t a j p / e u e t 0 t p / . g s r a n m x h . / 3 r b j e e n t b t u j a / e 1 s n s n a s . m s l a s 8 b " e o t / j b o t l e 0 n 1 , n t i b s s n o t n 3 " 8 t a o 1 o / " / o t 5 , 0 a t n 8 n b , b . a 7 3 t i / 0 " 1 1 x t 2 5 i o b 3 , 8 8 s i 3 7 o n 1 5 0 0 d o _ 2 n s 8 7 3 3 " n 0 3 / / 0 2 5 5 , / 0 _ b v 3 3 7 7 b 0 0 1 2 5 _ 2 2 1 3 0 8 / 7 0 3 3 8 . 0 0 b 2 0 _ / 0 J 3 3 1 3 0 0 b 3 P . 5 8 / 3 0 1 5 2 J 7 0 c . 0 8 7 / P 2 3 a J 3 0 2 f 2 3 5 n P . 3 3 u " / 7 v 2 J 5 / l , c 2 a / P 7 c l a 3 s f 2 2 a / n / e u " 3 n 7 v b s l , _ v 3 a 1 / l 0 a 2 s 8 b / 0 s , e 0 1 7 0 e 1 s 3 8 2 3 s 0 / 5 0 , . / 2 b 7 3 1 J b 4 1 2 5 0 P 1 / 8 3 7 0 2 8 0 0 _ 2 / " 0 / 3 0 3 0 , 3 d 5 0 _ / 5 e 7 0 0 d 7 f 2 3 0 e 2 a 3 . 0 f 3 u _ J 3 a _ l 0 P . u 0 t 0 2 J l 0 . 0 / P t 0 j 3 l 2 . 3 p . i " j . g J n , p J " P e g P , 2 " " 2 " , , / p a i n t i n g / a n n o " , まとめ 開発したプラグインについて、xmlファイルのロードが完了しない時があるなど、引き続き改善が必要ですが、Mirador3のプラグイン開発やIIIF、OCR結果の活用にあたり、参考になりましたら幸いです。 ...

2023年8月22日 · 9 分 · Nakamura

ALTO (Analyzed Layout and Text Object) XMLについて

概要 ALTO (Analyzed Layout and Text Object) XMLについて、GPT-4に問い合わせた結果を共有します。 https://www.loc.gov/standards/alto/ 必須項目 ALTO (Analyzed Layout and Text Object) XMLは、OCR生成テキストとそのレイアウトを表現するためのXMLスキーマです。その構造は非常に柔軟で、多くの要素と属性が存在しますが、必須の要素は限られています。 最も単純な形式のALTO XMLは、以下のような階層構造を持ちます: <alto>: ルート要素です。ALTO XMLスキーマのバージョンを示す@xmlns属性と@xmlns:xsi属性を持つ必要があります。また、<Description>と<Layout>という二つの子要素を持つ必要があります。 <Description>: ファイルのメタデータを含みます。この要素自体に必須の子要素はありませんが、通常、<MeasurementUnit>, <sourceImageInformation>や<OCRProcessing>などの子要素を含むでしょう。 <Layout>: ファイルの物理的なレイアウトを表現します。これは<Page>という子要素を1つ以上含む必要があります。 <Page>: 一つのページを表現します。この要素は@IDと@WIDTHと@HEIGHTという三つの必須属性を持つべきです。また、<PrintSpace>という子要素を1つ持つことができます。 上記の要素はALTO XMLの最も基本的な構造を表現していますが、テキストの内容やそのレイアウトを詳細に表現するためには、さらに多くの要素と属性を使用することが可能です。例えば、<PrintSpace>, <TextBlock>, <TextLine>, <String>などの要素を使用することで、テキストの物理的な配置や内容を詳細に表現することができます。それぞれの要素や属性の詳細については、ALTO XMLスキーマのドキュメンテーションを参照してください。 OCRProcessing要素 OCRProcessing要素は、ALTO XML内の<Description>エレメント内で使用されます。この要素は、特定のOCRプロセスに関する情報を格納します。それは以下のサブ要素を持つことができます: ocrProcessingStep: OCR処理の各ステップを記述します。この要素は processingDateTime, processingAgency, processingSoftware, processingStepSettings, processingStepDescriptionといった属性を持つことができます。 以下に、OCRProcessingエレメントの使用例を示します: < D e < D s O e c C O s r R o C c i P c < < < < < o R r p r r p p p / p p c P i t o P r r r < < < p r r r r p i c r o o o s s s r o o P o t o e o c c c o o o o c c r c i n s c e e e f f f c e e o e o > s e s s s t t t e s s c s n i s s s s w w w s s s e s > n s i i i a a a s i i s i g i n n n r r r i n n s n n g g g e e e n g g i g I g D A S C N V g S S n > D S a g o r a e S t t g = t t e f e m r o e e S " e e n t a e s f p p t O p T c w t > i t S D e C > i y a o S o w e e p R m > r r o n a t s > 1 e A e > f > r t c " > g > S t S e i r > 2 e o w o > n i 0 n f a f g p 2 c t r t s t 3 y w e w > i - a a S o 0 N r N r e n 8 a e a e t > - m m t D 0 e C e V i e 1 < r < e n s T / e / r g c 0 p a s s s r 0 r t o i < i : o o f o / p 0 c r t n p t 0 e w < r i : s N a / o o 0 s a r s c n 0 i m e o e < n e N f s o / g < a t s f p A / m w i r g s e a n t o e o > r g h c n f e S e e c t V t s y w e e p s > a r p r i r s S o n e i e c g C o t e D r n t s a e > i s t a n i e t g n T o s g i r > m > s e t > e p < / p r o c e s s i n g S t e p D e s c r i p t i o n > ここで、processingDateTimeはOCR処理が行われた日時を表し、processingAgencyはその処理を行った機関名を表します。processingSoftwareはOCR処理に使用されたソフトウェアに関する情報を含み、processingStepSettingsとprocessingStepDescriptionはそれぞれ設定と処理手順の説明を提供します。 ...

2023年7月31日 · 3 分 · Nakamura

JPCOARスキーマ(v1)を用いたxmlファイルのバリデーションツールの試作

以前に以下の記事を執筆しました。JPCOARスキーマを用いたxmlファイルのバリデーションを試しました。 今回は、上記の記事での検証を元に、Google Colabを用いた検証ツールを作成しました。以下のURLからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/JPCOARスキーマ_v1を用いたxmlファイルのバリデーション.ipynb 公開済みのxmlファイルのURLを指定する、またはローカルファイルをアップロードすることで、対象ファイルのバリデーションを行うことができます。 JPCOARスキーマ(v1)を用いたxmlファイルの作成にあたり、参考になりましたら幸いです。

2023年4月19日 · 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

JPCOARスキーマを用いたxmlファイルのバリデーション

概要 JPCOARスキーマでは、XMLスキーマ定義を以下のリポジトリで公開してくださっています。スキーマの作成およびデータの公開を行っていただき、ありがとうございます。 https://github.com/JPCOAR/schema 本記事では、上記のスキーマを使ったxmlファイルのバリデーションを試してみたので、その備忘録です。(今回のようなバリデーションは初めてのため、不正確な用語や情報を含む可能性があります。申し訳ありません。) Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/JPCOARスキーマを用いたxmlファイルのバリデーション.ipynb 準備 リポジトリのクローン c g d i t / c c o l n o t n e e n t h / t t p s : / / g i t h u b . c o m / J P C O A R / s c h e m a . g i t ライブラリのインストール ...

2023年1月19日 · 9 分 · Nakamura

RELAX NGスキーマを操作するライブラリjingtrangを試す:rngファイルの作成編

概要 以下の記事で、jingtrangおよびrngファイルを用いたxmlファイルの検証を行いました。 このjingtrangライブラリでは、xmlファイルからrngファイルを作成できるということで、試してみます。 Google Colabのノートブックも用意しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/jingtrangを試す:作成編.ipynb rngファイルを作成する rngファイルを作成する元ファイルとして、以下を用意しました。 < r o o t > < t i t l e > a a a < / t i t l e > < / r o o t > 上記のファイルに対して、以下を実行します。 p y t r a n g b a s e . x m l b a s e . r n g 結果、以下のファイルが作成されました。 ...

2023年1月18日 · 4 分 · 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

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