IIIFマニフェストファイルからOCR結果を含むTEI_XMLファイルを作成するプログラム

概要 IIIFマニフェストファイルからOCR結果を含むTEI_XMLファイルを作成するプログラムを作成しました。このプログラムの使用方法について説明します。 仕組み IIIFマニフェストファイルのURLを指定して、NDL古典籍OCR-LiteによるOCR結果を含むTEI/XMLファイルを作成します。 https://github.com/ndl-lab/ndlkotenocr-lite 使い方 以下のノートブックにアクセスしてください。 https://colab.research.google.com/github/nakamura196/000_tools/blob/main/IIIFマニフェストファイルからTEI_XMLファイルを作成するプログラム.ipynb そして、一つ目の再生ボタンを押します。 完了したら、「実行」という部分のmanifest_urlとoutput_dirの値を更新して、セルを実行します。 output_dirに、OCR結果を含むTEI/XMLファイルが出力されます。 出力例 以下のように、ページおよび行ごとのOCR結果を含むファイルが作成されます。 < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < < ? ? T t f t t / p p d / s b p / / / / t b a l s l s l s / a l s l s l s l s l s l s l s l s l s l s l s l s l x x E e i i i t u u a p o i t b s f t e o b b e b e b e a b b e b e b e b e b e b e b e b e b e b e b e b e b m m I i l t t i b b t u u b r i o i e x d / g / g / g b / g / g / g / g / g / g / g / g / g / g / g / g / l l H e l l t l l e b r l b u l i t y n > > > > n > > > > > > > > > > > > > - - x e D e e l i i > l c > t l r e H > > = t t t = t t t t t t t t t t t t m m m a e S > e c s 2 i e a > c D e " y y y " y y y y y y y y y y y y o o l d s t O S a h 0 c D r e e a 1 p p p 2 p p p p p p p p p p p p d d n e c m C t t e 2 a e g D s d " e e e " e e e e e e e e e e e e e e s r > t R m i r 5 t s e e c e = = = = = = = = = = = = = = = l l = > > 結 t o > - i c t s > r t " " " t " " " " " " " " " " " " " 果 > n N 0 o > = c > y 本 本 本 y 本 本 本 本 本 本 本 本 本 本 本 本 h h h : S D 1 n " > p 文 文 文 p 文 文 文 文 文 文 文 文 文 文 文 文 r r t t L - S h e " " " e " " " " " " " " " " " " e e t h m 古 2 t t = = f f p t t 典 9 m t " n n n " n n n n n n n n n n n n = = : t > O < t p p = = = p = = = = = = = = = = = = " " / p C / > s a " " " a " " " " " " " " " " " " h h / s R d : g 1 3 4 g 1 2 3 4 5 6 7 8 9 1 1 1 t t w : < a / e " " " e " " " " " " " " " 0 1 2 t t w / / t / " " " " " p p w / p e i c c c c c c c c c c c c : : . i u > i f o o o f o o o o o o o o o c c c / t i b i a r r r a r r r r r r r r r o o o / e i l f c r r r c r r r r r r r r r r r r w w i f i . s e e e s e e e e e e e e e r r r w w - . s d = s s s = s s s s s s s s s e e e w w c d h l " p p p " p p p p p p p p p s s s . . . l e . h = = = h = = = = = = = = = p p p t t o . r i t " " " t " " " " " " " " " = = = e e r i > t t # # # t # # # # # # # # # " " " i i g t c p z z z p z z z z z z z z z # # # - - / c . s o o o s o o o o o o o o o z z z c c n . u : n n n : n n n n n n n n n o o o . . s u - / e e e / e e e e e e e e e n n n o o / - t / - - - / - - - - - - - - - e e e r r 1 t o i 1 3 4 i 1 2 3 4 5 6 7 8 9 - - - g g . o k i " " " i " " " " " " " " " 1 1 1 / 0 k y i > > > i > > > > > > > > > 0 1 2 r r " y o f 国 空 ゆ f あ ・ 中 住 ね に は は な " " " e e > o . . 外 せ ふ . つ ・ 川 ぬ ら く じ つ り > > > l l . a d < み か d た ・ ノ < れ ま め か ぬ こ お ほ e e a c l / 二 ほ l い ・ 中 / 給 れ て し れ ぼ ぼ ど a a c . . s < < . < ・ 川 s は て う う な し す が s s . j i e / / i / ・ 宿 e ぬ も し て ど て て み e e j p t g s s t s ・ に g ま な と な の ふ さ の / / p / c > e e c e ・ て > ゝ ら 世 が 給 し ぐ い x x / r . g g . g ・ 之 に は を ら へ た り と m m r e u > > u > ・ 源 。 ぬ 思 ふ ば り の な l l e p - - ・ 氏 わ を ひ ま 。 。 ほ が / / p o t t ・ 十 れ 。 知 じ な い そ か t t o / o o ・ 六 は こ ぬ く み ど く ら e e / i k k ・ 才 か よ れ こ た ら ち ざ i i i i y y ・ < く ひ ば そ を う い り / / i i o o ・ / 人 な < 思 さ た さ し c c i f . . ・ s に ん / ひ へ し き け u u f / a a ・ e < < s < < と < < s s / 0 c c ・ g / / e / / < / / t t 0 f . . ・ > s s g s s / s s o o f 1 j j ・ e e > e e s e e m m 1 1 p p ・ g g g g e g g / / 1 a / / ・ > > > > g > > s s a 3 i i ・ > c c 3 e i i ・ h h e d i i ・ e e d - f f ・ m m - 1 / / ・ a a 1 8 s s ・ / / 8 c o o ・ r r c 2 t t ・ e e 2 - o o ・ l l - 7 _ _ ・ a a 7 3 o o ・ x x 3 2 g g ・ n n 2 2 a a ・ g g 2 - i i ・ / / - 6 _ _ ・ t t 6 3 2 2 ・ e e 3 4 0 0 ・ i i 4 0 2 2 ・ _ _ 0 - 3 3 ・ a a - 1 1 1 ・ l l 1 9 0 0 ・ l l 9 e / / ・ . . e d A A ・ r r d 3 0 0 ・ n n 3 f 5 5 < g g f 0 _ _ / " " 0 d 4 4 s d 9 / / e t t 9 6 0 0 g y y 6 6 0 0 > p p 6 e 2 2 e e e / / / = = / m A A " " m a 0 0 a a a n 5 5 p p n i _ _ p p i f 4 4 l l f e _ _ i i e s 0 0 c c s t 0 0 a a t " 2 2 t t < / _ _ i i / > 0 0 o o t 0 0 n n i 0 0 / / t 1 2 x x l . . m m e t t l l > i i " " f f / / s s f f c c u u h h l l e e l l m m / / a a f f t t u u y y l l p p l l e e / / n n 0 0 s s / / = = d d " " e e h h f f t t a a t t u u p p l l : : t t / . . / j j r p p p e u g g l r " " a l > > x . n o g c . l o c r . g r n g s d s s t d r l u / c s t c u h r e e m / a 1 t . r 0 o " n ? " > ? > まとめ 不完全な点もあるかと思いますが、参考になりましたら幸いです。 ...

