Odeuropaに関連するツールを試す

概要 Odeuropaに関連するツールを試す機会がありましたので、備忘録です。 Odeuropaとは 以下のページに説明があります。 https://odeuropa.eu/ 以下、機械翻訳の結果です。 Odeuropa(オドゥーロパ)は、ヨーロッパの「匂いの文化遺産」を研究するEU資金による革新的なプロジェクトです。 プロジェクトの目的: 1600年から1920年までのヨーロッパの歴史において、匂いが文化にどのような役割を果たしてきたかを調査・記録することです。最新のAI技術を使って、約4万3千点の画像と16万7千点の歴史的テキスト(英語、イタリア語、フランス語、オランダ語、ドイツ語、スロベニア語)から匂いに関する情報を抽出しています。 主な成果物: 匂い探索エンジン - 300年以上のヨーロッパの匂いの歴史を検索できるユニークなウェブサイト 匂いの歴史・遺産百科事典 - 専門家が執筆した匂いに関する文化的現象のオンライン参考書 嗅覚ストーリーテリング・ツールキット - 博物館や文化遺産機関が匂いを展示に活用するための実践ガイド 遺産匂いライブラリー - 歴史的に重要な匂いを調香師と協力して再現し、保存するコレクション このプロジェクトは、従来の視覚や聴覚中心の文化遺産の理解に、「嗅覚」という新しい次元を加えることで、より豊かで多感覚的な歴史体験を可能にしています。 ツール 以下のページで、関連する幾つかのツールが紹介されています。 https://odeuropa.eu/nosebooks/ Live Image Processing Demo 国立国会図書館の「近代日本人の肖像」で公開されている以下の画像を利用しました。 https://www.ndl.go.jp/portrait/datas/224 以下にアクセスし、画像のURLを指定します。 https://huggingface.co/spaces/mathiaszinnen/odeuropa-demo https://www.ndl.go.jp/portrait/img/portrait/0224_6.jpg 「Confidence Threshold」を0.2に設定した結果は以下です。手に持っているタバコを認識できているようでした。 Smells Extraction テキストから匂いを抽出するツールのようです。 https://smell-extractor.tools.eurecom.fr/ 匂いに関する記述を含む英語のサンプルテキストをAIに作成してもらいました。 A T s h i I s w m a o l r k n e i d n g p a s s t t a r t t h e e d b d a i k f e f r e y r , e n t t h l e y w t a h r o m u g a h r . o m T a h e o f r i f c r h e , s h n l u y t t b y a k a e r d o m b a r e o a f d f a r n e d s h c l i y n n g a r m o o u n n d r o c l o l f s f e w e a f b t e e a d n s t h p r e o r u m g e h a t t e h d e t a h i e r , k i m t a c k h i e n n g , m i y t s m o b u i t t h t e w r a - t s e w r e e i t n s s t c a e n n t t l y p . r o L m a i t s e i r n g t h t a h t e a p f e t r e f r e n c o t o n s , t a w r h t e n t o I m s y t e d p a p y e . d I o t u t w s a i s d e s u a c f h t e a r c t o h n e t r s a u s m t m e t r o s y t e o s r t m e , r d t a h y e e p v e e t n r i i n c g h o w r h e f n i l I l e h d a d m y w a n n o d s e t r r e i d l s t h - r o t u h g a h t t d h i e s t g i a n r c d t e i n v , e w e h a e r r t e h y t h s e c e h n e t a d o y f p r e a r i f n u m o e n o d f r y j a s s o m i i l n e m i b x l i o n s g s o w m i s t h h u t n h g e h s e w a e v e y t i f n r a t g h r e a n a c i e r , o f i n w t e e t r m g i r n a g s l s i . n g I t w i r t e h m i t n h d e e d s h m a e r p o , f g m r y e e v n i s s i m t e l t l o o t f h e f r o e l s d h l l y i b c r u a t r y g r l a a s s s t a w n e d e k t , h e w h s e u r b e t l t e h e s w m e u e s t t n y e s s s m e o l f l r o o f s e a s g . e d N o p t a h p i e n r g a c n o d u l l d e a h t a h v e e r - p b r o e u p n a d r e b d o o m k e s f h o a r d t g o r d e a e y t ' e s d t m r e i p a s t o I t e h n e t e s r e e a d f , o o a d c c m o a m r p k a e n t i , e d h o b w y e v h e i r n , t s w h o e f r e v a t n h i e l l p a u n a g n e d n t a l o m d o o n r d o f f r o f m i s t h h e a n d d e c b o r m i p n o e s i a n s g s a l u i l g t n e i d n m i y n s t e h n e s e y s e l a l s o w I i n n g a v p i a g g a e t s e . d t h r o u g h t h e c r o w d e d s t a l l s , t h e s a l t y t a n g o f t h e o c e a n m i x i n g w i t h t h e m e t a l l i c s c e n t o f i c e a n d s e a f o o d . これを登録した結果が以下です。匂いに関する「Location」「Quality」「Smell Word」などが検出されていました。 ...

2025年7月24日 · 17 分 · Nakamura

「れきちず x Next.js」にルートの登録機能を追加しました。

