【Omeka S】IIIF Serverモジュールにおけるattributionの設定方法

Omeka SのIIIF Serverモジュールでは、様々な設定を行うことができます。その一つとして、attributionの設定があります。 以下に示すように、Default attributionに入力した値が、IIIFマニフェストファイルなどのattribution項目に表示されます。組織名など、適切な値に変更することをお勧めします。 または、上記で示した項目の一つ上にあるように、attributionの値を入力するプロパティを指定することで、アイテム毎にattributionの値を変更することもできます。 IIIF Serverモジュールを利用される際の参考になりましたら幸いです。

2022年4月11日 · 1 分 · Nakamura

Node.js で XSLT を実行するサンプルリポジトリを作成しました。

Node.js で XSLT を実行するサンプルリポジトリを作成しました。 https://github.com/ldasjp8/nodejs-xslt TEI/XMLファイルなどをNode.jsで処理する際の参考になりましたら幸いです。

2022年4月8日 · 1 分 · Nakamura

Omeka S Image Serverモジュールの動的タイル画像生成における画像サイズの上限設定について

Omeka SのImage Serverモジュールでは、アップロードされた画像に対して、動的にタイル画像を生成する機能があります。本機能を用いることにより、ユーザはJPG画像やPNG画像をアップロードするだけで、Omeka側でリクエストに応じたタイル画像の動的生成を行い、IIIF Image APIに準拠した画像配信を行うことができます。 ※ 一方、サーバのスペックが限られている場合などは、この動的なタイル画像生成の処理に時間がかかる場合があります。この場合には、事前にタイル画像を生成しておく、といったオプションも選択可能です。こちらについては、後述します。 この動的なタイル画像の生成機能を用いる際、Image Serverモジュールの設定画面において、画像サイズの上限が指定されています。以下の例では、20MB以下の画像に対して動的なタイル画像生成を行い、それより大きな画像に対しては行わない、という設定になります。 デフォルト値では10MBになっており、10MBより大きい画像をアップロードした場合には、この上限設定により、タイル画像の動的な生成が行われず、解像度の低い画像しか配信されません。この問題にあたったケースがありました。同様のことでお困りの方がいらっしゃれば、今回のようなケースに該当しないか、ご確認いただくことをお勧めします。 なお、本モジュールのリポジトリでは、以下のような説明がなされています。サーバのスペックが高い場合には、10MB以上の画像に対してもタイル画像の動的な生成は可能であるが、そうでない場合は、事前にタイル画像を生成しておくことが推奨されています。 In case of big files, it is recommended to use vips or the command line version of ImageMagick, that is not limited by the php memory. Furthermore, the limit of the size (10000000 bytes by default) can be increased if you have enough memory, so images won’t appear blurry even if they are not tiled. Vips bypasses this limitation. ...

2022年4月6日 · 1 分 · Nakamura

【開発編】国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。

概要 国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。使用方法を以下の記事にまとめています。 今回は、上記アプリの構築方法について説明します。 構築方法 バックエンド AWSを利用しました。また、主にSAM(Serverless Application Model)を用いて構築しています。 IIIFマニフェスト&キュレーションリストの作成 次世代デジタルライブラリーで公開されているOCR結果を反映したIIIFマニフェストおよびキュレーションリストを生成する流れは以下です。 ポイントとして、AWS Lambdaが担う処理に時間がかかっため、AWS Step Functionsを導入しています。 具体的には、AWS Lambdaは、OCR結果をIIIFマニフェストおよびキュレーションリストに変換する処理、およびその変換結果をS3にアップロードする処理を行いますが、これがAPI Gatewayのタイムアウト(29秒)に引っかかってしまいました。そのため、以下の記事を参考に、Step Functionsを組み合わせた非同期処理を採用しています。 https://dev.classmethod.jp/articles/apigateway-stepfunctions-asynchronous/ IIIF Content Search APIの構築 本アプリのもう一つの工夫点として、IIIF Content Search APIを構築しています。 https://iiif.io/api/search/1.0/ こちらについては、以下に示すシンプルな構成をとっています。S3から取得したIIIFマニフェストに対して、検索語に対応したデータ(文字列および座標情報)を返却するAWS Lambda関数を作成しました。 フロントエンド フロントエンドはNuxt.jsを用いて開発しています。ソースコードは以下です。GitHub Pagesを用いて公開しています。 https://github.com/ldasjp8/ndl-ocr-iiif Step Functionsを実行後、定期的(3秒ごと)にステータスを取得し、SUCCEEDEDとなれば、MiradorとCuration Viewer(CODH提供)へのリンクを表示します。 Miradorについては、以下に示すように、デフォルトですべてのアノテーションを表示するhighlightAllAnnotations: true、かつ、サイドパネルでアノテーションを表示するdefaultSideBarPanel: 'annotations'ようにしています。 https://github.com/ldasjp8/ndl-ocr-iiif/blob/3b474ea1cb960a4d2e322ba04e131c11ed70529b/pages/_id/mirador/index.vue#L34-L40 まとめ AWS勉強中の身ですが、他の方の参考になる部分がありましたら幸いです。