2025年1月30日 · 10 分 · Nakamura

Nuxt3と@sidebase/nuxt-authを使って、Drupalの認証を行う

概要 Nuxt3と@sidebase/nuxt-authを使って、Drupalの認証を行う方法です。 背景 以下の記事で、GakuNin RDMの認証を行う方法を紹介しました。 また、以下の記事で、Next.jsからDrupalのOAuthを利用する方法を紹介しました。 これらを参考にして、Nuxt3からDrupalのOAuthを利用します。 方法 ソースコードは以下のリポジトリでご確認いただけます。 https://github.com/nakamura196/nuxt-rdm 具体的には、以下です。 https://github.com/nakamura196/nuxt-rdm/blob/main/server/api/auth/[…].ts { } , i n t c c a } t } p } d a y l l u , o , r , : m p i i t u p } k a } o r } e e e e h r a , e s , f e ; " : : n n o l r s r r } n y c } c } c i } r i t i n e i d t t r : a c e e / : n o ) o ) o f e l u d a m m r " " I S i m o s d u a c n c c c g r } ; n m h } b ; n t t e r : m a a u D o d e z p s p p i s p { s l l o r e / s e e , o s ( h u ( n e i g p r a : c a r : e o r e i r t i i d a d u a t t a " d t ! r r p p : l e a u u r t o : n e R / e e e e n i s p h d C y r o n r { r : : l p t u e i c { s c u a q b n n : t r e i r o e o , j e w o o p " a h s t o e p e t n u u o t t _ e R / e d r n s s { f f r p p , l " e : n s r _ _ t t e d _ _ c t c u a s : s t o . n i i o r r " , R : s o t u i h s y i s o y t n u : e n o e t l l f o o , u u . c y r m / t d e n p _ t t = " n k w o e e i f f n s { e e p i e c ( = : c t e u i h P { t = ) k ) . l i i t e n s e : C a c r e : r m / a O - E e s e l l i R v s : o l o n u e x i e c w S T a { r n { u . e e m u . . ` n l n e s t t " : C a a T y w r s b n . . e n D e " $ f b t w e : . a o l i " p a o : , a e p C t R n c { i a e R p u ` n l t , e i r m m r o i U v o g c x U u u a t $ f b " t ( j e a o n m P . d ( k t R n s r h { i a f : ` s i f f e A D e ) ) L t e a o g c e r T o l i i C L R " . d S i R m r ( k t " e o n " l g o _ U , n r { e m u s i ) c a s k s e ( n A P e u a e n . z . d h p . e } u p ) f U A x p r C t c a n r ( p j n ; b r . i T L t a c o i o t e u p l s " o " d g H _ A l h n m d i x p r i o r f N r ( _ S u ` P f e e o t a o c n e を i o n u ) U C t , a i C n A l c a ( q ユ l u p . R O h r g _ u ` e t ) u ー e E l a d L P U a ( n c t , s i ; e ザ . m l l r , E r m ) f o h s o s ー p a , C u , l s . i " d U . n t の r i l p ( d g " e r e / 一 e l i a { r ( , " l n x f 意 f e l u ) , v - P a の e P n C p . . w a i I r r プ t l a d D w r l D r o ロ I i l r R w s e と e v フ d e C u U - e d し d i ァ , n l p P f : て _ d イ t i a A o t 利 u e ル S e l L r h $ 用 s d U e n C _ m e { e " R c t l T - r r , L r I i O u r e n を e d e K r e s a 画 t , n E l s . m 像 , t N e p s e と S _ n o t メ し e U c n a ー て c R o s t ル 使 r L d e u が 用 e e s " な ( t d b T U い 必 , " o e n 場 要 , d x k 合 に " y t n の 応 " } o フ じ , o ` w ォ て n ) n ー 調 { c ; ル 整 e U バ ) s ッ e ク r " , 名 前 の 優 先 順 位 を 設 定 まとめ 間違っている点もあるかもしれませんが、参考になりましたら幸いです。 ...

2025年1月12日 · 6 分 · Nakamura

Omeka S: Advanced Searchモジュールに対応したテーマを探す

概要 Omeka SのAdvanced Searchモジュールに対応したテーマを探す方法の一例について紹介します。 背景 Omeka SのAdvanced Searchモジュールを用いることで、以下の記事などで紹介しているように、Omeka Sの検索画面をカスタマイズすることができます。 特に、ファセットなどを追加できる点に利点があります。 一方、使用しているテーマがこのAdvanced Searchモジュールに対応していない場合、一部表示が崩れてしまうケースがあります。テーマ側でAdvanced Searchモジュールに対応しているかどうかを判断する方法の一例として、以下のように、テーマのフォルダの「view/common」の下に「advanced-search」の有無を確認する方法があります。 https://github.com/omeka-s-themes/freedom/tree/master/view/common/advanced-search この方法に基づいて、GitHubで公開されているOmeka Sのテーマのうち、Advanced Searchモジュールに対応しているものを探す方法を紹介します。 方法 以下の記事で紹介したサイトを使用します。 URLは以下です。 https://satoru196.notion.site/satoru196/6f898ed1352e4c9fa013eee635cbabf4?v=02cab757b6cf4df6bfbedfeb85eca0a5 特に、本記事の目的のため、「各テーマがAdvanced Searchモジュールに対応しているか」のフラグを追加しました。加えて、リポジトリのownerの情報も加え、各テーマが誰によって提供されているかを確認できるようにしました。 具体的には、以下の図に示すように、スター数で降順として、さらに「has_advanced_search」にチェックが入っているテーマのみに限定します。 この結果、「freedom」というテーマが「omeka-s-themes」というOmekaの公式Teamによって提供されており、相対的にスター数が多く、Advanced Searchモジュールにも対応していることがわかります。 https://github.com/omeka-s-themes/freedom まとめ Omeka Sのテーマの探し方の一例について紹介しました。Omeka Sの利用にあたり、参考になりましたら幸いです。