概要 「れきちず x Next.js」はれきちずとNext.jsで作成されたウェブアプリケーションです。 このウェブアプリケーションに、ルートの登録機能を追加しましたので、紹介します。 機能紹介 トップページにアクセスし、「マイルートを管理」ボタンをクリックします。 以下のように、ログインが求められますので、画面右上の「ログイン」ボタンからログインします。 ログイン後、以下のような一覧画面が表示されます。 「ルートをインポート」ボタンを押すと以下のダイアログが表示されます。 「サンプルデータをダウンロード」ボタンを押すと、以下のようなGeoJSON形式のサンプルデータがダウンロードされます。 { } " " " " ] t n d f y a e e { } { } p m s a , e e c t " " " } " } " " " } " } " " r u t i p , g t i p , g : : i r y d r " " " e " " ] y d r " " " e " " ] p e p " o t w t o t c p " o t w t o t c " " t s e : p e h y m y o 1 3 e : p e h y m y o 1 3 F 東 i " " e x e p e p o 3 5 " e x e p e p o 3 5 e 京 o : : " r t r e t e r 9 . : " r t r e t e r 9 . a 観 n t t " e " r " d . 6 i t " e " r " d . 6 t 光 " [ " o i : " : y : i 7 8 " m i : " : y : i 7 8 u サ : F k e : " n 6 0 F p e : " n 5 5 r ン e y s " " : " a 7 9 e e s " " : " a 2 2 e プ " a o " 東 " p P t 3 5 a r " 皇 " p P t 8 C ル 東 t - : 京 東 o { o e 0 9 t i : 居 日 o { o e , o ル 京 u s 駅 京 i i s 6 1 u a " 本 i i s l ー 駅 r t { " 都 n n " 8 r l { , の n n " l ト か e a , 千 t t : , e - 天 t t : e " ら " t 代 " " " p 皇 " " c , 皇 , i 田 , [ , a 及 , [ t 居 o 区 l び i へ n 丸 a 皇 o の " の c 族 n 観 , 内 e の " 光 一 " 居 , ル 丁 , 所 ー 目 " ト に , の あ サ る ン 、 プ 東 ル 日 で 本 す 旅 " 客 , 鉄 道 ・ 東 海 旅 客 鉄 道 ・ 東 京 地 下 鉄 の 駅 " , このファイルをアップロードすると、以下のような編集画面が表示されます。 ...

2025年7月23日 · 3 分 · Nakamura

DToC: Dynamic Table of Contextsを試す

概要 DToC: Dynamic Table of Contextsを試す機会がありましたので、備忘録です。 https://www.leaf-vre.org/docs/features/dtoc 機械翻訳の結果は以下です。 セマンティックマークアップの威力と書籍のナビゲーション機能を融合させ、電子読書に革新をもたらします。従来の印刷書籍で長年親しまれてきた目次とキーワード索引という概観機能が、全文検索やタグベースのインデックス機能と動的に統合されることで、新たな読書体験を実現します。 最終的に、以下のような可視化を行うことができました。 https://dtoc.leaf-vre.org/view?document=https://dtoc-demo.vercel.app/P-III-b-1189/dtoc.json 対象データ 東洋文庫が所蔵するモリソンパンフレット「Marco Polo’s adventures : The greatest traveller the world has seen.」をサンプルデータとして利用しました。 https://www.toyo-bunko.org/open/show_detail_open.php?targetid=363479 https://www.toyo-bunko.org/morisonp2015/morisonpocr2016_showimg.php?tgfn=P-III-b-1189&tgfn2=01Geo01 背景 以下のワークショップに参加し、DToCの使用方法を教えてもらいました。 https://github.com/LEAF-VRE/dh2025_workshop 以下のチュートリアルも参考になりました。 https://www.leaf-vre.org/docs/training/tutorials/dtoc-tutorial mainとなるxmlを作成する まず、mainとなるxmlを作成します。以下のURLで確認できます。 https://dtoc-demo.vercel.app/P-III-b-1189/main.xml OCR Azure AI Document Intelligenceを用いてOCRを行いました。 https://azure.microsoft.com/en-us/products/ai-services/ai-document-intelligence 校正 & タグづけ OCR結果の校正と、人名や地名のタグ付与にあたり、「Google: Gemini 2.5 Pro」を使用しました。 https://deepmind.google/models/gemini/pro/ このように機械的な処理のため、誤りなどが含まれている可能性が高いですが、DToCで使用するためのTEI/XMLファイルを用意することができました。 index用のxmlを作成する 以下を参考にしました。 https://www.leaf-vre.org/docs/training/tutorials/dtoc-tutorial#step-2-create-an-index このindex作成にも「Google: Gemini 2.5 Pro」を使用し、先に作成したmain.xmlから機械的に作成しました。結果は以下です。 https://dtoc-demo.vercel.app/P-III-b-1189/index.xml JSONファイルを作成する DToCでロードするためのJSONファイルを作成します。この部分はGUIから行うことができました。最終的な結果は以下です。 https://dtoc-demo.vercel.app/P-III-b-1189/dtoc.json まず、以下にアクセスし、GitHubアカウントでログインします。 https://dtoc.leaf-vre.org/ 次に以下にアクセスします。 https://dtoc.leaf-vre.org/view そして、チュートリアル資料などを参考に、必要な項目を入力します。 Documentsには、前のプロセスで作成したXMLファイルのURLを入力します。 Corpus Partsでは、XMLファイルのどの部分を使用するか、を指定します。Curpus Partではmain.xmlのdivタグを、Curpus Indexではindex.xmlのdivタグをXPathで指定しました。 ...

2025年7月16日 · 3 分 · Nakamura

Ontotext GraphDBのデスクトップ版を使用した際の空きディスク容量不足への対処

概要 Ontotext GraphDBのデスクトップ版を使用した際、 https://www.ontotext.com/products/graphdb/ 空きディスク容量不足により、データのインポートなどができないことがありました。 File not loaded; Insufficient disk space to start a transaction for repository ‘xxx’ due to: The repository ‘abc’ is critically low on free disk space with 4.6% (xxx GB) free left 本記事では、この問題への一時的な対処方法の一例を紹介します。 マニュアル 以下に記載がありました。 https://graphdb.ontotext.com/documentation/11.0/low-disk-space-health-checks.html Claudeによる回答は以下でした。 GraphDB 11.0では新しいヘルスチェック機構が追加されており、これが従来の設定を上書きしています: Fatal状態: 5%または1GB以下で発動 現在の状況: 4.6%なのでFatal状態 結果: 新しいトランザクションが完全に阻止される 対応 以下のようなgraphdb.propertiesを新規に作成して、ヘルスチェック機構を無効化するオプションを追加しました。 # g g r r G a a r p p a h h p d d h b b D . . B h h e e 1 a a 1 l l . t t 0 h h . . の m m 新 i i し n n い i i ヘ m m ル a a ス l l チ . . ェ f f ッ r r ク e e 機 e e 構 . . を s s 無 t t 効 o o 化 r r a a g g e e . . e a n s a y b n l c e C d h = e f c a k l = s f e a l s e そして、GraphDBを再起動します。結果、System Informationに設定が反映され、冒頭のエラーが解消しました。 ...

2025年7月16日 · 1 分 · Nakamura

AllegroGraphを使ってみる

概要 AllegroGraphを使ってみる機会がありましたので、備忘録です。 https://allegrograph.com/ 使い方 いくつかのセットアップ方法があるようですが、以下のクラウド版を利用してみます。 https://allegrograph.cloud/ セットアップ後、以下のように表示されます。 ログイン後、複数のRepositoriesが表示されます。 匿名アクセスを可能にする 例えば、リポジトリ「actors」のSPARQLエンドポイントは以下です。 https://ag1edt2www58hzzy.allegrograph.cloud/repositories/actors/sparql デフォルトでは、Basic認証がかかります。 そこで、anonymousユーザを作成します。ユーザ名を「anonymous」にすることで、パスワードの入力をスキップできました。 公式の説明は以下に記載があります。 https://franz.com/agraph/support/documentation/managing-users.html#anonymous-access そして、「actors」リポジトリへのREADを許可します。 この設定により、指定したリポジトリへ認証なしでアクセスできるようになります。以下は、yasguiでアクセスした例です。 https://yasgui.org/#query=PREFIX+rdf%3A+<http%3A%2F%2Fwww.w3.org%2F1999%2F02%2F22-rdf-syntax-ns%23> PREFIX+rdfs%3A+<http%3A%2F%2Fwww.w3.org%2F2000%2F01%2Frdf-schema%23> SELECT+*+WHERE+{ ++%3Fsub+%3Fpred+%3Fobj+. }+ LIMIT+10&contentTypeConstruct=text%2Fturtle&contentTypeSelect=application%2Fsparql-results%2Bjson&endpoint=https%3A%2F%2Fag1edt2www58hzzy.allegrograph.cloud%2Frepositories%2Factors%2Fsparql&requestMethod=POST&tabTitle=Query&headers={}&outputFormat=table リポジトリを追加してみる 「my_first_repository」というリポジトリを追加しました。RDFファイルを登録してみます。 校異源氏物語テキストDBで使用している以下のRDFファイルを登録してみます。 https://github.com/kouigenjimonogatari/kouigenjimonogatari.github.io/blob/master/files/rdf/item_sets.rdf 登録時に、Graph URIを任意項目として登録することができます。入力例にしたがって、以下のように入力しました。 エクスポートする 「Repository Control」の「Archiving」からエクスポートできます。 「N-Quads」を選択して、エクスポートした結果が以下です。トリプルに加えて、先ほど登録したGraph URIが出力されていることが確認できます。 < < < < h h h h t t t t t t t t p p p p s s s s : : : : / / w w w w 3 3 3 3 i i i i d d d d . . . . o o o o r r r r g g g g / / / / k k k k o o o o u u u u i i i i g g g g e e e e n n n n j j j j i i i i m m m m o o o o n n n n o o o o g g g g a a a a t t t t a a a a r r r r i i i i / / / / a a a a p p p p i i i i / / / / i i i i t t t t e e e e m m m m _ _ _ _ s s s s e e e e t t t t s s s s / / / / 3 3 3 3 1 1 1 1 . . . . j j j j s s s s o o o o n n n n > > > > < < < < h h h h t t t t t t t t p p p p : : s : / : / w p w w u w w w r 3 w . l i . w . d w 3 o . 3 . r o . o g r o r / g r g d / g / c k 1 / 2 9 t u 0 9 e i 0 9 r g 0 / m e / 0 s n 0 2 j 1 r i / 2 e m r 2 l o d - a n f r t o - d i g s f o a c - n t h s > a e y r m n < i a t h / # a t a l x t p a - p i b n s / e s : p l # / r > t / o y w p " p 3 e ま e i r き > d t は . y し < o / ら h r v " t g t l < p k > h s o t : u " t / i 3 p / g 1 : j e " / p n / s j e e i < x a m h a r o t m c n t p h o p l . g : e g a / . o t o . a w r j r w g p i w > / / . t t w e e 3 r i . m o 3 r t 1 g y . / p x 2 e m 0 / l 0 作 > 1 品 / > < X h M < t L h t S t p c t : h p / e : m e a / x # e a i x m n a p t m l e p e g l . e e o r . r > o g r > < g h > t t p : / / e x a m p l e . o r g > SHACL Shapesを管理する Generate SHACL Shapesボタンを押すと、SHACLファイルが作成されます。 ...

2025年7月16日 · 10 分 · Nakamura

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

校異源氏物語テキストDBに対する検索を行うMCPサーバの構築

概要 校異源氏物語テキストDBに対する検索を行うMCPサーバの構築を行ったので、備忘録です。 一例として、Claude Desktopから以下のように使用することができます。 https://youtu.be/8s2R9V2hEvc?si=p9SW-IvhdNSzwTLN 背景 以下の記事で、校異源氏物語テキストDBに対する検索を行うAPIサーバの構築について紹介しました。 この応用として、MCPサーバを構築することで、AIエージェントとのやりとりを試してみます。 単純なものですが、GitHubのリポジトリは以下です。 https://github.com/nakamura196/genji-mcp-server 開発にあたっては、先述したAPIサーバで提供するOpenAPIの仕様をClaude Codeに渡すことで、テンプレートから効率機に開発してくれました。 なおswagger.jsonには、以下でアクセスいただけます。 https://genji-api.aws.ldas.jp/swagger.json 使い方 npmパッケージを以下で公開しています。 https://www.npmjs.com/package/@nakamura196/genji-mcp-server そこで、以下のような設定ファイルを作成して、Claude Desktopを再起動します。 { } " } m c " } p g S e " " e n c a r j o r v i m g e " m s r : a " s n : " { d : " [ : " { - " y n " p , x " " , @ n a k a m u r a 1 9 6 / g e n j i - m c p - s e r v e r " ] 利用例 「夕顔が含まれる巻は?」などと入力すると、以下のように外部連携を使用するための許可が求められます。許可すると、問い合わせ結果に基づき、AIが回答を作成してくれます。 ...

2025年6月26日 · 1 分 · Nakamura

校異源氏物語テキストDBに対する検索を行うAPIサーバの構築

概要 校異源氏物語テキストDBに対する検索を行うAPIサーバの構築したので、備忘録です。 https://genji-api.aws.ldas.jp/ 背景 以下のページで、『校異源氏物語』のテキストデータをTEI/XMLに準拠した形で公開しています。 https://kouigenjimonogatari.github.io/ このテキストデータをElasticsearchに登録し、コマごとの検索を可能にするAPIを作成します。 使い方 以下のURLで、OpenAPIおよびSwaggerを用いた使い方の説明ページにアクセスできます。 https://genji-api.aws.ldas.jp/ 工夫点 検索語の展開 例えば以下のURLは、「夕顔」を検索キーワードとした例です。JSON:APIに準拠した入出力形式としています。 https://genji-api.aws.ldas.jp/search?q=夕顔&page[limit]=20&page[offset]=0&sort=page&filter[expandRepeatMarks]=true&filter[unifyKanjiKana]=true&filter[unifyHistoricalKana]=true&filter[unifyPhoneticChanges]=true&filter[unifyDakuon]=true&filter[vol_str]=04 夕顔 この時、以下のような結果が返却されます。入力したキーワード「夕顔」に対して、バリエーションを生成し、これらに基づく検索を行います。 { } " " } d m a e " " ] " } " } " " " " " } t t q t , t , f , s l o t a a a u r " " " " " " " " " r " " " " " i " " " " " " o i f o g " } " " e a 夕 ゆ ゆ ゆ ゆ 夕 夕 ゆ ゆ a e u u u u l e u u u u v r m f t g v : : r n 顔 う ふ ふ う か か う ふ n x n n n n t x n n n n o t i s a r o " " " ] y s " か か か か お ほ 顔 顔 s p i i i i e p i i i i l " t e l e l d s b [ { " f , お お ほ ほ " " " " f a f f f f r a f f f f _ : " t " g _ o u u { } ] : o " " " " , , , o n y y y y s n y y y y s : " : a s c m c , r , , , , r d K H P D " d K H P D t " : t t _ _ k " " " m m R a i h a : R a i h a r p 2 7 i r c o e k d 夕 e O e n s o k e n s o k " a 0 0 , o " o t t e o 顔 d p p j t n u { p j t n u : g , , n : u h s y c " Q t e i o e o e i o e o e s n e " " _ , u i a K r t n a K r t n " " " { t r : : c e o t a i i " t a i i " 0 , : _ _ o r n M n c c : M n c c : 4 e d [ " u i s a a a C a a a C { r o 0 n e " r " l h t r " l h t 夕 r c 4 t s : k : K a r k : K a r 顔 o _ " " s a n u s a n u " r c 夕 : : { " t n g e " t n g e _ o 顔 : r a e : r a e , u u " 7 [ u " s u " s p n , t e : " t e : " p t r , : r , : e " u t u t r : e r t e r t _ , u r , u r b 0 e u e u o , , e , e u , , n d " : 0 , その結果、本文中に登場する「ゆふかほ」「夕かほ」「夕顔」を一度に検索することができます。 ...

2025年6月25日 · 23 分 · Nakamura

Minecraft Modでお城生成コマンドを作ってみた【Fabric 1.21 + Claude活用】

※ 本記事の大部分はAIが執筆しました。 はじめに Minecraft Modの学習を目的として、コマンド一つでお城を生成できるModを作ってみました。 開発環境 今回使用した技術スタック: Minecraft : 1.21 Modding Framework : Fabric Mod Java : 21 開発環境 : Cursor(AI統合エディタ) AI支援 : Claude 4 Sonnet 環境構築 Java 21のインストールが必要だったので、Homebrewで導入: b r e w i n s t a l l o p e n j d k @ 2 1 プロジェクトの初期化は、Fabricの公式テンプレートをクローン: g i t c l o n e h t t p s : / / g i t h u b . c o m / F a b r i c M C / f a b r i c - e x a m p l e - m o d . g i t c a s t l e - m o d C r r r r R R l e e e e e e o m m m m c s n o o o o e o i t t t t i l n e e e e v v g : : : : i i n n i E C C T g g n n o o o t u u m t o d o m n p a b e e t r l j l ' r i e e t c a n s 9 c a a t g s 3 t s s i i 0 s : t n o n : l g b g ( 1 e j d 1 0 - o e o e 0 0 m b c b l 0 % o j t j t % d e s e a ( ' c : c ( 4 . t t 3 9 0 . s 1 s 3 3 4 . : 0 : ) 0 0 , 4 9 % 1 9 0 3 0 r 3 4 0 ( 0 e 0 ) , 4 % u ) , 7 s , d ( e d 4 3 d 5 o n 7 0 8 n e ) / 1 8 e . , 3 7 . . 0 7 d ) ( 7 o , d n e K e d l i . o t B n a e | . 1 7 1 ) 0 , . 5 p 1 a c M k i - B r / e s u , s e d d o n 8 e 8 . 3 ( f r o m 3 ) その後、Cursorで開発環境を起動: ...

2025年6月16日 · 4 分 · Nakamura

デジタル文化財管理システム(試行版)のNFT対応

お知らせ: 2025-06-14 開発の経過は以下にまとめています。 https://zenn.dev/nakamura196/books/41693d2d017082 概要 以下の記事をはじめとして、ブロックチェーンを用いたデジタル文化財管理システムの試作をしています。 今回、アップロードしたデータがNFTとして認識されるように改修しました。 勉強過程のため、不完全な点があるかと思いますが、参考になりましたら幸いです。 使い方ページ ファイルのアップロード方法はこれまでと同様です。アップロード後に表示される一覧ページにおいて、詳細ページへのリンクを追加しました。 リンクをクリックすると、以下のような詳細画面に遷移します。 実装方法 ※ この章は、AIが執筆しました。 1. コントラクトのNFT対応 既存のデジタル文化財管理コントラクトを、ERC721規格に準拠したNFTコントラクトに改修しました。 主な変更点: 1. OpenZeppelinライブラリの追加 i i m m p p o o r r t t " " @ @ o o p p e e n n z z e e p p p p e e l l i i n n / / c c o o n n t t r r a a c c t t s s - - u u p p g g r r a a d d e e a a b b l l e e / / t t o o k k e e n n / / E E R R C C 7 7 2 2 1 1 / / E e R x C t 7 e 2 n 1 s U i p o g n r s a / d E e R a C b 7 l 2 e 1 . U s R o I l S " t ; o r a g e U p g r a d e a b l e . s o l " ; 2. コントラクトの継承構造を変更 ...

2025年6月12日 · 9 分 · Nakamura

NDL古典籍OCR-Liteを用いて、IIIFマニフェストファイルからTEI/XMLファイルを作成する

概要 NDL古典籍OCR-Liteを用いて、IIIFマニフェストファイルからTEI/XMLファイルを作成するGradioアプリの紹介です。 以下のURLからアクセスできます。 https://nakamura196-ndlkotenocr-lite-iiif.hf.space/ 背景 以下の記事の続きです。 これまでは、2つのアプリを使用する必要がありましたが、今回の改修により、単独のGradioアプリで変換作業が完結するようにしました。 また画像のコマ数が多いマニフェストファイルを処理する場合、進捗がわかりにくいことや、処理結果をコピーできない、といった不具合があったので、これらを修正しています。 画面の例 以下のように、「ページ 111/129 を処理中… - 79.7%」といった進捗を表示するように修正しました。 実装にあたっては、Progressを使用しています。 https://www.gradio.app/docs/gradio/progress またOCR完了後は、TEI/XMLファイルをダウンロードするためのリンクが表示されるようにしました。 まとめ Hugging Faceの無料で利用可能なCPUの制約上、OCRに時間がかかることがありますが、参考になりましたら幸いです。

2025年6月12日 · 1 分 · Nakamura

ブロックチェーンとPinata IPFSを使用したデジタル文化財管理システムの試作

お知らせ: 2025-06-14 開発の経過は以下にまとめています。 https://zenn.dev/nakamura196/books/41693d2d017082 概要 ブロックチェーンの学習にあたり、デジタル文化財の管理システムのプロトタイプを作成しました。ブロックチェーンの学習が目的のため、不足している機能などが多いですが、今後追加・改修を加えていく予定です。 https://digital-heritage-five.vercel.app/ 使用技術 EthereumのSepoliaネットワークを使用しています。ブロックチェーンの学習およびプロトタイプの開発が目的であるため、テストネットワークを使用します。 分散ファイルストレージIPFSのホスティングサービスとして、Pinataを使用しています。 https://pinata.cloud/ 準備 後述する本サイトの使用にあたり、MetaMaskのウォレットの作成や、ETHのSepoliaテストネットの作成などが必要です。また登録にあたっては、ガス代の支払いに必要なSepoliaETHが一定数必要です。 これらの方法については、別の記事で紹介したいと思いますが、インターネット上の記事を参考にしてください。 使い方 以下のURLにアクセスします。 https://digital-heritage-five.vercel.app/ MetaMaskがインストール済みの場合、以下のように表示されます。 「ウォレットを接続」ボタンを押すと、以下の画面が表示されます。 接続後、以下のような画面が表示されます。 サンプルとして、いらすとやさんの画像を利用させていただきます。 https://www.irasutoya.com/2020/12/blog-post_279.html 名前や説明、画像URLを入力して、登録ボタンを押します。 以下の画面が表示されます。確認ボタンを押します。 以下のようにデータが登録されます。 Transactionの確認 Etherscanを使って、取引の内容を確認することができます。 https://sepolia.etherscan.io/tx/0x1234567890abcdef…(例) Input Dataに入力されている文字列は、「スマートコントラクトの関数呼び出しのエンコードされたデータ」とのことです。以下の関数でデコードしてみます。 c c f } d o o u e n n n t } } c s デ s イ c r デ o t コ t ン t y c c c c c c c c c c c c コ d ー プ i o o o o o o o o o o a o ー e e ド i ッ o { n n n n n n n n n n t n ド I t す n ト n 関 s s パ s デ s パ s デ s 結 s s s s c s を n h る p デ 数 t o ラ t コ t ラ t ー t 果 o o o o h o 実 p e イ u ー d シ l メ ー メ タ を l l l l l 行 u r ン t タ e グ f e ー p ダ d ー t を d 表 e e e e ( e t s プ D を c ネ u . タ a ー e タ y デ e 示 . . . . e . ( ッ a デ o チ n l デ r を c の p コ c l l l l r e i = ト t コ d ャ c o ー a 作 o 型 e ー o o o o o r r n デ a ー e を t g タ m 成 d を s ド d g g g g o r p r ー ド I 取 i ( を s e 定 e ( ( ( ( r o u e タ = n 得 o ' 取 D r 義 = d ' ' ' ' ) r t q p n F 得 a \ N D I ( D u ' u S u ( t = [ = n a e m { ' a i 0 t i n 最 a ' D m s a デ t r x ( g c 初 n s d e e c g コ a e b i n t の = e t e c : r e ー ) ( 2 n a i 4 w r c o ' i ド ; ' f p t o バ ' i o d , p U エ e 2 u u n イ 0 e n d e t R ラ t 6 t r ト x t g e d d i L ー h 2 ) e S を ' h ' r e o : : e e i 除 e , . P c n ' ' r 4 { = g く + r d a o : , , s . n ) s ' e r d ' ' . i a i . s c a e , d e ) . n t n A t o m d e r ; ( p u p b r d e [ d c r 実 u r u i i e t 0 e o o 際 t e t C n ( e ] c d r の . : . o g t r ) o e ) 登 s ' s d ' y s ; d d ; 録 l , l e , p : e [ デ i i r e ' d 2 ー c f c ( ' s ) [ ] タ e u e ) s , ; 1 ) の ( n ( ; t ] ; 例 0 c 1 r p ) ) , t 0 i a ; ' i ) n r ; 1 o ; g a 0 n ' m ) S ] s ; i ; D g a n t a a t ) u ; r e ) ; 結果、以下のように確認することができました。 ...

2025年6月12日 · 5 分 · Nakamura

その2:NDL古典籍OCR-Liteを用いたアノテーション付きIIIFマニフェストファイルとTEI/XMLファイルの作成

概要 以下の記事で、NDL古典籍OCR-Liteを用いたアノテーション付きIIIFマニフェストファイルとTEI/XMLファイルの作成について紹介しました。 上記について、説明が不十分な点が多かったため、改めて使い方を紹介いたします。 補足 今回の記事執筆に合わせて、以下の改修を加えました。 プロセス1: IIIFマニフェストファイルの作成 IIIF Presentation API v3に対応しました。 プロセス2: TEI/XMLファイルの作成 プロセス1との接続を考慮して、文字列を入力とするフォームを追加 使い方 プロセス1: IIIFマニフェストファイルの作成 以下にアクセスします。 https://nakamura196-ndlkotenocr-lite-iiif.hf.space/ 今回は、IIIF Presentation API v3でマニフェストファイルが公開されている「東北大学総合知デジタルアーカイブ」を対象とします。以下の「源氏物語湖月抄 本居宣長自筆付箋及書入」を対象とします。 https://touda.tohoku.ac.jp/portal/item/10010030012489 IIIFマニフェストファイルのURLは以下です。 https://touda.tohoku.ac.jp/collection/iiif/0/metadata/10010030012489/manifest.json 以下のように入力します。注意点として、「Image Width」を-1に設定してください。これにより、最大ピクセルの画像をダウンロードするようになります。(デフォルト値である1200ピクセルではエラーとなります。) 結果、OCRテキストをアノテーションとして持つIIIFマニフェストファイルのJSON文字列が画面右側に表示されます。以下の赤字で示すコピーボタンを押して、文字列をコピーしておきます。 プロセス2: TEI/XMLファイルの作成 以下にアクセスします。 https://iiif-tei-monorepo-web.vercel.app/ コピーしたJSON文字列を「Paste Manifest JSON」というフォームに貼り付け、Convert to TEI XMLボタンを押します。 結果、TEIに変換され、XMLファイルをダウンロードできます。 Oxygen XML EditorのAuthorモードで表示した例が以下です。 まとめ 使いにくい点も多いかと思いますが、OCRとIIIF・TEIの応用にあたり、参考になりましたら幸いです。

2025年6月6日 · 1 分 · Nakamura

Omeka SのIIIF Serverモジュールを使用した階層構造を持つ目次の記述

概要 Omeka SのIIIF Serverモジュールを使用し、階層構造を持つ目次の記述方法について紹介します。 マニュアル やや複雑な記述になっていますが、以下に説明があります。 https://github.com/Daniel-KM/Omeka-S-module-IiifServer?tab=readme-ov-file#input-format-of-the-property-for-structures-table-of-contents 単純な目次 「Toyo Bunko Media Repository」で公開されている以下を例とします。 https://app.toyobunko-lab.jp/s/main/document/9f9d95c2-d33d-7402-742b-47db12748688 以下のように、{RangeのID},{Rangeの名前},{Canvasのインデックス}を指定します。 r r r r r r r r r r r 1 2 3 4 5 6 7 8 9 1 1 , , , , , , , , , 0 1 延 明 安 安 天 天 寛 寛 享 , , 享 和 永 永 明 明 政 政 和 文 文 、 , 一 二 一 二 一 二 , 化 化 寛 2 , , , , , , 2 一 、 延 5 5 7 1 1 1 2 5 , 文 、 5 9 1 4 7 1 5 2 政 宝 0 2 7 8 7 、 暦 9 二 , , 1 3 1 3 これにより、以下のように目次が表示されます。 ...

2025年6月5日 · 20 分 · Nakamura

MCPサーバーを使って、Omeka Sにリソース(アイテムと画像)を登録する

概要 MCPサーバーの勉強を兼ねて、Omeka Sにリソース(アイテムと画像)を登録するMCPサーバを作成しました。 https://github.com/nakamura196/omeka-s-mcp-sample 関連記事 以下の記事を参考にしています。 https://zenn.dev/himara2/articles/14eb2260c4f0e4 https://zenn.dev/meson_tech_blog/articles/simple-mcp-server 準備 MCP サーバをClaude Desktopで利用する方法については、他の記事に譲ります。以下のような設定を追加します。 { } " } m c " } p o , S m " " ] " } e e c a , e r k o r " n " " " v a m g < v O O O e " m s 絶 " M M M r : a " 対 : E E E s n : パ K K K " { d ス { A A A : " [ > _ _ _ : / A K K { o P E E " m I Y Y p e _ _ _ y k U I C t a R D R h _ L E E o s " N D n _ : T E " m I N , c " T T p < Y I _ O " A s m : L a e " m k " : p a < l O " e S M < / の E O s U K M e R A E r L _ K v > K A e / E _ r a Y K / p _ E o i I Y m " D _ e , E C k N R a T E _ I D s T E e Y N r > T v " I e , A r L . > p " y " 結果、以下のようにツールが登録されます。 ...

2025年6月5日 · 2 分 · Nakamura

DrupalのJSON:APIでcreatedやchangedに対するフィルタを適用する

概要 DrupalのJSON:APIでcreatedやchangedに対するフィルタを適用する方法の備忘録です。 背景 以下を参考にしました。 https://www.drupal.org/docs/core-modules-and-themes/core-modules/jsonapi-module/filtering 例えば、6/2以降に更新されたものだけをフィルタリングしようとした際、以下のクエリでは適切に動作しませんでした。 ?filter[a-label][condition][path]=changed&filter[a-label][condition][operator]=%3E%3D&filter[a-label][condition][value]=2025-06-02 正しい方法 以下の記事が参考になりました。 https://www.reddit.com/r/drupal/comments/1bdvu61/json_api_drupal_filter_on_date/ Note that timestamp fields (like created or changed) currently must use a timestamp for filtering: タイムスタンプフィールド(createdやchangedなど)は現在、フィルタリングにタイムスタンプを使用する必要があります。 例えば、2025/6/2のタイムスタンプ1748790000を用いて、以下のようなクエリを使用することで、正しくフィルタリングできました。 ?filter[a-label][condition][path]=changed&filter[a-label][condition][operator]=%3E%3D&filter[a-label][condition][value]=1748790000 まとめ DrupalのJSON:APIで、createdやchangedに対するフィルタを適用する際にお役に立てば幸いです。

2025年6月3日 · 1 分 · Nakamura

DTS Viewerの更新:ページネーションへの対応

概要 DTS (Distributed Text Services)ビューアについて、ページネーションへの対応を行ったので、備忘録です。 https://dts-viewer.vercel.app/ja/ 背景 DTSで多数のリソースなどを提供する際に、以下のように、viewプロパティを使って、ページネーションに関する情報を提示するようでした。 https://distributed-text-services.github.io/specifications/versions/unstable/#collection-endpoint { } " " " " " " " " " } " ] " } @ d @ @ c t t t d , m , v c t i t o o o i u e " i o s d y l t t t b m . e n V " p l a a l l " " ] b . w " " " " " " t e e e l l e i p t e . " @ @ f p n l e r : " c P C " n u i r " : i t i r e a x s t a h : C b t " d y r e x s t i " : i r i o l l { : { " p s v t t " o l o e l " r i e " : e t i " " : n e " n n d L e s " l [ " " o : : " t C " t r e " h : a " : : u " : t o : s e t : e n / s " " h r l " n t r [ g a " " " / / t " e l " : " r { " " p P / : a a t 1 s e / : e : : i a a p p p - _ c a 1 s / g p " i i s a d t p , 1 [ " d i i / / : l e i i 0 d " f t n a d d / p _ o / 0 e É r s a d p t t / h p n d 0 c " / t t i s s d a o " t 0 P o , c i s / / i " i , s , o l o o d c c s , l / i e " l n c t o o t u c l v l " o s l l r s o u N a e , l / l l i " l s a l c l c e e b , l " t u t e o c c u e , i e i c l t t t c o " o t l i i e t n n i e o o d i a : / o c n n - o l ? n t / / t n e " i / i ? ? e / L d ? o i i x { d e = i n d d t ? e t l d / = = - i s t e = ? l l s d r t l i e e e , C e t e d t t r p h s r t = t t v a a e t l r r i g r d s r e e e c e t e _ e t s s e , e d s t _ _ s n s P e _ r d d . a " o _ d e e e g v , i p e s _ _ i } l o _ _ p p t " " u i p d o o h , h s l o e i i u t " u i _ l l b t } s l p u u . p & u o s s i s p s i & & o : a & l p p / / g p u a a s / e a s g g p v = g & e e e i 1 e p = = c a 9 = a 2 5 i f " 1 g 0 0 f . , " e " 0 i o , = , " c r 1 a g 8 t / " i v , o i n a s f / / c 1 o 6 n 7 t 8 e 7 x 4 t 5 / 8 1 5 - " a ] l , p h a 1 . j s o n " , そこで、DTS Viewerについて、上記のviewプロパティに対応できるように改修しました。 ...

2025年6月2日 · 4 分 · Nakamura

IIIF Presentation API v2のIIIFコレクションで、ページネーションを使う

概要 IIIF Presentation API v2のIIIFコレクションで、ページネーションを使う機会がありましたので、備忘録です。 背景 IIIFコレクションでは、以下のように、複数のマニフェストファイル(およびコレクション)の一覧を提供することができます。 https://iiif.io/api/presentation/2.1/#collection { } " " " " " " " " ] @ @ @ l v d a m c i t a i e t a { } o d y b e s t n n " p e w c r i " " " t : e l i r i f @ @ l e " " n i b e i t a x " : : g p u s d y b t h H t t t " p e " t " " i i i s : e l : t s T n o o " " " p c o t n n : " : : " : : p " " " h h / C : : : [ t " " t / o L t s B t e l e " " " p c o p x l v t D P : : o : a e e o e r / M k / m c l p s o / a / p t " c v e n 1 i l i C , r i x i " i e o o i d a f i . n l p e m e f o " l t d p s . r , e i l t i g c o b e " o t n y . , i i o a i o o E r p i n f x g i f a / / / f C m i p c o o p i r o r l l i e l l e f s l E e / e e x c O b n c a t r o t t m i g o a i p o a k t o l n n 1 i n e " i / o / , z m n t O a a / o r t n 2 p g i i / " a o f c , n n e o i " s n z , t t a " e t , x i t o . n j " s , o n " , この時、対象とするマニフェストファイルが多数になった場合、一つのIIIFコレクションでは配信が難しくなりました。 ...

2025年6月2日 · 7 分 · Nakamura

Drupalで管理者以外のユーザーにも設定画面へのアクセスを許可する方法

本記事の一部はAIが作成しました。 概要 Drupalでカスタムモジュールの設定画面を作成する際、管理者以外のユーザーにもアクセスを許可したい場合があります。今回は、GitHub Webhookモジュールを例に、この問題の解決方法を説明します。 問題の発生 最初の状態では、以下のようなルーティング設定でした: # g i g t p d r i h a e e t u t f _ _ q _ h b h a f t u p u _ : u o i i e b w l r t r r _ e t m l e m w b / s : e m i e h a : : e s b o d n s h o m \ ' t i o k i D G s o o . n r i : n k s / u t : . e c p H r t o a u ' o t n l b a u i f \ d t n i g W m i g g i e i n s / t b n g : g h h i . i u o s y t b o t m h _ k e l u w r b e S _ b e s w h t i e o t t b o i e h k n o \ g c o F s o k o ' n ' r f m i \ g S u e r t a t t i i n o g n s ' F o r m ' この設定では、administer site configuration権限を持つ管理者のみがアクセス可能で、一般ユーザーはアクセスできませんでした。 ...

2025年5月28日 · 7 分 · Nakamura

NDL古典籍OCR-Liteを用いたアノテーション付きIIIFマニフェストファイルとTEI/XMLファイルの作成

お知らせ 本記事で紹介する流れをわかりやすくした記事を作成しました。以下も参考にしてください。 概要 NDL古典籍OCR-Liteを用いたアノテーション付きIIIFマニフェストファイルとTEI/XMLファイルの作成を行うツールを試作したので紹介します。 アノテーション付きIIIFマニフェストファイルの作成 まず、NDL古典籍OCR-Liteを用いて、IIIFマニフェストファイルを入力として、アノテーション付きIIIFマニフェストファイルを出力するGradioアプリを作成しました。Hugging FaceのSpaceを用いて公開しています。 https://nakamura196-ndlkotenocr-lite-iiif.hf.space/ 出力結果として、以下のようなアノテーション付きIIIFマニフェストファイルが得られます。 { } " " " " } " ] @ i t l , i c d y a " ] t { } { } o " p b n e , n : e e o " m " " " " " } " ] " ] " " " " " } " ] " ] t " l n 校 s i t w h l , i , a i t w h l , i , a e " : " e 異 " d y i e a " ] t { } n { } d y i e a " ] t { } n { } x h : " 源 : " p d i b n e n " p d i b n e n t t " : 氏 : e t g e o " m " " " ] o " " " ] : e t g e o " m " " " ] o " " " " t M { 物 [ " h h l n 1 s i t i t i t i " h h l n 2 s i t i t i t i : p a [ 語 " : " t " e " " d y t { } a d y t { } { } { } { } { } { } { } " : " t " e " " d y t { } a d y t s n . h : " : " : " p e t " p e , , , , , , h : " : " : " p e t " p e " : i t " : : : e m " " " " " } i : e m " " " " " } " " " " " } " " " " " } " " " " " } " " " " " } " " " " " } " " " " " } t " : : : e m " " " " " } i : e m h / f 巻 t C 6 { [ " s i t m t b o " s i t m t b i t m t b i t m t b i t m t b i t m t b i t m t b i t m t b t C 6 { [ " s i t m t b o " s t / e 一 p a 8 4 [ " : " d y o a o " " " " " " ] n " : " d y o a o " " d y o a o " " d y o a o " " d y o a o " " d y o a o " " d y o a o " " d y o a o " " p a 8 4 [ " : " d y o a o " " " " " " ] n " : " t d s " s n 9 7 h : " p t r d i t f w h s s h : " p t r d t v " p t r d t v " p t r d t v " p t r d t v " p t r d t v " p t r d t v " p t r d t v s n 9 7 h : " p t r d i t f w h s s h : p l t : 0 0 t " : e i g y d y o i e e { } " t " : e i g y y a : e i g y y a : e i g y y a : e i g y y a : e i g y y a : e i g y y a : e i g y y a : 0 0 t " : e i g y d y o i e e { } " t " : . " / a , 6 t A [ " v e " " p r d i r : t A [ " v e " p l " v e " p l " v e " p l " v e " p l " v e " p l " v e " p l " v e " p l / a , 6 t A [ " v e " " p r d i r : t A [ n , / s , p n " : a t : : e m t g v " " " p n " : a t : e u " : a t : e u " : a t : e u " : a t : e u " : a t : e u " : a t : e u " : a t : e u / s , p n " : a t : : e m t g v " " " p n ] / d d " s n h t " " a h h i i t p [ s n h t " " e h t " " e h t " " e h t " " e h t " " e h t " " e h t " " e d " s n h t " " a h h i i t p [ s n i l l , : t " i : { " : t " t c d y r : t " i : { : " t " i : { : " t " i : { : " t " i : { : " t " i : { : " t " i : { : " t " i : { : " l , : t " i : { " : t " t c d y r : i . . t t A o h " : " e " p o t t A o : t A o : t A o : t A o : t A o : t A o : t A o : . t t A o h " : " e " p o t i g n / a p n n " t " : : " : e f / a p n n " " p n n " " p n n " " p n n " " p n n " " p n n " " p n n " " n / a p n n " t " : : " : e f / a f o d d t s n " h t I 6 : " i d t s n " h T " s n " h T " s n " h T " s n " h T " s n " h T " s n " h T " s n " h T " d d t s n " h t I 6 : " i d t . . l l i : : t p m " 8 4 " : l l i : : t e 一 : : t e ○ : : t e 一 : : t e ス : : t e □ : : t e 〇 : : t e 同 l l i : : t p m " 8 4 " : l l i i j . . o t t s a i 9 7 [ h e . o t t x ・ t t x 〇 t t x 一 t t x 〇 t t x 琉 t t x 〇 t t x 校 . . o t t s a i 9 7 [ h e . o o p g n n / a " p : g m 0 0 t " " n n / a " p t 〇 / a " p t " / a " p t " / a " p t 〇 / a " p t 球 / a " p t 〇 / a " p t 異 g n n / a " p : g m 0 0 t " " n n / / o d P d t s s / e a , 6 t I : d P d t c s u ・ d t c s u d t c s u d t c s u 〇 d t c s u □ d t c s u 〇 d t c s u 源 o d P d t s s / e a , 6 t I : d P a a . l a l i c : / " g , p m l a l i o : a ・ l i o : a l i o : a l i o : a 六 l i o : a □ l i o : a 〇 l i o : a 氏 . l a l i c : / " g , p m l a p p j . g . o : / d , e s a " . g . o m / l ・ . o m / l . o m / l . o m / l 〇 . o m / l □ . o m / l 〇 . o m / l 物 j . g . o : / d , e s a " . g i i p g e n n p / l / : g l g e n n m / B ・ n n m / B n n m / B n n m / B 〇 n n m / B □ n n m / B 〇 n n m / B 巻 p g e n n p / l / : g l g e / / / o " d " a d . j / e e o " d " e d o ・ d " e d o d " e d o d " e d o 〇 d " e d o □ d " e d o 〇 d " e d o 一 / o " d " a d . j / e e o " p i a . , l , i l n p / S v . , l , n l d ・ l , n l d l , n l d l , n l d 一 l , n l d □ l , n l d 〇 l , n l d " a . , l , i l n p / S v . , r i p j . n . d e d e e j . t . y 一 . t . y . t . y . t . y 〇 . t . y □ . t . y 〇 . t . y p j . n . d e d e e j e i i p g t n l g l r l p g i n " 一 g i n " g i n " g i n " 〇 g i n " □ g i n " 〇 g i n " i p g t n l g l r l p s f / / o i d . " . v 2 / o n d , 一 o n d , o n d , o n d , 〇 o n d , □ o n d , 〇 o n d , / / o i d . " . v 2 / e / i a . n l g , n i " a . g l 一 . g l . g l . g l 〇 . g l □ . g l 〇 . g l i a . n l g , n i " a n 3 i p j g . o d c p j " . ・ j " . j " . j " . 〇 j " . □ j " . 〇 j " . i p j g . o d c p t 4 i i p " g . l e i p , g ・ p , g p , g p , g 〇 p , g □ p , g 〇 p , g i i p " g . l e i a 3 f / / , o j . 2 / / o ・ / o / o / o 〇 / o □ / o 〇 / o f / / , o j . 2 / t 7 / i a . p g " i a . ・ a . a . a . 一 a . □ a . 〇 a . / i a . p g " i i 6 3 i p j / o , i p j ・ p j p j p j 一 p j □ p j 〇 p j 3 i p j / o , i o 8 4 i i p a . i i p ・ i p i p i p 一 i p □ i p 〇 i p 4 i i p a . i n 6 3 f / / p j f / / ・ / / / / / / 〇 / / □ / / 〇 / / 3 f / / p j f / / 7 / i a i p / i a ・ i a i a i a 〇 i a " i a 〇 i a 7 / i a i p / 3 m 6 3 i p / / 3 i p ・ i p i p i p 〇 i p i p 〇 i p 6 3 i p / / 3 / a 8 4 i i i a 4 i i ・ i i i i i i 一 i i i i 〇 i i 8 4 i i i a 4 c n 6 3 f / i p 3 f / ・ f / f / f / 一 f / f / 〇 f / 6 3 f / i p 3 o i / 7 / i i i 7 / i ・ / i / i / i 一 / i / i 〇 / i / 7 / i i i 7 n f c 6 3 i f / 6 3 i ・ 3 i 3 i 3 i 一 3 i 3 i 一 3 i c 6 3 i f / 6 t e a 8 4 i / i 8 4 i ・ 4 i 4 i 4 i 〇 4 i 4 i 〇 4 i a 8 4 i / i 8 e s n 6 3 f 3 i 6 3 f ・ 3 f 3 f 3 f 〇 3 f 3 f 〇 3 f n 6 3 f 3 i 6 x t v / 7 / 4 i / 7 / ・ 7 / 7 / 7 / 〇 7 / 7 / 一 7 / v / 7 / 4 i / t . a c 6 3 3 f c 6 3 ・ 6 3 6 3 6 3 〇 6 3 6 3 〇 6 3 a c 6 3 3 f c . j s a 8 4 7 / a 8 4 ・ 8 4 8 4 8 4 〇 8 4 8 4 〇 8 4 s a 8 4 7 / a j s / n 6 3 6 3 n 6 3 ・ 6 3 6 3 6 3 〇 6 3 6 3 〇 6 3 / n 6 3 6 3 n s o 1 v / 7 8 4 v / 7 ・ / 7 / 7 / 7 〇 / 7 / 7 " / 7 2 v / 7 8 4 v o n " a c 6 6 3 a c 6 ・ c 6 c 6 c 6 〇 c 6 c 6 c 6 " a c 6 6 3 a n " , s a 8 / 7 s a 8 ・ a 8 a 8 a 8 〇 a 8 a 8 a 8 , s a 8 / 7 s " , / n 6 R 6 / n 6 ・ n 6 n 6 n 6 〇 n 6 n 6 n 6 / n 6 R 6 / , 1 v / 0 8 1 v / ・ v / v / v / 一 v / v / v / 2 v / 0 8 2 / a c 0 6 / a c ・ a c a c a c 一 a c a c a c / a c 0 6 / p s a 0 / a s a ・ s a s a s a ・ s a s a s a p s a 0 / a a / n 0 R n / n ・ / n / n / n 〇 / n / n / n a / n 0 R n g 1 v 0 0 n 1 v ・ 1 v 1 v 1 v 〇 1 v 1 v 1 v g 2 v 0 0 n e / a 0 0 o / a ・ / a / a / a ・ / a / a / a e / a 0 0 o " p s 1 0 s a s ・ a s a s a s ・ a s a s a s " p s 2 0 s , a / / 0 " n / ・ n / n / n / ・ n / n / n / , a / / 0 " g 1 f 0 , n 1 ・ n 1 n 1 n 1 ・ n 1 n 1 n 1 g 2 f 0 , e " u 0 o # ・ o # o # o # ・ o # o # o # e " u 0 / , l 1 s x ・ s x s x s x ・ s x s x s x / , l 2 i l " / y ・ / y / y / y ・ / y / y / y i l " m / , 0 w ・ 1 w 2 w 3 w の 4 w 5 w 6 w m / , a f " h ・ " h " h " h 〇 " h " h " h a f g u , = ・ , = , = , = 〇 , = , = , = g u e l 5 ・ 5 5 4 ・ 4 4 6 e l a l 2 ・ 2 0 3 ・ 3 2 9 a l n / 7 ・ 9 9 7 ・ 7 8 4 n / n 0 0 ・ 3 2 5 ・ 5 3 , n 0 o / , ・ , , , 一 , , 4 o / " d 2 ・ 2 3 3 ・ 2 2 9 " d , e 7 ・ 0 2 0 ・ 8 7 9 , e f 5 ・ 0 7 4 ・ 5 5 , f a , ・ 9 2 , " 3 6 3 a u 1 ・ , , 1 , , 1 u l 1 ・ 2 6 0 4 6 0 l t 4 ・ 1 3 3 5 3 , t . , ・ 8 , , , , 2 . j 9 ・ , 8 1 5 2 9 j p 3 ・ 4 0 4 2 5 9 p g 5 ・ 2 " 7 2 2 1 g " " ・ 4 , 5 " " " " , , ・ " " , , , , ・ , , " TEI/XMLファイルの作成 上記で得られたアノテーション付きIIIFマニフェストファイルを入力として、TEI/XMLファイルを作成するライブラリを作成しました。 ...

2025年5月27日 · 42 分 · Nakamura