DHConvalidatorにおける'ref'に関する不具合への対応

本記事は、一部AIが執筆しました。 概要 DHConvalidatorは、デジタル人文学(DH)会議の抄録を一貫したTEI(Text Encoding Initiative)テキストベースに変換するためのツールです。 https://github.com/ADHO/dhconvalidator このツールの利用において、Microsoft Word形式(DOCX)からTEI XML形式への変換処理中に以下のようなエラーが発生するケースがありました: E R R O R : n u . x o m . P a r s i n g E x c e p t i o n : c v c - c o m p l e x - t y p e . 2 . 4 . a : I n v a l i d c o n t e n t w a s f o u n d s t a r t i n g w i t h e l e m e n t ' r e f ' この原因と対処方法について共有します。 ...

2025年6月27日 · 22 分 · Nakamura

WordファイルをTEI XMLに変換する方法:TEIgarage APIの活用ガイ

この記事は、AIが作成し、一部を人が修正したものです。 はじめに デジタル人文学の世界では、文書をTEI(Text Encoding Initiative)形式で保存することが一般的になっています。TEIは学術的なテキストを構造化するための標準規格です。今回は、Microsoft Wordで作成した文書をTEI XML形式に変換する方法を、Pythonを使って解説します。 TEIgarageとは? TEIgarageは、さまざまな形式の文書をTEI XMLに変換するためのオンラインサービスです。このサービスはAPIを提供しており、プログラムから直接利用することができます。今回はこのAPIをPythonから呼び出して、Wordファイルを変換してみましょう。 必要なもの Python 3.6以上 requestsライブラリ(APIリクエスト用) インターネット接続 変換したいWordファイル(.docx形式) 手順 1. 必要なライブラリをインストールする まず、必要なライブラリをインストールしましょう。コマンドプロンプトやターミナルで以下のコマンドを実行します。 p i p i n s t a l l r e q u e s t s 2. Pythonスクリプトを作成する 次に、以下のPythonコードをword_to_tei.pyなどの名前で保存します。 i i i f d # i m m m r e f p p p o f メ o o o m イ r r r c # i o T # w # i e ン _ # w # o t e t t t i o n u E i f l 処 n o u r x o n O p t I . t 変 s 理 a 変 r 出 t y c r o z v x u p G d h 換 r e m 換 d 力 p : e e s i i e G t u A o f r 結 e # w : p e し _ フ u # c p p q p m r a _ t R c o i e 果 s i r _ た f ァ t o t r u f p t r d _ A x p l s を p z t i _ い i イ _ W n i e i o _ a o d G e e p フ o i h n W l ル f o v E n s l r d g c o E フ n s o ァ n p # f e t = o e の i r e x t t e t o e u c _ ァ ( n イ s フ z o l ( = r パ l d r c ( s c の m u U イ f = s ル e ァ i t r s " d = ス e フ t e f B x エ e m R ル i e と . イ p e e エ " フ を ァ _ p " y _ ン n e L を l { し s ル f i m i : p ラ _ ァ " 指 = イ d t エ t t ド t n 開 e " = て t を i . e f r ー _ イ d 定 ル o i ラ e o ポ _ t = い _ f 保 a メ l x m i : m ル o " を c o ー s _ イ t _ て p i r 存 t モ e m b m n " a の c o 変 x n が I t ン y t f A a l e せ u リ . l e e z t o p b t , i パ u u 換 _ 発 O e ト p y " P t e q ず s 上 Z フ r m i e s r r ( n ス m t t a 生 i e p h I h " u に _ で i ァ b p i . i e " r _ を e p o s し _ e t に , : e 展 c 展 p イ i e _ _ r n a エ e _ 指 n u _ ま x = t 送 s 開 o 開 F ル n r r x e t k ラ s " 定 t t t e し m = p 信 " f t d i を . e m n ( ー p : s / e : た l " s r i s e l 保 z e f l a " : o / s i : ( d " : b l . e 存 i n . _ m T n s a _ f o T / " e p = ( p d e p e E t s a m x { i c E / ) } o = B _ s x a ( I e e m p m e l x I t s y r w t t t / i . p l l } e % % e a t 2 t e i r h e X . s l e ( " _ 3 3 i s ( 0 e f t a i M x t e _ w ) p A A g T 0 s . h c = _ L m a . t o a a t a f E : I n ( t x l t d e r t p e r i I O a " ( o m 変 u o i d h p x a l G ( m t m s l 換 フ s c . _ , l t g e A r e e e . _ 成 ァ _ x x f i % e : R e l i m p p 功 イ c " m i o c 3 . A s i . b a a ! ル o l l u a A t G p s x e t t t が d " e t t x e E o t m r h h e 見 e # , p i m i _ n ( l , . , i つ , u o l - U s ) " j . か こ # o t n " c R e : ) o o o x り r こ u _ % . L . : s i u m ま e を 出 t p 3 o , c . n t l せ s 実 力 p a A r o p ( p ん p 際 先 u t v g f n a o u に 。 o の を t h n / i t t s t 保 " n フ 指 _ ) d e l e h . _ 存 ) s ァ 定 f : . g e n . p p さ e イ i o e s t d a a れ . ル l p - = ) i t t ま t パ e e w f ) r h h し e ス ) n e i n . ) た x に x b l a a d 。 t 変 m s e s m i " ) 更 l e s e r ) し f r ) z ( n て o v i o a く r i p u m だ m c _ t e さ a e r p ( い t / e u o s C f t u - o : _ t o n p p f v a u f e t t i r h _ c s ) p e i ) a d o t o n h c s ) u / , m { e i m n n e t p m . u b w t e o _ r r d ) d o p c r u o m c e e n s t s _ i t n y g p m e l } . / d { o o c u u t m p e u n t t _ " d o c u m e n t _ t y p e } / " 3. スクリプトを実行する スクリプト内のword_file変数を、変換したいWordファイルの実際のパスに変更します。同様に、output_file変数も希望の出力先に変更してください。 ...

