IIIF Content State APIを試す

概要 IIIF Content State APIを試す機会がありましたので、その備忘録です。 https://iiif.io/api/content-state/1.0/ IIIF Content State APIはカレントアウェアネス-Rで以下のように説明されています。 “IIIF Content State API”は、回転角度やページ画像上の表示箇所等、オブジェクトの表示を詳細に指定したリンクを生成できると述べられています。 https://current.ndl.go.jp/car/45832 試す 「秀英体・活版印刷デジタルライブラリー」がIIIF Content State APIを提供してくださっています。 https://archives.ichigaya-letterpress.jp/library/ 以下に記載があります。 https://archives.ichigaya-letterpress.jp/library/help 以下、利用例について説明します。 アイテムの詳細画面 例えば、以下のページにアクセスします。 https://archives.ichigaya-letterpress.jp/library/items/084cef1f7ddc そして、IIIF Curation Viewerへのリンクをクリックします。 矩形の選択 IIIF Curation Viewerを使って、矩形を選択します。 IIIF Curation Viewerの使い方については、以下を参考にしてください。 http://ch-suzuki.com/icpt/index.html 少し手順を省きますが、以下の情報を取得できます。 https://archives.ichigaya-letterpress.jp/api/presentation/2/084cef1f7ddc/canvas/2#xywh=2148,813,312,304 上記は以下の形式になっています。 <資料のキャンバスURI>#xywh=<画像のX座標>,<画像のY座標>,<画像の幅>,<画像の高さ> base64エンコード 例えば、以下のサイトにアクセスします。 https://www.base64encode.org/ そして、先に取得した情報と当該アイテムのマニフェストURIを使って、以下のJSONをエンコードします。 { } " " " } i t p ] d y a " p r : e t " " " O i t " : f d y h " " p t " : : e t C " p a [ " : s n { h : t " / a t M / s p a a " s n r , : i c / f h / e i a s v r t e c " s h . i i v c e h s i . g i a c y h a i - g l a e y t a t - e l r e p t r t e e s r s p . r j e p s / s a . p j i p / / p a r p e i s / e p n r t e a s t e i n o t n a / t 2 i / o 0 n 8 / 4 2 c / e 0 f 8 1 4 f c 7 e d f d 1 c f / 7 c d a d n c v / a m s a / n 2 i # f x e y s w t h . = j 2 s 1 o 4 n 8 " , , 8 1 3 , 3 1 2 , 3 0 4 " , 結果、以下の文字列が得られます。 ...

2023年9月21日 · 2 分 · Nakamura

CantaloupeのAccess Controlを試す

概要 CantaloupeのAccess Controlを試しましたので、備忘録です。 https://cantaloupe-project.github.io/manual/5.0/access-control.html Bearer認証 以下を参考にしました。 https://cantaloupe-project.github.io/manual/5.0/access-control.html#Tiered Access All or Nothing Access 認証情報が間違っている場合には、エラーを返却するものです。 以下のように、tokenがtestの場合は返却するようにしました。 d e f e n a h i e r } d u e f n e t a t i e d t h d h o f n u o e e k r d r ' ' r r a e t e n s c i d n o t t h z = e k u { a a e r = e r t l ( c & n n u l o o . h s e p n s e = t _ n t t t a = r c g i e . a d u o e o x s v r e " e d ' n t e a t r t e s [ l l _ [ e ' = ' e u w 7 s > = r c e i . t = e t s t . " > ' { q { . h h B } u f ? e 4 e ) e | i ( a 0 a s n r ' d 1 r t a s B e , e _ m t e r r h e a . e , r l c a e e h d v r n a e a g r r l t s s u h e ' e t ] | - = " n 1 U a ] T m F e - . 8 d " o ' w n c a s e = = ' a u t h o r i z a t i o n ' } 上記の挙動を確認するGoogle Colabを作成しました。 ...

2023年9月21日 · 5 分 · Nakamura

Cantaloupeでinfo.jsonに値を追加する