2025年1月11日 · 1 分 · Nakamura

AppSheetを使ってデジタルコレクションを構築する

概要 AppSheetを使ってデジタルコレクションを試作してみましたので、備忘録です。 対象データ 以下の記事と同じデータを利用しています。 具体的には、『東京帝國大學本部構内及農學部建物鳥瞰圖』(東京大学農学生命科学図書館所蔵)をサンプルデータとして使用します。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/s/agriculture/document/187cc82d-11e6-9912-9dd4-b4cca9b10970 成果物 以下のURLからアクセスいただけます。 https://www.appsheet.com/start/092a3ff4-1074-4e27-bbd1-f4820da77511 画像の一覧機能や、 地図へのマッピング機能、 簡単な集計機能を提供します。 作成方法 アプリの初期設定 アプリを作成します。 データソースとして、Google Sheetsを選択します。ちなみに、「AppSheet Database」を使用した場合、Free Planではデプロイできませんでした。 結果、デフォルトで地図表示、およびデータの一覧を表示するページ(View)を作成してくれました。 データ 「データ」タブに移動して、設定を行います。 例えば、使用しない項目には、「SHOW?」列のチェックを外します。また、「KEY?」と「LABEL?」に対して、「identifier」と「title」を割り当てました。 次に、「DISPLAY NAME」で、アプリ上で表示する名称を入力します。 さらに、検索に使用したい項目にのみ、「SEARCH?」列にチェックを入れます。 加えて、今回はデータの閲覧のみを行うため、「Read-Only」の設定を行います。 Views(マップ) Views(マップ)はデフォルトのまま使用しました。 Views(main) ここでは、View nameを「Browse」に変更して、View typeとして「card」を選択して、Positionには「next」を与えました。Positionについては、メニューにおいて「Browse」が「Map」の左にくるようになります。 さらに、レイアウトについて、それぞれの要素に割り当てるカラムを設定します。例えば以下では、画像を表示する列として、「_image_url」を指定しています。 結果、一覧画面が以下のように表示されます。 Views(chart) 以下のように、新規にViewを追加します。 そして、「Chart columns」に、ここではカテゴリが格納されたカラムを設定しました。結果、画面右部のように表示が変わります。 その他 その他、アプリの見た目を変更します。 設定 > Theme & Brand から、例えば、ヘッダーにロゴなどが表示されるように変更します。 また、今回の初期設定では「Map」Viewがはじめに開いてしまうので、「Browse」が表示されるように、「Views」の設定を変更します。 Preview ここまでのところでプロトタイプはほぼ完成です。Previewモードで確認することができます。デフォルトで、各レコードの詳細画面も表示されます。 ...

2025年1月8日 · 1 分 · Nakamura

Kompakkt Standalone Viewerを試す