2025年3月3日 · 7 分 · 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

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

python-docxを用いたMicrosoft Wordファイルの作成:テンプレート、int2kanjiの利用など

概要 以下のように表形式で管理している情報を、Microsoft Wordの縦書きフォーマットに変換する機会がありましたので、その備忘録です。 変換前 研究課題名 課題番号 直接経費 持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発 21K18014 2600000 変換後 指定されたテンプレートの利用や、「数字 <-> 漢数字 の相互変換ライブラリ 「Kanjize」」を利用しています。 python-docxを用いたMicrosoft Wordファイルの作成 まず、以下のようなMicrosoft Wordのテンプレートファイルを作成します。指定されたレイアウトを使用しつつ、値を変更したい部分に{<変数名>}を指定します。 そして、上記のテンプレートで使用した変数名に対応したjsonファイルなどを作成します。 { } " " " " " " " " d i p p p p r r i n e e r r e e r d r r i o s s e i i i n j e e c r o o c e a a t e d d i c r r _ c _ _ p t c c c t e s a _ h h o _ n t l n _ _ s c d a _ u c t t o " r i m a i " s : t n b t t : t " v e e l " " : e r g e " : 二 s " o " 二 〇 " t : r : 百 " 二 二 i y 六 七 三 〇 g " " " 十 十 " 二 a 二 : 持 万 八 , 一 t 一 続 " 万 " o K " 性 , " , r 一 若 と , " 八 手 利 : 〇 研 活 一 究 用 " 四 " 性 中 " , を 村 , 考 慮 覚 し " た , デ ジ タ ル ア ー カ イ ブ シ ス テ ム 構 築 手 法 の 開 発 " そして、以下のようなpythonスクリプトを実行することにより、指定されたフォーマットに基づくMicrosoft Wordファイルを作成することができます。 ...

2022年5月31日 · 4 分 · Nakamura