概要 以下を参考に、Cantaloupeが返却するinfo.jsonに値を追加してみました。 https://cantaloupe-project.github.io/manual/5.0/endpoints.html 方法 上記のページを参考に、extra_iiif3_information_response_keysを以下のように修正してみました。 d e f e n e { } d x t ' ' ] ' ' ' r r s , e i x a i e { } x p m _ g r i t p i h v ' ' ' ' f c ' i t i @ @ p l ' ' i s c i t r a f ' e d y o b = = = 3 ' ' p f e > > > _ = : e i l i > = ' l ' c c c n > ' : e : o o o f ' h ' n n n o h [ t ' : ' t t t r t t A L e e e m t p u ' o x x x a p s t h g t t t t : : h t . . . i / / C t I d d d o / / o p n i i i n e e o : ' g g g _ x x k ( ( ( r a a i / ' ' ' e m m e i m m m s p p S i e e e p l l e i t t t o e e r f a a a n . . v . d d d s o o i i a a a e r r c o t t t _ g g e / a a a k / / 1 a ' ' ' e l a ' p , , , y i u , i s c t / ' ' ' ( e h a e i x o n / u x p m p s l t i t p t e o h f c _ i . g / ' ' s o h i 1 ) ) t n t n / , , r s m ' l i l , o n = ' g g , i ' { n ) } ' ) , 結果、以下のようなinfo.jsonを取得できました。 ...

2023年9月20日 · 4 分 · Nakamura

Cantaloupeのoverlayを試す

概要 Cantaloupeが提供するoverlayの機能を試します。 https://cantaloupe-project.github.io/manual/5.0/overlays.html BasicStrategy BasicStrategyでは、cantaloupe.propertiesの設定に基づき、重ね合わせを行うようです。 以下のように、画像に画像を重ねることができます。以下のいらすとやさんの画像を使わせていただきました。 https://www.irasutoya.com/2020/12/blog-post_279.html 後述する設定ファイルでpositionにbottom rightを設定したため、以下のように、右下に指定した画像が表示されました。 cantaloupe.propertiesのoverlays.BasicStrategy.enabledとoverlays.BasicStrategy.imageを修正しました。 # # # # # # # # # # # v v v v # O # C ` u e W e ` e A e # V # o o s r h r i r b r # E # n v e l e l m l s l # R # t e a t a a a o a # L # r r a y h y g y l y # A # o l s e s e s u s # Y # l a d . r . ` . t . # S # s y e s B B e B # # s l t t a o a a # # h . e r o s r s p s # # o B g a i i a i # # w a a t e c ` c t c # # s t e n S s S h S # # i e g a t t t t # # v c y b r r r o r # # e S m l a i a r a # # r t e = e t n t t # # l r t e g e U e # # a a h B g ` g R g # # y t o a v y . y L y # # s e d s e . . . # # g . i r e t o i # # a y c l n y f m # # r . ( S a a p a # # e * S t y b e t g # # ` e r s l h e # # c e a e = e # # o k t u d = # # n e t e s i # # f y h g i = m v h # # i s e y n a e t # # g g t g r t # # u i u r e l p # # r n s t u a s # # e e h e y : # # d t r e / # # . h # i / # # i m B m 1 # # ` s a a f a . # # B n s a g b # # a s u i l e p # # s e a c s . . # # i c l S e b # # c t . t M l # # S i ) r u o # # t o a s g # # r n t t s # # a . e p # # t g b o # # e ` y e t # # g S . . # # y c a c # # ` r o # # i P m # # w p N / # # i t G - # # l S 8 # # l t f F # # r i U # # u a l E # # s t e z # # e e . 6 # # g v # # t y B # # h ` n # # e o # # w Q # # i / # # l X # # l 7 # # z # # M # # V A u h Q M I / A A A A A A A B c Z 0 / V I 1 Z 9 e N 7 6 p I j 2 r f H s h v e N b F o M K u b X Y T p A C N c B G A s Y H Q / s 4 0 0 / b a b y _ r o l e _ t o w e l _ u t s u b u s e . p n g ScriptStrategy ScriptStrategyでは、cantaloupe.propertiesのdelegate_script.pathnameに設定したスクリプトのoverlay関数に基づき、重ね合わせを行うようです。 ...

2023年9月20日 · 9 分 · Nakamura

Cantaloupeの管理画面を有効化する

概要 Cantaloupeの管理画面を有効化する方法です。以下のようなサーバ情報を閲覧できました。 設定方法 cantaloupe.propertiesの以下の箇所を編集します。 # e e e n n n E d d d n p p p a o o o b i i i l n n n e t t t s . . . a a a t d d d h m m m e i i i n n n C . . . o e u s n n s e t a e c r b r r o l n e l e a t d m P e = a = n = < e t パ l r a ス , u d ワ e m ー a i ド t # n > / f a a d l m s i e n . 結果、以下のようなURLにアクセスして、Basic認証画面が表示されればOKです。 ...