概要 Kompakkt Standalone Viewerを試す機会がありましたので、備忘録です。 以下のように説明されています。 This repository hosts a JavaScript file which can be included on any website to use the Kompakkt Viewer without needing to use the Kompakkt Repository or the Kompakkt Server. (機械翻訳)このリポジトリには、Kompakkt Viewerを使用するためのJavaScriptファイルが含まれており、このファイルをウェブサイトに組み込むだけで、Kompakkt RepositoryやKompakkt Serverを使用せずにビューアを利用することができます。 リポジトリ 以下で公開されています。 https://github.com/Kompakkt/StandaloneViewer またGitHub Pagesでビューアにアクセスすることができます。 https://kompakkt.github.io/StandaloneViewer/ 表示例 以下のように、3Dモデルとアノテーションを表示することができました。 https://kompakkt.github.io/StandaloneViewer/?state=eyJyZXNvdXJjZSI6Imh0dHBzOi8vc3VraWxhbS5hd3MubGRhcy5qcC9maWxlcy9vcmlnaW5hbC8yNTNlZmRmMzQ0Nzg0NTk5NTRhZTA0ZjZiM2JlZmE1ZjM4MjJlZDU5LmdsYiIsImFubm90YXRpb25zIjpbeyJfaWQiOiI2NzcwYTE1NDRjZTFmZDAyMzQ4OGVkODAiLCJib2R5Ijp7InR5cGUiOiJhbm5vdGF0aW9uIiwiY29udGVudCI6eyJ0eXBlIjoidGV4dCIsInRpdGxlIjoibXkgdGl0bGUiLCJkZXNjcmlwdGlvbiI6Im15IGRlc2NyaXB0aW9uIiwicmVsYXRlZFBlcnNwZWN0aXZlIjp7ImNhbWVyYVR5cGUiOiJhcmNSb3RhdGVDYW0iLCJwb3NpdGlvbiI6eyJ4IjoyLjI5NzE5OTgyNzA3MzIxLCJ5IjoxLjA0NjMzMzI0ODg4Njk0LCJ6IjoxLjYzNjAwODMyNDk5NDF9LCJ0YXJnZXQiOnsieCI6MS4wMTMxMDUwMzQ4MjgxOSwieSI6MS4xNzkwMzM5OTQ2NzQ2OCwieiI6MS4wMTQ0NDIwMjY2MTUxNH0sInByZXZpZXciOiJwcmV2aWV3cy9hbm5vdGF0aW9uLzY3NzBhMTU0NGNlMWZkMDIzNDg4ZWQ4MC5wbmcifX19LCJjcmVhdGVkIjoiMjAyNC0xMi0yOVQwMTowOTo0MC4yODZaIiwiY3JlYXRvciI6eyJ0eXBlIjoicGVyc29uIiwibmFtZSI6IlNhdG9ydSBOYWthbXVyYSIsIl9pZCI6IjY3NWE5Y2U0N2QxZmIyNDUzZjBmYjNjMSJ9LCJnZW5lcmF0ZWQiOiIyMDI0LTEyLTI5VDAxOjA5OjQyLjk3NFoiLCJnZW5lcmF0b3IiOnsidHlwZSI6InNvZnR3YXJlIiwibmFtZSI6IktvbXBha2t0IiwiX2lkIjoiNjc1YTljZTQ3ZDFmYjI0NTNmMGZiM2MxIiwiaG9tZXBhZ2UiOiJodHRwczovL2dpdGh1Yi5jb20vS29tcGFra3QvS29tcGFra3QifSwiaWRlbnRpZmllciI6IjY3NzBhMTU0NGNlMWZkMDIzNDg4ZWQ4MCIsImxhc3RNb2RpZmljYXRpb25EYXRlIjoiMjAyNC0xMi0yOVQwMToxMToyNC4zNjBaIiwibGFzdE1vZGlmaWVkQnkiOnsiX2lkIjoiNjc1YTljZTQ3ZDFmYjI0NTNmMGZiM2MxIiwibmFtZSI6IlNhdG9ydSBOYWthbXVyYSIsInR5cGUiOiJwZXJzb24ifSwibW90aXZhdGlvbiI6ImRlZmF1bHRNb3RpdmF0aW9uIiwicmFua2luZyI6MSwidGFyZ2V0Ijp7InNvdXJjZSI6eyJyZWxhdGVkRW50aXR5IjoiNjc3MDllODYwY2I4ZDA2NGZhMDc1NWI3IiwicmVsYXRlZENvbXBpbGF0aW9uIjoiIn0sInNlbGVjdG9yIjp7InJlZmVyZW5jZVBvaW50Ijp7Il9pc0RpcnR5Ijp0cnVlLCJfeCI6MC40MzI0MjIyMjQwNDc5MDksIl95IjoxLjY3NDQzMTE3MTYxNjA1LCJfeiI6MS42NTQ2MTgxODc1NDE1OH0sInJlZmVyZW5jZU5vcm1hbCI6bnVsbH19LCJ2YWxpZGF0ZWQiOnRydWV9XX0%253D ただし、アノテーションに日本語が含まれているとエラーが発生してしまいました。 また、アノテーションが3Dモデル上に表示されないなど、使用方法に誤りが含まれるようでした。 補足 入力するアノテーションのフォーマットとして、Kompakktで付与したアノテーションをエクスポートしたものが利用できるようでした。 例えば、以下です。 [ ] { } " " } " " } " " } " " " } " " " } " _ b , c c , g g , i l l , m r t , v i o " " } r r " " " e e " " " " d a a " " " o a a " } " } a d d t c e e t n _ n n t n _ h e s s _ n t t n r s , s l " y y o " " " " } a a y a i e e y a i o n t t i a y i k g o " " e " } " i : " p n t t d r t t p m d r r p m d m t M M d m p v i e u r r l r , r d : e t y i e e " " } " } " e o e e " a a e e " e i o o " e e a n t r e e e e " " " " e a " " e p t s l c p , t , p d r " " : t t " " : p f d d : " " t g " c l l c f _ _ _ _ f t 6 { : n e l c a a o " " " a " " " r " " : : e o : : a i i i : : i " : e a a t e i x y z e e 7 t " e r t m s x y z r x y z e : : " d r " g e f f " o : " t t o r s " " " r d 7 " " : " i e e i " " " g " " " v " " 6 " " " " 6 e r i i 6 " " n { : e e r e D : : : e " 0 a : : p d r t : : : e : : : i " { p S 7 : : s K 7 " " c e 7 S p " 1 d d " n i n : a n " t P a i t e 2 e a 5 o o 5 : : a d 5 a e : , { E C : c r 0 1 1 c 1 n { t " i e T o 2 1 1 " 1 1 1 w 0 r t a " { f m a t B a t r n o e t . . . e t 5 o e a o r y n . . . : . . . " 2 s o 9 2 t p 9 " " i y 9 o s " t m { P y 4 6 6 N r 4 t x a n s p " 2 0 6 0 1 0 : 4 o r c 0 w a c h 6 o " c r o d i p o " 3 7 5 o u 4 a t a " p e : 9 4 3 { 1 7 1 - n u e 2 a k e t 7 n : e u n e t i i : 2 4 4 r e c t " " : e " 7 6 6 3 9 4 " 1 " 4 4 r k 4 t 7 D 4 " f y l n 4 4 6 m e i , , c : { 1 3 0 1 0 4 p 2 , N 7 - e t 7 p 0 a { 7 N a " a t t 2 3 1 a 1 o " t 9 3 0 0 3 4 r - a d 1 " " d s a t d a u : t " r 2 1 8 l f n b i " 9 3 8 5 3 2 e 2 k 1 2 , , 1 : 1 e 1 k l i : u 2 1 1 " d " b v a 8 2 3 0 9 0 v 9 a f - f / 5 " f a t " o e 2 7 8 : 0 , b e r 2 4 2 3 9 2 i T m b 2 b / 4 : b m M 6 n { , 4 1 7 2 " " c 7 8 4 4 4 6 e 0 u 2 9 2 g 4 2 u o 7 " 0 6 5 n 3 , : R 0 8 9 8 6 6 w 1 r 4 T 4 i c " 4 r t 7 : 4 1 4 u 4 o 7 8 9 2 7 1 s : a 5 0 5 t e 2 5 a i 0 7 6 1 l 8 { t 3 6 4 8 4 5 / 0 " 3 1 3 h 1 0 3 " v 9 " 9 0 5 l 8 a 2 9 1 1 6 1 a 9 , f : f u f 2 f , a e " 0 5 8 e t 1 4 9 8 4 n : 0 0 0 b d 5 0 t 8 9 , d e , , , , n 4 f 9 f . 0 - f i 6 , 8 C o 0 b : b c 2 0 b o 0 0 a t . 3 4 3 o 3 1 3 n c " m a 2 c 2 c m 4 - c " b , " t 8 1 . 1 / 8 0 1 , 8 , i 6 " 9 " K 8 4 " d o Z 7 , o e T , 0 n " 4 m d 2 6 / , Z p 8 2 4 6 " a 0 : f 7 , k " 4 a 7 k , 7 0 0 t : 7 a / 4 5 1 K 4 5 5 o . b 4 m 9 7 4 p 4 " c a 9 , e k Z 1 k " f t , d " 0 2 3 4 8 8 e d 8 0 . p n g " ただし、Kompakktでも3Dモデル上にアノテーションが表示されず、使用方法のどこかに誤りがありそうです。 ...