2022年4月4日 · 1 分 · Nakamura

国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。

概要 国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリを作成しました。 以下のURLからお試しいただけます。 https://static.ldas.jp/ndl-ocr-iiif/ 使い方 入力フォームに、「次世代デジタルライブラリー」で公開されている資料のIDを入力します。 しばらくすると、「Mirador」とCODHが公開する「Curation Viewer」のボタンが表示されます。それぞれのビューアで、OCR結果をご確認いただけます。 Miradorでの表示例 特に、「Mirador」については、「IIIF Content Search API」にも対応し、資料内検索が可能です。 https://iiif.io/api/search/1.0/ Curation Viewerでの表示例 まとめ 本記事では本アプリの使い方について説明しました。別の記事では、本アプリの構築方法について説明したいと思います。

2022年4月3日 · 1 分 · Nakamura

AWS Lambda + Docker + pyvipsを用いたPyramid Tiled Tiffファイルの作成

概要 AWS LambdaとDockerとpyvipsを用いて、S3に格納された画像から、Pyramid Tiled Tiffファイルを作成するイメージを作成しました。 Amazon ECR Public Galleryは以下です。 https://gallery.ecr.aws/nakamura196/lambda-docker-vips-python ソースコードは以下です。 https://github.com/ldasjp8/lambda-docker-vips-python 以下、使用方法について説明します。 Amazon ECRリポジトリの作成 まず、ECRリポジトリを作成します。 次に、「プッシュコマンドの表示」から、コマンドを確認して、イメージをpushします。 以下、コマンドの例です。 git clone https://github.com/ldasjp8/lambda-docker-vips-python.git cd lambda-docker-vips-python aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin XXXX.dkr.ecr.us-east-1.amazonaws.com docker build -t lambda-docker-vips-python . docker tag lambda-docker-vips-python:latest XXXX.dkr.ecr.us-east-1.amazonaws.com/lambda-docker-vips-python:latest docker push XXXX.dkr.ecr.us-east-1.amazonaws.com/lambda-docker-vips-python:latest 結果、以下のようにイメージがECRリポジトリに表示されます。 そして、以下の「イメージのURI」をコピーしておきます。 Lambda関数の作成 次にLambda関数を作成します。今回は、my-lambda-docker-vips-pythonという関数名にしました。「コンテナイメージURI」に、先ほどコピーしたURIを入力します。 そして、「関数を作成」ボタンを押して、関数を作成します。 S3 バケットの作成 今回、画像を登録するためのバケットと、上記の関数により変換した画像を格納するバケットの2つを用意します。 今回は、my-lambda-docker-vips-python-inputとmy-lambda-docker-vips-python-outputの2つを作成しました。 イベント通知設定 my-lambda-docker-vips-python-inputバケットの「プロパティ」 > 「イベント通知」から、イベント通知を作成します。これにより、S3に画像が登録された際に、上記の関数が実行されるようにします。 「イベント名」をmy-lambda-docker-vips-python-input-event、「イベントタイプ」をすべてのオブジェクト作成イベント、「送信先」の「Lambda関数」をmy-lambda-docker-vips-pythonに設定しました。 Lambda関数の設定 環境変数の設定 Lambda関数に戻り、以下のように、環境変数を設定します。 ...

2022年3月31日 · 1 分 · Nakamura

【Omeka S テーマ開発】Bootstrap 5を用いたOmeka Sテーマを公開しました。