2023年9月20日 · 1 分 · Nakamura

EC2に立てたCantaloupeをHTTPS対応する

はじめに 以下の記事で、EC2にCantaloupeを立てる方法を記載しました。 今回は、独自ドメインの設定とHTTPS対応を行います。 独自ドメインの設定 今回、cantaloupe.aws.ldas.jpというドメインを54.172.71.20に割り当てます。Route 53を使う場合、以下のように設定できます。 SSL証明書の取得 s a c u p e d t r o t b s i o u n t s t c a e l r l t o c n e l r y t b o - t s t a n d a l o n e - d c a n t a l o u p e . a w s . l d a s . j p r S E P h a ( W s p d E ( A R S C K T T C I o a n ( l t g Y o h a e F Y c e u e e h h e f o v t E e t r ) u a r v F ) c q c r y i e r t i e n a p e e l r t e e o u c t s s t y D D @ n r t s s e s d e n l n s u e e i i e b o o o i g e e : / e o e / n s s f s c o u n n p e r / i ( y y r p w ( t t s i e f t a a - d m r / n N o o s s N i f c s r i l t t 1 e a ' e l ) u u o , ) r n u a a t l h i i i 7 b i c a e o o r f C o e g l t v i e a k n n 2 u l ' d t r : b e c : g l e e f s s e g g - g s d e e t r a i a y d i 3 a t t e e Y m h t m Y s i c w s C t t 1 l d o h n r w a e b p t c r s a a i e e o o - o d e c i i o a e e e t t l t r 6 g r c r t l l L t i r r c s : e l t I E 2 e a T y o l e ? g e t e a u b S F - t s n e p i a t n d i i v e b p o R F 6 o s c r t r n d ' W s . f v e x e t G : 1 e m . e g d s e , i e d p a , : ( l s o g , r ' c d i u / v u ) r i e E d a a a r p s p h a s : o g s o s n n t c t e d c l L o r e f / t n s c l d e e : s a h e e m / d x d e c r i r t e a t e l x S o r e w y k w f t / / o e d s ' / o f x e c i p e a o i e e n d u e s u g @ r u w y t t y r f t t l b r g v m i o h t s i c c 2 w e c E u l m i e t u p o c c / / 0 h d o n n e u a c n h r t r t a a l l 2 e n c t t r i e t h o s o n t e e 3 n t s r u s g l s t f e j e t e t t - a i y # e e . a / h i e n s a . s s 1 t s d p n n c t L e r E c d u l e e 2 h k e t c c t o E s l t p o n n - e r : e r m - A t e y p u c c 1 t r y r S C c a o o p r r 9 c o s t p e A M c t n u r e y y . e u b t n - E e r d t . p p r a p h h o / e v r o e a t t t u p t t t l w 1 s t n t m d w / / i t o t t e a . e i i h a i s l l f o r p p c t l 3 r f c e i g . i i i m t s s e s - v i l i l v v c a i : : r e a S e c F n t d e e a t n / t n n e r a r o a a a / / t i g / o c d p . t o n b l s c c e c l e n r t e n - o . a a a o e f l y s e D t p u f j n n r l u t f y p e m o i i r t r p t t e l r s . t c b s e o e a a n y e o . u e y r f o e l l e w n r - l r r o s i u d o o w r o c g s o i - u u F t r o u u s e r r / t g t 2 c o m p p . n k y d a y 1 a c u o w . e e e p o n - g e n r o . . w b t n d n 2 r s d g r a a y . a a o 0 e s a a k w w t : o t l t 2 e f t n s s h r e o i 2 ? u i i e . . i g - n c . l o z n l l s / l e e p l n a c d d d e s d y , t r a a c o - ) f i y s s e n d . i a o p . . r a s n t j j t t c Y s f i p p i e a o u o t n / / f n u e u h g f p i t d n a u r c a m , d t t l i a l u i h l v t o s t n e c k e u t o g h e p w a y i e e i . n . b n p a , . e t w p m h s e e . m l b d a a c s k . g j r p o u n d . Webサーバの設定: Nginxのインストール a v p i t / i e n t s c t / a n l g l i n n x g / i s n i x t e s - a v a i l a b l e / c a n t a l o u p e . a w s . l d a s . j p 設定 ...

2023年9月20日 · 11 分 · Nakamura

NDLOCRおよびNDL古典籍OCRのver.2を用いたノートブックを作成しました。

お知らせ 2026-02-24 ! 本ページで提供しているノートブックは今後更新されません。 NDLOCRについては、デスクトップアプリケーションおよびコマンドラインツールとして簡易に利用可能な「NDLOCR-Lite」が公開されました。今後は、こちらをお使いいただけますと幸いです。 https://github.com/ndl-lab/ndlocr-lite 2025-04-02 現在、不具合が発生しています。修正が完了するまで、ご使用をお控えください。 不具合を修正しました。 2025-03-21 NDL古典籍OCRについては、デスクトップアプリケーションとして簡易に利用可能な「NDL古典籍OCR-Lite」が公開されました。今後は、こちらをお使いいただけますと幸いです。 https://github.com/ndl-lab/ndlkotenocr-lite 概要 NDLOCRおよびNDL古典籍OCRのver.2を用いたノートブックを作成しました。 それぞれ以下のリンクからお試しいただけます。 NDL OCR https://colab.research.google.com/github/nakamura196/000_tools/blob/main/NDLOCR_v2の実行例.ipynb NDL古典籍OCR https://colab.research.google.com/github/nakamura196/000_tools/blob/main/NDL古典籍OCR_v2の実行例.ipynb 最新のノートブックとは異なりますが、ノートブックの使い方については以下の動画をご確認ください。 https://youtu.be/46p7ZZSul0o 以下、詳細について説明します。 背景 NDLOCRとNDL古典籍OCRについて、2023年にver.2が公開されました。ver.1とver.2の違いについては、以下のサイトを参考にしていただきたいですが、特に行単位で認識した文字列の読み順の付与性能が向上しています。 https://lab.ndl.go.jp/data_set/r4ocr/r4_software/ https://lab.ndl.go.jp/data_set/r4_koten/ 今回作成したノートブックでは、これらver.2のOCR処理プログラムを採用しています。 入力方法 これまでのノートブックと同様、以下のオプションを提供します。 画像 単一の画像ファイルのURLを指定する場合 単一の画像ファイルをアップロードする場合 複数の既にダウンロード済みの画像ファイルを対象にする場合 PDF 単一のPDFファイルのURLを指定する場合 単一のPDFファイルをアップロードする場合 単一の既にダウンロード済みのPDFファイルを対象にする場合 IIIF IIIFマニフェストファイルのURLを指定する場合(本記事執筆時点ではPresentation API v2のみ) 実行結果 上記の各オプションを実行後、以下のような画面が表示されます。 具体的には、以下の2種類です。 Googleドライブへのリンク(「以下に出力しました。」の部分) 認識結果を確認するビューアへのリンク(「認識結果は以下です。」の部分) それぞれについて説明します。 Googleドライブへのリンク 以下のように、4つのフォルダが作成されます。 txtおよびxmlはNDLOCRおよびNDL古典籍OCRの一部で出力されるデータです。 pdfは認識結果を透明テキスト付きPDFで出力します。末尾に_textがあるものとないものの2種類が出力されます。_textがついているPDFは、以下のように、確認用にテキストを赤字で表示します。 iiifは後述するビューアで使用するデータです。jsonやxmlファイルが格納されていますが、主に開発者向けの情報になります。 認識結果を確認するビューアへのリンク 以下のようなビューアが表示されます。認識結果のテキストを画像に重ね合わせることで、OCRの精度などを確認できます。 本ビューアについて、技術的な情報については別の記事で紹介できればと思います。 まとめ ノートブックについて、不具合や不足機能があるかと思いますので、随時ご連絡いただけますと幸いです。 NDLOCRおよびNDL古典籍OCRの活用にあたり、お役に立ちましたら幸いです。

2023年9月20日 · 1 分 · Nakamura

IIIFイメージサーバの一つであるCantaloupeをEC2で起動する

概要 IIIFイメージサーバの一つであるCantaloupeをEC2で起動する方法の備忘録です。 https://cantaloupe-project.github.io/ 加えて、画像のダウンロードサイズに制限を加えるDelegate Methodsの一例についても紹介します。具体的には、フルサイズの画像を/full/full/で取得しようとした際、エラーが出てしまうケースへの対応を行います。 https://cantaloupe-project.github.io/manual/5.0/access-control.html Cantaloupeのセットアップ EC2インスタンスの作成 プラットフォームをUbuntu、インスタンスタイプをt2.medium、ストレージを8GB、に設定したEC2インスタンスを作成しました。 結果、以下の「パブリック IPv4 アドレス」を持つEC2インスタンスが作成されました。 54.172.71.20 ssh 起動したEC2インスタンスにsshで接続します。接続後、以下のコマンドにより、rootユーザのパスワードを設定します。 s p u a d s o s w s d u javaのインストール 以下のコマンドなどにより、javaをインストールします。 a a p p t t - g i e n t s t u a p l d l a t d e e f a u l t - j r e cantaloupeのダウンロード 以下のコマンドなどにより、cantaloupeをダウンロードします。 ...

2023年9月19日 · 9 分 · Nakamura

Mirador2のPhysical Document Rulerを試す

概要 IIIFのLinking to External ServicesにPhysical Dimensionsがあります。 https://iiif.io/api/annex/services/#physical-dimensions 以下のように説明されています。 For digitized objects, it is often useful to know the physical dimensions of the object. When available, they allow a client to present a ruler, or other rendition of physical scale, to the user. (機械翻訳)デジタル化された物体の場合、その物体の物理的な寸法を知ることはしばしば有用である。利用可能な場合、クライアントが定規やその他の物理的な縮尺をユーザーに提示することができます。 Mirador ver.2とver.3では、それぞれ以下のプラグインが存在します。 ver.2 https://github.com/dbmdz/mirador-plugins#physical-document-ruler ver.3 https://github.com/ubleipzig/mirador-ruler-plugin 残念ながらver.3のプラグインをうまく導入することができませんでした。そこで、Mirador2を対象に、Physical Document Rulerを使用する方法を説明します。 結果、例えば東京大学史料編纂所所蔵の大型絵図である正保琉球国絵図写(請求記号:S島津 76-2-4、法量:354.1×731.0cm)を対象にした場合、以下のように定規を表示させることができます。 ソースコードの準備 以下のリポジトリからソースコードを取得できます。 https://github.com/nakamura196/mirador2 Mirador2のプラグインを格納する以下のフォルダmirador/pluginsに対して、以下で公開されているPhysicalRulerのソースコードをコピーしています。 https://github.com/dbmdz/mirador-plugins/tree/main/PhysicalRuler そして、index.htmlで以下のように参照しています。 < b / o < < < < b d d s s s o y i c c c s d > v r r r c y i i i r > i p p p i d t t t p = t " s s t > v r r y i c c p e = = e w " " = e m m " r i i t " r r e > a a x < d d t / o o / d r r j i / / a v m p v > i l a r u s a g c d i r o n i r s p . / t m P " i h > n y . s j i s c " a > l < R / u s l c e r r i / p p t h > y < s / i s c c a r l i R p u t l > e r . j s " > < / s c r i p t > データ マニフェストファイルの各Canvasに対して、serviceを追記します。physicalScaleは実寸(cm)をピクセル数で割った値を用いています。 ...

2023年8月29日 · 4 分 · 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

Mirador 3のmirador-annotationsプラグインとSimpleAnnotationServerを試す

概要 mirador-annotationsはアノテーションの作成ツールを追加するMirador 3のプラグインです。 https://github.com/ProjectMirador/mirador-annotations 今回、以下のSimpleAnnotationServerとの組み合わせを試してみましたので、その備忘録です。 https://github.com/glenrobson/SimpleAnnotationServer SimpleAnnotationServerの準備 以下のGetting Startedの通りに進めます。 https://github.com/glenrobson/SimpleAnnotationServer#getting-started http://localhost:8888/index.html にアクセスすると、以下の画面が表示されます。 エンドポイントは http://localhost:8888/annotation/ のようで、登録済みのアノテーションの一覧(はじめは空)が表示されます。 このエンドポイントをMirador 3から利用することになります。 Mirador 3の準備 ソースコードから 以下のサイトからソースコードをクローンして立ち上げます。 https://github.com/ProjectMirador/mirador-annotations g c n n i d p p t m m m c i i r l r u o a # n n d e o n s r p t h - m a t a r t n i t p n s o : t - / a f / t o g i r i o c t n e h s u が b 必 . 要 c か o も m し / れ P ま r せ o ん j e c t M i r a d o r / m i r a d o r - a n n o t a t i o n s http://localhost:3000/ にアクセスすると、以下の画面が表示されます。 ...

2023年8月18日 · 14 分 · Nakamura

【Omeka S モジュール紹介】IiifPresentation:IIIF Presentation APIの追加

概要 IIIF Presentation APIを追加するIiifPresentationモジュールを試しましたので、その備忘録です。 https://omeka.org/s/modules/IiifPresentation/ なお、簡単に試した限りでは、以下のIIIF Serverモジュールが提供する機能と大きな違いはないように思いました。 https://omeka.org/s/modules/IiifServer/ 違いとして、今回のモジュールはOmeka Teamによって開発されたモジュールであり、さらに細かな設定をせずに利用できる点が利点として考えられました。 インストール 通常のモジュールのインストール手順と同じです。 使い方 アイテムIDが8であるリソースを対象に、本モジュールが提供する機能を試してみます。 以下がベースのURLです。 https://omekas.aws.ldas.jp/omeka4/ 以下のURLにアクセスすると、IIIF manifestを取得できます。 https://omekas.aws.ldas.jp/omeka4/iiif-presentation/3/item/8/manifest 次に、以下のURLにアクセスすると、Miradorのビューアへリダイレクトされます。 https://omekas.aws.ldas.jp/omeka4/iiif-presentation/3/item/8 その他、複数のアイテムIDやアイテムセットのIDを指定することで、IIIFコレクションの取得や閲覧が可能なようです。詳細については、以下をご確認ください。 https://omeka.org/s/docs/user-manual/modules/iiifpresentation/ まとめ IIIFモジュールやビューアに関するモジュール(MiradorやUniversal Viewer)をインストールせずに、本モジュールのみでマニフェストの生成とビューアによる閲覧を実現できる点は有効だと思いました。 一方、カスタマイズ性はIIIFモジュールなどのほうが優れているように思われますので、用途に応じて使い分けるのがよさそうに思いました。 他の方の参考になりましたら幸いです。

2023年7月20日 · 1 分 · Nakamura

Omeka Classic IIIF Toolkitで使用されているMiradorを2.7にアップデートしました。

概要 Omeka Classic IIIF Toolkitで使用されているMiradorを2.7にアップデートしました。以下のページでソースコードをご確認いただけます。 https://github.com/nakamura196/IiifItems また、以下のURLから、zipファイルをダウンロードできます。 https://github.com/nakamura196/IiifItems/releases/download/1.1.1/IiifItems-1.1.1.zip できるようになること Mirador 2.7を使用することにより、IIIFのImage APIに非対応の画像でもビューアに表示することが可能になります。これにより、一般に公開されている画像に対しても、Miradorを用いたアノテーションの付与および管理が可能になります。 この利点を活かして、画像のURLを含むCSVファイルを用意して、Omeka Classicに登録する以下の記事を執筆しています。 まとめ Omeka Classic IIIF Toolkitの利用にあたり、参考になりましたら幸いです。 なお、Omeka Classic IIIF Toolkitを開発してくださったトロント大学図書館の方々に感謝いたします。

2023年7月20日 · 1 分 · Nakamura

Omeka Classic IIIF Toolkitにデータを一括登録する

概要 Omeka Classic IIIF Toolkitにデータを一括登録する方法を説明します。Omeka Classic IIIF Toolkitのセットアップについては、以下を参考にしてください。 また、以下の記事の内容を発展させ、excelデータを入力データとして、より簡便に使用できるようにしたものです。 excelファイルの準備 以下のようなexcelファイルを準備します。 https://github.com/nakamura196/000_tools/blob/main/data/sample.xlsx 「collection」「item」「annotation」の3つのシートを用意します。 collection manifest_uri https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json item title canvas_uri width height image_url manifest_uri 校異源氏物語. 巻一 [4] https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 6890 4706 https://www.dl.ndl.go.jp/api/iiif/3437686/R0000004/full/full/0/default.jpg https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json 校異源氏物語. 巻一 [4] https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 6890 4706 https://www.dl.ndl.go.jp/api/iiif/3437686/R0000005/full/full/0/default.jpg https://d1fasenpql7fi9.cloudfront.net/v1/manifest/3437686.json annotation chars x y w h canvas_uri tag 3125 4898 4008 241 79 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 序 2910 868 147 140 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 913.36 たH 2228 226 586 156 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 或は撮影して、 897 3517 83 434 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 一 810 3528 30 17 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/4 序 6018 1055 65 65 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 二 6025 3535 49 39 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 殆んどあらゆる現存貴重資料に及び、 5889 707 86 1090 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 一字をも忽にしない細緻な〓究は、 5889 1837 86 1012 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 フイルム等 5501 3614 76 323 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 大島雅太郞氏· 916 3491 89 436 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 序 807 1048 65 61 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 三 815 3517 61 57 https://www.dl.ndl.go.jp/api/iiif/3437686/canvas/5 python 以下のライブラリをインストールします。 ...

2023年7月20日 · 2 分 · Nakamura

Mirador3プラグイン開発: ウインドウをコピーする

概要 Mirador3のプラグインとして、ウインドウをコピーするプラグインを作成しました。 なお本機能は以下のプラグインですでに提供されているものです。 https://github.com/ProjectMirador/mirador-plugin-demos そのため、本プラグインはプラグインの開発手順を学ぶために作成しています。そのような観点で、本プラグインが参考になりましたら幸いです。 画面例は以下です。 ソースコードは以下です。 https://github.com/nakamura196/mirador-copy-window-plugin デモサイトは以下です。 https://nakamura196.github.io/mirador-copy-window-plugin/ 開発メモ 本プラグインの開発にあたり、まず以下のリポジトリをcloneし、変更を加えていきました。 https://github.com/ProjectMirador/mirador-dl-plugin src/index.js まず以下のファイルについて、miradorDownloadをMiradorCopyWindowに書き換えました。 https://github.com/nakamura196/mirador-copy-window-plugin/blob/main/src/index.js src/MiradorCopyWindow.js 以下のファイルが主に編集するファイルです。 https://github.com/nakamura196/mirador-copy-window-plugin/blob/main/src/MiradorCopyWindow.js 本ファイルは、まず以下のファイルの内容をコピーしました。 https://github.com/ProjectMirador/mirador-plugin-demos/blob/master/src/plugins/copy-window.js まず末尾の以下の記述から説明します。 e } x p t m c m m o a o o a a r r d m p p t g e p D S e : o i t d t n s a e : ' e p t f a n a e a ' d t t T u W d : c o l i ' h P t n , C T r d o o o { o p P p w y r s T W o : o i p p n s m M d : a e o p n w m S u C a t ' o p a , m D t p i e o s T n p o e a P n t r t c o , h p T s o , P r o p s , targetとmode targetはコンポーネントを設置する場所を指定します。またmodeはコンポーネントの追加方法を指定します。modeについては、addやwrapという選択肢があるようでした。 ...

2023年7月19日 · 5 分 · Nakamura

IIIF Mirador2のアノテーション画面の説明

概要 IIIF Mirador2のアノテーション画面の使い方(の一部)を説明します。 四角形アノテーションの作成 https://www.youtube.com/watch?v=jny09nLZvLU パス(多角形)アノテーションの作成 アノテーションを終了する場合には、ダブルクリックします。 https://www.youtube.com/watch?v=4cM-6-rXL9M 既存のアノテーションの修正 https://www.youtube.com/watch?v=HlE36inbgq4 既存のアノテーションの削除 https://www.youtube.com/watch?v=STk2vjLc_-k まとめ IIIF Mirador2を用いたアノテーション付与の際の参考になりましたら幸いです。

2023年6月21日 · 1 分 · Nakamura

IIIFマニフェストファイルからPDFファイルを作成する

概要 IIIFマニフェストファイルからPDFファイルを作成する機会がありました。このソリューションとして、以下のリポジトリが見つかりましたが、うまく動かすことができませんでした。 https://github.com/jbaiter/pdiiif そこで、上記リポジトリはJavaScriptを使用していますが、今回はPythonを用いた変換ツールを作成しました。 使い方 以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/iiif2pdf.ipynb 初回インストール時に、img2pdfをインストールしますが、PILのバージョンの関係で、「RESTART RUNTIME」ボタンが表示されますので、クリックの上、再度同じセルを実行してください。 オプションとして、「IIIFマニフェストURLの指定」「画像が格納されているフォルダのパスの指定」「ローカルに存在するIIIFマニフェストファイルのパスの指定」の3種類を用意しています。 注意点として、2023年5月末時点では、IIIF Presentation API v2にのみ対応しています。v3へは今後の対応を検討しています。 まとめ IIIFからのPDFファイルの作成にあたり、参考になりましたら幸いです。

2023年5月26日 · 1 分 · Nakamura

Omeka SのImage Serverの設定について

概要 Omeka SのImage Serverは、IIIF Image APIに対応した画像配信を可能とするモジュールです。 https://omeka.org/s/modules/ImageServer/ IIIF Serverモジュールと組み合わせて使用することにより、IIIFマニフェストによる配信も可能になります。 Image Serverモジュールでは、タイル画像の作成方法を含めて、さまざまな設定が可能です。本記事では、これらの設定について、調査結果を共有します。 実験環境 今回は、Amazon LightsailのLAMPインスタンスを使用します。2 GB RAM, 1 vCPUの比較的低スペックな環境を用います。 Amazon Lightsailを用いたOmeka Sの構築方法は、以下などを参考にしてください。 また、今回は以下のスクリプトを利用しました。今回検証する「Image Server」モジュールの使用に必要な、関連モジュールを合わせてインストールします。 https://github.com/nakamura196/omeka_aws/blob/main/2023-05-25.sh タイル画像の作成に関する設定 ImageServerモジュールのインストール後、以下にアクセスすると、ImageServerの設定画面にアクセスできます。 /admin/module/configure?id=ImageServer 以下の画面の「Tiling service」の箇所で設定を行うことができます。 Image processor項目 本モジュールの説明ページでは、vipsのインストールが推奨されていました。上記のスクリプトでも、以下によって、vipsをインストールしています。 s u d o a p t i n s t a l l - n o - i n s t a l l - r e c o m m e n d s l i b v i p s - t o o l s そのため、上記設定画面の「Image processor」項目の初期値に基づき、タイル画像の作成には、以後vipsが使用されます。 ...

2023年5月25日 · 4 分 · Nakamura

Drupal: 異なるコンテンツタイプのコンテンツを相互にリンクさせる

概要 異なるコンテンツタイプのコンテンツを相互にリンクさせる方法を調べたので、その備忘録です。 具体的には、以下のitem 1がimage 1というコンテンツをiiif_image2というフィールドを介してつながっています。 上記に対して、image 1というページに、item 1へのリンクを設けることが目的です。 この実現にあたり、以下の記事を参考にしました。 https://drupal.stackexchange.com/questions/255447/view-for-entity-reference-reverse-backwards-forwards 方法 ビューの追加 /admin/structure/views に移動し、 +ビューを追加 「Create a block」オプションをチェックします ビューの設定 次のページで、Advancedの設定を行います。 リレーションシップ field_iiif_image2のリレーションシップを追加します。これは、2つのコンテンツタイプを関連付けるために重要です。 Require this relationshipにチェックを入れる必要があります。このフィールドを持たない場合には表示しない、という挙動になるものと理解しました。 コンテキストフィルター 次に、現在のコンテンツタイプのランディングページにコンテキストフィルターを追加します。このようにして、ビューで使用される実際のノードIDを取得します。これで、field_iiif_image2で同じノードIDを持つページのみを見つけることができます。 IDで探す(コンテンツ) デフォルト値を提供-> URL からのコンテンツ IDにチェックを入れます 次のような結果になります。 Update previewの箇所で、メディアのノードID(ここでは、62602)を入力してみます。本メディアが参照されているアイテムへのリンクが表示されます。 ブロックの追加 以下にアクセスします。 /admin/structure/block 例えば、「Content」の横の「Place block」ボタンを押します。 /node/*に配置してみます。 結果、冒頭のように、当該imageが属するitemを表示することができます。 まとめ 使用している用語に統一性がなく、わかりにくい点が多く恐縮ですが、参考になりましたら幸いです。

2023年4月20日 · 1 分 · Nakamura

Drupal: カスタムRESTリソースを作成する

概要 以下を参考に、カスタムRESTリソースを作成しました。 https://www.drupal.org/docs/drupal-apis/restful-web-services-api/custom-rest-resources 上記の記事の通り進めることで、以下のURLから、JSONの結果を得ることができました。 /demo_rest_api/demo_resource { } " m e s s a g e " : " H e l l o , t h i s i s a r e s t s e r v i c e " REST UIモジュール 上記の記事において、以下の記載がありました。 If you are using the REST UI contrib module, you should now be able to see it in the list of available endpoints and you should be able to configure the GET method. ...

2023年4月20日 · 6 分 · Nakamura