2025年1月5日 · 6 分 · Nakamura

Aleph 3D viewerを試す

概要 3D object viewerの一つであるAlephを試してみましたので、備忘録です。 https://github.com/aleph-viewer/aleph 菊池市デジタルアーカイブで公開されている「石淵家地球儀」の3Dデータを使用しています。 https://adeac.jp/kikuchi-city/catalog/e0001 背景 IIIF対応の3Dビューアを調査する過程で、以下の記事を見つけました。 https://pro.europeana.eu/post/iiif-for-3d-making-web-interoperability-multi-dimensional こちらで紹介されているビューアの一つとして、Alephを知りました。 使い方 GitHubリポジトリをForkして、Vercelにデプロイしました。 https://aleph-coral.vercel.app/ 初期表示は以下です。 画面左部の入力フォームにあるglbファイルへのURLを変更することで、指定した3Dモデルが表示されました。 まとめ 3Dビューアの調査にあたり、参考になりましたら幸いです。

2024年12月29日 · 1 分 · Nakamura

ndlocr_cli(NDLOCR(ver.2.1)アプリケーションを試すことができるGradioアプリを作成しました。

概要 ndlocr_cli(NDLOCR(ver.2.1)アプリケーションを試すことができるGradioアプリを作成しました。 以下のURLからお試しください。 https://ndlocr.aws.ldas.jp/ 補足 現在は1枚の画像アップロードのみに対応しています。今後、PDFのアップロード機能などのオプションも追加したいと思います。 Azureで使用可能なVMである「NC8as_T4_v3」に搭載されている「NVIDIA Tesla T4 GPU」を使用しています。 まとめ いつまでこの形で提供できるかはわかりませんが、ndlocr_cli(NDLOCR(ver.2.1)アプリケーションの精度の確認などにあたり、ご利用いただけますと幸いです。

2024年12月22日 · 1 分 · Nakamura

CollectionBuilderを使ってみる

概要 CollectionBuilderを使ってみる機会がありましたので、備忘録です。 https://collectionbuilder.github.io/ 以下のように説明されています。 CollectionBuilder is an open source framework for creating digital collection and exhibit websites that are driven by metadata and powered by modern static web technology. (機械翻訳)CollectionBuilderは、メタデータを基盤とし、最新の静的ウェブ技術によって動作するデジタルコレクションや展示ウェブサイトを作成するためのオープンソースフレームワークです。 成果物 以下がCollectionBuilderを用いて試作したサイトです。 https://nakamura196.github.io/collectionbuilder-gh/ リポジトリは以下です。 https://github.com/nakamura196/collectionbuilder-gh 以下の記事と同じデータを利用しています。 具体的には、『東京帝國大學本部構内及農學部建物鳥瞰圖』(東京大学農学生命科学図書館所蔵)をサンプルデータとして使用します。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/s/agriculture/document/187cc82d-11e6-9912-9dd4-b4cca9b10970 感想 メタデータ(demo-metadata.csv)の変更のみで、上記のようなサイトを構築することができました。 地図やタイムライン、ファセットやタグクラウドなど、豊富な機能も提供されていました。 またマークダウンファイルによるカスタマイズ性の高さも感じました。 まとめ Omekaのような動的サイトではなく、静的サイトとしてデジタルコレクションを構築する手段として、有用なツールだと感じました。 使いこなせていない点も多いですが、参考になりましたら幸いです。

2024年12月19日 · 1 分 · Nakamura

「れきちず」を使ってみる

概要 「れきちず」を使う方法を調べましたので、備忘録です。「れきちず」は以下のように説明されています。 「れきちず」は、「現代風の地図デザイン」の歴史地図を閲覧できるサービスです。 https://rekichizu.jp/ 背景 以下の会議に参加し、「れきちず」について教えていただきました。「れきちず」を開発してくださっている関係者の皆様、会議を開催してくださった皆様、また使用方法を教えてくださった北本朝展先生に感謝いたします。 http://codh.rois.ac.jp/conference/linked-pasts-10/ 以下のように、CODHのサービスでも導入されています。 http://codh.rois.ac.jp/news/ 2024-05-01 江戸マップ「れきちず」データセットを公開しました。また、edomi マップおよびedomi 災害に「れきちず」を導入し、現代デザインの歴史地図上で、edomiの歴史ビッグデータが閲覧できるようになりました。 使用方法 以下に、最低限の機能を実現するためのソースコードを格納しました。 https://github.com/nakamura196/rekichizu/blob/main/docs/index.html 以下でデモをご確認いただけます。 https://nakamura196.github.io/rekichizu/ 以下は地形とともに、富士山を表示した例です。 なお、地形については、以下の点にご注意ください。 江戸時代後期(1800〜1840年ごろ、文化・文政・天保年間)を想定した地図になります。関東・中部以外の地方についても順次拡大していく予定です。 地形の3D表示については現在の地形を表示しています。そのため、当時とは異なる地域があります。 https://rekichizu.jp/ 参考 ライブラリ 本アプリケーションの構築にあたっては、Leafletではなく、MapLibre GL JSを使用します。 https://maplibre.org/maplibre-gl-js/docs/ 以下のサイトにおいて、MapLibre GL JSは、Mapboxのオープンソースフォーク版と説明されていました。 https://qiita.com/asahina820/items/66cd78a4462db86578a4 当初、Mapboxでの使用を前提に、アカウント登録やトークンの発行等を行いましたが、MapLibre GL JSを使用する場合は、このような手続きは不要でした。 地形の有効化/無効化時にピッチを変更 地形の有効化/無効化時にピッチを変更するにあたり、以下のような記述によって実現できました。 m a p } . ) o c c m } ; n o o a ) ( n n p p d ; " s s . i u t t t e t r e a c a r t d s h t r e u e : i a r r T o i r a o t n n a t ( e , " i i { r , n o r n a = i = n m = a 1 ? > p 0 . 0 6 { g 0 0 e ; t : T e 0 r , r ア a ニ i メ n ー ( シ 地 ) ョ 形 ; ン が の 有 持 効 続 に 時 な 間 っ ( た ミ と リ き 秒 の ) ピ ッ チ 当初、map.setPitch(60)などを使用していましたが、map.easeToを使用することにより、スムーズにピッチが変更されるようになりました。 ...

2024年12月9日 · 1 分 · Nakamura

Omeka SのIIIF Serverモジュールで、表示方向を指定する

概要 Omeka SのIIIF Serverモジュールで、表示方向を指定する方法です。 IIIFでは、viewingDirectionプロパティを使用し、マニフェストやキャンバスの表示方向を指定することができます。 モジュールの設定 /admin/module/configure?id=IiifServer IIIFサーバモジュールの設定画面において、「viewing direction」の項目を探します。 Property to use for viewing directionでプロパティを指定できる他、デフォルトの表示方向を指定することもできます。 上記の例では、sc:viewingDirectionプロパティを指定していますが、任意のプロパティを設定可能です。 メタデータの追加 上記で指定したプロパティに対して、表示方向の値を入力します。 結果 以下のように、IIIFマニフェストファイルにおいても、viewingDirectionが設定され、左送りが実現できます。 参考 https://iiif.io/api/cookbook/recipe/0010-book-2-viewing-direction/ 以下、ChatGPTによる回答です。 viewingDirection プロパティには以下の4つの値を指定できます: left-to-right 左から右への表示(英語などの横書き言語に適しています)。 right-to-left 右から左への表示(アラビア語やヘブライ語、縦書きの日本語に適しています)。 top-to-bottom 上から下への表示(主に縦書きの言語に適しています)。 bottom-to-top 下から上への表示(特殊な用途向け)。 まとめ Omeka SのIIIF Serverモジュールの利用にあたり、参考になりましたら幸いです。

2024年12月3日 · 1 分 · Nakamura

NDL古典籍OCR-Lite(ndlkotenocr-lite)をMac OSで使用する

概要 2024年11月26日にNDLラボから、NDL古典籍OCR-Liteが公開されました。 https://lab.ndl.go.jp/news/2024/2024-11-26/ 本記事ではMac OSでの使用方法について紹介します。 使用方法(動画) https://www.youtube.com/watch?v=NYv93sJ6WLU 使用方法(テキスト) 以下にアクセスします。 https://github.com/ndl-lab/ndlkotenocr-lite/releases/tag/1.0.0 一覧からmacosを含むものを選びます。またチップについても、合致するものを選択します。 リンクをクリックすると、以下のように、「ndlkotenocr-lite_v1.0.0_macos_m1.tar.gz」がダウンロードされます。 ダブルクリック等で展開すると、macosというフォルダの中に、「NDLkotenOCR-Lite」というアプリケーションが展開されます。 「NDLkotenOCR-Lite」というアプリケーションをダブルクリックして起動します。 ただし、初回実行時は、以下のような警告と共に開くことができません。 「プライバシーとセキュリティ」に移動して、「このまま開く」を押すことで、アプリケーションを開くことができます。 結果、以下が起動します。 処理対象と出力先を選択して「OCR」ボタンを押すことで、以下のように認識されました。 ここでは『源氏物語』(東京大学総合図書館所蔵)を使用しています。 出力結果としては、txt, json, xmlファイルが生成されました。 まとめ 現時点ではNDL古典籍OCR ver.3と比較すると、読み取り精度が平均して約2%程度低下するとのことですが、GPUがなくとも軽量なOCR処理が可能となった点は大きなメリットだと思います。 開発者および公開に関わった方々に感謝いたします。

2024年11月27日 · 1 分 · Nakamura

Archivematicaのtransferにおいて、processing_configを使う

概要 Archivematicaのtransferにおいて、processing_configの使用方法について説明します。 背景 Archivematicaのtransferにおいて、processing_configを選択することができます。以下では、「automated」「default」「mdx」の3つから選択できることがわかります。 これは、「Administration」メニューにおける「Processing configuration」において設定することができます。 例えば以下は、mdx.jpのs3互換ストレージとやりとりすることを前提とした設定例です。 以下のように、「Store AIP location」に対象ストレージを選択することで、このprocessing configurationを選択した際には、当該ストレージにAIPが保存されることになります。 APIからの利用 APIからもこの設定を利用することができます。 以下のBETA版として提供されているものになりますが、/api/v2beta/packageを利用することができます。 https://www.archivematica.org/en/docs/archivematica-1.16/dev-manual/api/api-reference-archivematica/#package processing_configオプションを設定することで、APIからの利用においても、入力データごとに、AIPやDIPの出力フォルダを変更することができます。 まとめ Archivematicaの利用にあたり、参考になりましたら幸いです。

2024年11月19日 · 1 分 · Nakamura

GakuNin RDMとfigshareを接続する

概要 GakuNin RDMとfigshareを接続する機会がありましたので、備忘録です。 figshareでの作業 GakuNin RDMとの連携対象のフォルダを作成します。 まずプロジェクトを作成します。以下では「My First Project」というプロジェクトを作成します。 GakuNin RDMとは、ここで作成したプロジェクト単位に連携ができるようでした。 GakuNin RDMでの設定 GakuNin RDM側で作成したプロジェクト(ここでは「My First Project」)を選択します。 GakuNin RDMでのアップロードと閲覧 接続設定を行った後は、他のストレージと同様に、フォルダの作成やファイルのアップロードができました。 注意点として、他のストレージサービスとは異なり、フォルダは1階層しか作成することはできませんでした。これはGakuNin RDM側の「フォルダ」の単位が、figshare側の「Item」という単位に対応するためと考えられます。 figshare側での閲覧 GakuNin RDM側で作成したフォルダは、figshare側では「Item」という単位で登録されました。 ファイルはその「Item」というデータセットの中の1ファイルとして、以下のように扱われるようでした。 参考 参考までに、figshare側でアイテムを作成する方法をメモします。 作成したプロジェクト内で「Item」を作成します。以下では「My First Folder」というアイテムを作成しています。 結果、以下のように、Project「My First Project」内に作成したアイテム「My First Folder」が作成されました。 まとめ GakuNin RDMとfigshareの連携にあたり、参考になりましたら幸いです。

2024年11月19日 · 1 分 · Nakamura

GakuNin RDMをNext.jsから使用する

概要 GakuNin RDMをNext.jsから使用する備忘録です。 背景 以下の記事で、NextAuth.jsを使って、GakuNin RDMの認証を行う方法を紹介しました。 この延長で、GakuNin RDMのデータをロードするNext.jsのアプリを試作します。 デモ GakuNin RDMの認証が使用できる方に限られますが、以下からお試しいただけます。 https://rdm-app.vercel.app/ 例えば以下は、接続したストレージの一覧を確認するページです。 選択したストレージ(ここではosfstorage)におけるフォルダやファイルの一覧です。 以下は、figshareに登録したファイルを参照している例です。 osfstorageやfigshare、GitHubなど、さまざまなストレージに格納されたデータを共通のAPIから利用できる点は便利だと感じました。 GitHubのリポジトリは以下です。 https://github.com/nakamura196/rdm_app まとめ 現時点(データをロードするだけ)においては、本アプリを使用する利点はありませんが、今後、他のアプリとの連携などを通じて、GakuNin RDMのデータを活用できればと思います。 参考になりましたら幸いです。

2024年11月19日 · 1 分 · Nakamura

GakuNin RDMのAPIを使って、ファイルのアップロードなどを行う

背景 GakuNin RDMのAPIを使って、ファイルのアップロードなどを行う方法の備忘録です。 参考 以下でPAT(パーソナルアクセストークン)の取得方法などを説明しています。 また以下では、OAuth (Open Authorization)を使った方法を紹介しています。Webアプリなどから使用される場合には、こちらが参考になりましたら幸いです。 方法 nbdevを使って、以下のリポジトリを作成しました。 https://github.com/nakamura196/grdm-tools 以下でドキュメントを確認できます。 https://nakamura196.github.io/grdm-tools/ プロバイダ(osfstorage)とフォルダのID(6735a92e6dc8e1001062ac08)は変更する必要がありますが、以下のようなスクリプトにより、特定のフォルダにファイルをアップロードできます。 f i c p f u c r m l r i r l o p i o l l i m o e j e e r n t e _ = n g t t o c p t r k t a f . d o = e _ t " u m s n i h h p _ G = d t l t r o = t o o d s = p a o m . " s d l C e " . : _ s l n y / / f . i v s s / i a e i 8 a f l p n r 6 m i e i t o g p l ( ( n " l e f i . e s i m g . . l p e p r e o t n d _ r ( g m p t ' " . a G n t G R i h r D i , d M . m _ a u C T c r l O . l i K j ) e E p n N / t ' v ) 1 / r e s o u r c e s / { p r o j e c t _ i d } / p r o v i d e r s / o s f s t o r a g e / 6 7 3 5 a 9 2 e 6 d c 8 e 1 0 0 1 0 6 2 a c 0 8 / ? k i n d = f i l e " ソースコードは以下からご確認いただけます。 ...

2024年11月16日 · 2 分 · Nakamura

OldMaps Onlineを使ってみる

概要 OldMaps Onlineを使用する機会がありましたので、備忘録です。 https://www.oldmapsonline.org/ 登録 Googleアカウント等でログインします。無料アカウントでは1つのプライベート画像を登録できました。 今回は、「東京帝國大學本部構内及農學部建物鳥瞰圖(東京大学農学生命科学研究科・農学部)」を対象にします。 https://da.dl.itc.u-tokyo.ac.jp/portal/assets/187cc82d-11e6-9912-9dd4-b4cca9b10970 以下のマニフェストファイルを使って画像を登録します。 https://iiif.dl.itc.u-tokyo.ac.jp/repo/iiif/187cc82d-11e6-9912-9dd4-b4cca9b10970/manifest その後、メタデータを登録する画像が表示されました。 メニュー 以下に示すように、「This map」「Georeference」「Transcribe」「Compare」の機能が提供されています。「This map」は上述のページに遷移します。 以下、その他の機能について確認します。 Georeference ジオリファレンスを行う機能です。 Side by sideによる表示や、 Overlayによる表示機能がありました。 今回は、35点をポイントしてみました。 Transcribe 翻刻機能も提供されていました。以下のように画像の一部を選択し、そのテキストを入力することができます。 Compare ジオリファレンスした結果を閲覧する機能です。 Gridによる表示や、 Swipeによる表示、 Spy glassによる表示など、さまざまなインタフェースが提供されていました。 結果 今回作成した地図は以下からご確認いただけます。 https://www.oldmapsonline.org/compare#map/5523c467-3744-4099-a6fe-61fc63c2ee9d まとめ 古地図の活用にあたり、参考になりましたら幸いです。

2024年11月12日 · 1 分 · Nakamura

Knight LabのTimelineJSやStoryMapJSをNext.jsから利用する

概要 Knight LabのTimelineJSやStoryMapJSをNext.jsから利用する方法のメモです。 背景 Knight LabのTimelineJSやStoryMapJSは、デジタルストーリーテリングのためのオープンソースツールです。 https://knightlab.northwestern.edu/ データ 以下で公開されている『渋沢栄一伝記資料』のテキストデータを利用します。 https://github.com/shibusawa-dlab/lab1 リポジトリ 以下で公開しています。 https://github.com/nakamura196/shibusawa ストーリーマップ 以下のようなコンポーネントを用意することで、Next.jsからも利用することができました。 https://github.com/nakamura196/shibusawa/blob/main/src/components/Storymap.tsx TypeScriptの利用にあたり、以下の型定義ファイルも作成しました。 https://github.com/nakamura196/shibusawa/blob/main/src/global.d.ts 以下のように表示することができました。 https://shibusawa.vercel.app/storymap/1868-08-02 タイムライン ストーリーマップ同様、タイムラインについても以下のようなコンポーネントを作成しました。 https://github.com/nakamura196/shibusawa/blob/main/src/components/Timeline.tsx 以下のように表示することができました。 https://shibusawa.vercel.app/timeline/1868 ただし、タイムラインについては、以下でES6 modules/webpackが公開されていることに後から気がつきました。こちらの使い方について、別途調査したいと思います。 https://www.npmjs.com/package/@knight-lab/timelinejs まとめ デジタル・ヒューマニティーズ(DH)の分野で広く活用されているTimelineJSやStoryMapJSについて、データの視覚化や物語の構築を行う際の参考になりましたら幸いです。 なお、これらのツールはプログラムを介さず、Googleスプレッドシートを入力として、可視化アプリを作成することもできます。こちらも参考になりましたら幸いです。 https://timeline.knightlab.com/ https://storymap.knightlab.com/

2024年11月7日 · 1 分 · Nakamura

Omeka Sの特定のvocabularyのプロパティ一覧を取得する

概要 Omeka Sの特定のvocabularyのプロパティ一覧を取得する方法です。 方法 以下を対象にします。 https://uta.u-tokyo.ac.jp/uta/api/properties?vocabulary_id=5 次のプログラムにより、プロパティ一覧をMS Excelに書き込みます。 i i u p d w r f # d d m m r a a h e o f f p p l g t i m r D . o o e a l o a = t r r = _ e r d i d p v d f t o t t = l e a f a a e a o a p _ " i 1 s t t g _ t r F d e p r h 1 s : p a l a e k a r . x a e t t o e b _ e k i a D c n q t n = n r l + y i e f m a e d u p = s ( e i = s n y e t l a e s e r d a s k に a ( s s : [ e a k t 1 = d i e d 変 F " t / ] = s t . a n y e 換 r a a s / p a e [ t l a r s u r o ) x " a r i m c t e n t @ _ e n d e h p a q s = e c l m a ( i d . u e = n o i o d t d v u e . d n s v a a a e - s j 0 ( t t e t [ t s t t s : d e : _ a k a h o s o a x k : e _ u k . n t t e y l b y g ( a " y ] i . o e ) ) , s s x . t : t l a ( " ) s c u @ x . r i " j l d , p " / + , i u n t " " d a & @ e / p t x a a y = p g p F i e e a / = " l p " , s r e o + " ) p o e s : r t v t r o i ( c e p a s a b ? g u v e l o ) a c ) r a y b " u , l a " r o y : _ i i d d " = , 5 " " o : l o c a l _ n a m e " ] 結果 以下のようなMS Excelが得られます。 ...

2024年11月5日 · 6 分 · Nakamura

Omeka SのCustom Vocabモジュールを使って、他のアイテムを関連づける

概要 Omeka SのCustom Vocabモジュールを使って、他のアイテムを関連づける機会がありましたので、備忘録です。 背景 以下の記事で、カスタム語彙の使い方を説明しました。 今回は、文字列やURIsでなく、アイテムを関連づけてみます。 アイテムセットの作成 まず、関連付け対象とするアイテムを格納するアイテムセットを作成します。 今回は、「二次利用条件表示」というアイテムセットを作成します。 「二次利用条件表示」に関するアイテムの作成 以下のように、アイテムを作成しました。 ここのアイテムは、以下のように、タイトルや内容記述、識別子などを与えます。 カスタム語彙の作成 以下のように、カスタム語彙を作成します。ポイントとして、Vocab typeにおいて「アイテム」を選択し、アイテムにおいて、前のステップで作成したアイテムセット「二次利用条件表示」を選択します。 リソーステンプレートの作成 リソーステンプレートを作成して、データタイプにおいて、作成したカスタム語彙を選択します。 任意のアイテムの作成 任意のアイテムの作成において、先に作成したリソーステンプレートを選択します。結果、以下のように、設定したアイテムセットのアイテムから値を選択するようになります。 利点 今回説明したような方法を採用することで、指定した項目から値を選択する形式になり、表記揺れを防ぐことができます。また、その値をアイテムとして設定することで、メタデータの管理を一元化することが可能です。例えば、二次利用条件表示の内容を更新したい場合は、該当する二次利用条件表示のメタデータのみを更新すればよく、関連付けた複数のアイテムを個別に更新する必要はありません。 これは、Drupalにおけるタクソノミーのような使い方に該当します。 まとめ Omeka Sの利用にあたり、参考になりましたら幸いです。

2024年11月4日 · 1 分 · Nakamura

XSLTを使ってIIIFとTEIの対照表示を実現する

概要 XSLTを使ってIIIFとTEIの対照表示を実現してみる機会がありましたので、備忘録です。 結果は以下からご確認いただけます。「校異源氏物語テキストDB」を利用しています。 https://kouigenjimonogatari.github.io/xml/xsl/01.xml 背景 TEI/XMLの可視化にあたって、これまでは、TEI XMLをHTMLに変換してブラウザ上で表示するためのJavaScriptライブラリであるCETEICeanを使うことが多かったです。 これらの取り組みではJavaScriptのフレームワークと合わせて、柔軟な開発が可能でした。 しかし、この方法ではTEI/XMLとは別に、ビューアのデプロイが必要であるなど、課題を感じる点もありました。 対策 そこで、XSLTを使ったIIIFとTEIの対照表示に取り組みました。以下のXSLファイルを用意しました。実装にあたっては、ChatGPTを利用しました。 https://github.com/kouigenjimonogatari/kouigenjimonogatari.github.io/blob/master/xsl/mirador.xsl そして、XMLファイルからは、以下のように参照します。相対パスとなっている点は、適宜読み替えてください。 < < < ? ? T < x x E t < m m I e f < l l i i t < < - x H l i t a v s m e e t i u e t l a D l t t r y n d e e l h s l s e s S e o i e = r c t > r o s " > > m 校 > n h h t 異 池 = e t > 源 田 " e t 氏 亀 1 t p 物 鑑 . : 語 < 0 t / ・ / " y / き a p w り u ? e w つ t > = w ぼ h " . < t t r e e t > x i i t - t / c l x . e s o > l r " g / h n r s e / f 1 = . " 0 . " . > / . . / x s l / m i r a d o r . x s l " ? > これにより、以下のようなXMLファイルをブラウザで表示すると、 ...

2024年11月2日 · 2 分 · Nakamura