Bootstrap 5を用いたOmeka Sテーマを公開しました。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5 以下、開発者向けの情報を含む、使用方法について説明します。 テーマの設定画面において、以下の設定が可能です。 上記の設定内容から、一部を取り上げて説明します。 Footer Content フッターに表示する文字列を入力します。以下のように、HTMLを入力することもできます。 Site Sub Title サブタイトルを設定すると、以下のように、トップページにサブタイトルが表示されます。なお、本モジュールは、「Next」モジュールが有効の場合のみ機能します。 https://github.com/Daniel-KM/Omeka-S-module-Next Top Image サイトのトップページの背景画像に使用する画像を選択します。なお、本モジュールは、「Next」モジュールが有効の場合のみ機能します。 https://github.com/Daniel-KM/Omeka-S-module-Next 当該ソースコードは以下です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/layout/layout.phtml#L68-L112 また、次のように、Nextモジュールが有効な場合のみ、isHomePage関数が使用できます。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/layout/layout.phtml#L30-L36 したがっては、Nextモジュールがインストールされておらず、トップページに使用するページのURLなどが確定している場合には、独自に$isHomePage変数に値を与える関数を使用することも可能です。 Top Button url URLを設定すると、以下のように、設定したURLに遷移する「閲覧」ボタンがトップページに表示されます。 Sort properties ソートに使用する項目を入力します。 以下のように、カンマ区切りで、Termとラベルを設定します。 本設定により、以下のように設定内容が反映されていることが確認できます。 テーマのカスタマイズ内容は以下で確認できます。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L17-L42 Body properties 検索結果の一覧画面に使用する項目を入力します。 以下のように、カンマ区切りで、Termとラベルを設定します。 本設定により、以下のように設定内容が反映されていることが確認できます。 テーマのカスタマイズ内容は以下で確認できます。 次は、テーマの設定をロードしている部分です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L44-L58 次は、ロードした設定に基づき、表示内容を修正している箇所です。 https://github.com/ldasjp8/Omeka-S-theme-Bootstrap5/blob/f9aceadfb0c50debefad080ea4bb5281b7b0a961/view/omeka/site/item/browse.phtml#L184-L200 Layout for Browse Pages デフォルトの表示スタイルを設定します。 (2022年3月14日時点において、バグのため「List」を設定した際にうまく動作しません。修正予定です。) Show a link to collections in item pages? アイテムの詳細画面にアイテムセットへのリンクを付与するか否かを設定します。単一のアイテムセットを使用している場合などに「いいえ」を設定します。 ...

2022年3月23日 · 1 分 · Nakamura

Omeka Classic + IIIF Toolkitを用いたアノテーション付与環境の構築

Omeka ClassicとIIIF Toolkitプラグインを用いたIIIF画像へのアノテーション付与環境を構築します。Omeka Classicの基本的なインストールと合わせて説明します。 はてなブログのまとめ記事と、Zennの本の2種類を作成しました。 Zenn https://zenn.dev/nakamura196/books/2a0aa162dcd0eb はてなブログ https://nakamura196.hatenablog.com/entry/2022/03/22/234917 Omeka.net(Classic)の使い方の参考になりましたら幸いです。

2022年3月22日 · 1 分 · Nakamura

Omeka.net(Classic)の使い方を説明するまとめ記事とZennの本を作成しました。

Omeka.net(Classic)の使い方を説明します。チャプター3以降は、Omeka Classicの使用方法と共通です。 はてなブログのまとめ記事と、Zennの本の2種類を作成しました。 Zenn https://zenn.dev/nakamura196/books/a06c31c1cc3c37 はてなブログ https://nakamura196.hatenablog.com/entry/2022/03/22/232710 Omeka.net(Classic)の使い方の参考になりましたら幸いです。

2022年3月22日 · 1 分 · Nakamura

Omeka S IIIF Serverモジュールを用いたIIIFコレクションの生成

概要 Omeka SのIIIF Serverモジュールは、IIIFマニフェストファイルの自動生成に加えて、IIIFコレクション(IIIFマニフェストを一つにまとめたもの)を自動生成することもできます。 https://omeka.org/s/modules/IiifServer/ 本記事では、このIIIFコレクション機能の使い方について説明します。 データ(アイテムセット)の準備 Omeka Sでは「アイテムセット」という、複数のアイテムをまとめて管理するための単位があります。例えば今回の例では、以下のように、「tei」「iiif」「oss」の三つのアイテムセットを作成します。 今回登録した、OmekaのIDとタイトルの関係は下の表の通りです。 Omeka ID タイトル 1266 tei 1265 iiif 1264 oss そして、それぞれのアイテムセットに、複数のアイテムを関連づけます。例えば、アイテムセット「oss」には、23のアイテムを関連づけます。 関連づけの方法としては、以下のように、個々のアイテムの編集ページでアイテムセットを与えるか、 以下のように、アイテムの一覧画面から複数のアイテムを選択して、画面上部の一括処理のフォームから、複数のアイテムのアイテムセットを変更することができます。 単一コレクション(アイテムセット) 上記の結果、例えば、アイテムセット「oss」に関連づけられたアイテムのIIIFマニフェスト群から構成されるIIIFコレクションは、以下のURLから取得できます。 https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 IIIF Presentation API v3でのIIIFコレクションは、以下からアクセスできます。(2を3に変更します。) https://shared.ldas.jp/omeka-s/iiif/3/collection/1264 神崎正英氏が作成されているImage Annotatorで表示した例が以下です。 https://www.kanzaki.com/works/2016/pub/image-annotator?u=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 また、Mirador 3で表示した例が以下です。 http://www.kanzaki.com/ext/viewer/mirador3?manifest=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264 さらに、Cultural Japanプロジェクトで作成している「Self Museum」で表示した例が以下です。 https://self-museum.cultural.jp/?collection=https://shared.ldas.jp/omeka-s/iiif/2/collection/1264&build=1 複数コレクション(アイテムセット) 以下のようなURLを与えることで、複数のIIIFコレクション(アイテムセット)から構成されるIIIFコレクションを作成することができます。 https://example.org/iiif/set/:id,:id,:id,:id 例えば、以下のURLです。 https://shared.ldas.jp/omeka-s/iiif/set/1264,1265,1266 まとめ 本記事で紹介したように、Omeka SのIIIF Server モジュールを使うことにより、IIIFマニフェストファイルの生成に加えて、Omeka Sのアイテムセットに基づくIIIFコレクションの自動生成、かつ、IIIF Presentation APIのv2とv3に対応することができます。 IIIFコレクションを自動生成することにより、Self Museumなど、IIIFコレクションに対応した他のアプリケーションに読み込ませることができる点も有益かと思います。 Omeka Sを用いたIIIFデータの活用において、本記事がお役に立てば幸いです。

2022年3月17日 · 1 分 · Nakamura

AWSサーバーレスアプリケーションによるIIIF Image Serverの構築

お知らせ 以下に、2024年時点の使用方法を記載しました。参考にしてください。 概要 本記事では、Awesome IIIFで紹介されている、AWSサーバーレスアプリケーションによるIIIF Image Serverの構築方法を紹介します。 https://github.com/samvera-labs/serverless-iiif なお、本記事の手続きにより、AWSのサービス利用料金が発生しますので、試される場合にはご注意ください。 想定読者 上記リポジトリでは、以下のように紹介されています。 AWSの基本的な知識があること。 コンソールやコマンドラインからリソースを作成する権限を持つAmazon Web Servicesアカウントを持つこと。 IIIF で提供するソース画像を格納する Amazon S3 バケットを持つこと。 準備 S3のバケット準備 IIIF で提供するソース画像を格納する Amazon S3 バケットを作成します。今回は、「serverless-iiif-s3-dd」というバケットを作成し、その中に「ezu」というディレクトリを作成しました。 tiled TIFFファイルの作成 今回は、国立国会図書館で公開されている以下の国絵図をサンプルデータとして用いました。 https://dl.ndl.go.jp/info:ndljp/pid/1286201 JPG画像をダウンロードし、以下の変換コマンドを参考に、tiled TIFFファイルを作成します。 Using VIPS vips tiffsave source_image.tif output_image.tif –tile –pyramid –compression jpeg –tile-width 256 –tile-height 256 Using ImageMagick convert source_image.tif -define tiff:tile-geometry=256x256 -compress jpeg ‘ptif:output_image.tif’ S3へのtiled TIFFファイルのアップロード 変換して得られたファイルを以下のようにアップロードします。 Image Serverの構築 セットアップ まず、冒頭で紹介した、以下のリポジトリページにアクセスし、Quick Startにある「Deploy the Serverless Application」のリンクをクリックします。 https://github.com/samvera-labs/serverless-iiif ...

2022年3月17日 · 1 分 · Nakamura