ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
Romaを使ってプロジェクトに応じたタグを限定し、解説を作成する

Romaを使ってプロジェクトに応じたタグを限定し、解説を作成する

概要 以下の記事で、Romaの使い方を説明しました。 今回は、手元にあるTEI/XMLを対象として、TEI ODD (One Document Does-it-all)や解説(HTMLやPDF)の作成に関する一連の流れを説明します。 なお、ODD (One Document Does it all) と RNG (RelaxNG) の違いについて、GPT-4による回答結果を末尾に掲載しています。こちらも参考にしてください。 使用するタグの一覧を取得する まず、プロジェクトで使用するタグの一覧を取得します。 今回、手元にあるTEI/XMLを対象として、使用されているタグの一覧を取得するライブラリおよびチュートリアル用のノートブックを作成しました。 ライブラリ https://nakamura196.github.io/gdb-utils/ チュートリアル用のノートブック https://colab.research.google.com/github/nakamura196/000_tools/blob/main/TEIでタグの使用頻度を分析するチュートリアル.ipynb 例えば、上記のノートブックを実行すると、以下のような結果が得られます。以下は、対象としたTEI/XMLファイル中に含まれるタグとその頻度を取得し、その結果をタグの名前について昇順で取得したものです。 index Tag Count 0 TEI 1 18 addrLine 1 17 address 1 50 app 8 5 author 2 58 back 1 36 bibl 1 47 body 1 56 closer 1 44 correspAction 2 43 correspDesc 1 20 country 1 33 date 6 26 dimensions 1 19 district 1 54 div 1 37 editor 1 40 editorialDecl 1 39 encodingDesc 1 25 extent 2 2 fileDesc 1 29 handDesc 1 30 handNote 1 27 height 1 31 history 1 21 idno 2 16 institution 1 55 lb 13 51 lem 8 59 listPerson 1 12 listWit 1 45 location 1 14 msDesc 1 15 msIdentifier 1 23 objectDesc 1 48 opener 1 32 origin 1 … Romaでタグを限定したODDファイルを作成する 上記で取得したタグに限定したODDファイルを、Romaというツールを用いて作成します。 ...

フリーハンドのアノテーションを矩形に変換するPythonライブラリを作成しました。

フリーハンドのアノテーションを矩形に変換するPythonライブラリを作成しました。

フリーハンドのアノテーションを矩形に変換するPythonライブラリを作成しました。 以下のようなフリーハンドで作成したアノテーションを入力として、 以下のような矩形のアノテーションに変換します。 『田中芳男・博物学コレクション』(東京大学総合図書館所蔵)を使用しています。 具体的な使用方法は、以下のノートブックをご確認ください。 https://github.com/nakamura196/000_tools/blob/main/フリーハンドのアノテーションを矩形に変換する.ipynb IIIFのアノテーションの活用にあたり、参考になりましたら幸いです。

Drupalでフィールドの値を選択式にする

Drupalでフィールドの値を選択式にする

目的 以下のように、フィールドの値の入力方法を選択式にする方法について説明します。 以下、テキストの場合と、エンティティ参照の場合のそれぞれについて説明します。 テキストの場合 ageというフィールドを作成します。ここで「リスト(テキスト)」を選択します。 以下のように選択肢を入力します。 結果、以下のように、「選択リスト」形式でフィールドを編集できるようになります。 さらに、コンテンツタイプの一覧ページから、「フォームの表示管理」を押します。 /admin/structure/types そしてageフィールドのウィジェットを「チェックボックス/ラジオボタン」に変更してみます。 結果、以下のようにフォームが変化します。 エンティティ参照 エンティティ参照の場合も上記と同様です。例えば、以下の記事で作成したフィールドを対象にします。 「フォームの表示管理」から、ウィジェットを「チェックボックス/ラジオボタン」に変更します。すると、以下のように、フォームが変化します。 まとめ フォームの表示管理について、参考になりましたら幸いです。 参考 Drupal で値を管理する際にテキストのリスト形式を選択するか、Vocabulary (タクソノミー) を使うか、について問い合わせてみました。こちらも参考になりましたら幸いです。 GPT-4による回答 Drupal で値を管理する際にテキストのリスト形式を選択するか、Vocabulary (タクソノミー) を使うかは、実際の使用シナリオや要件によって変わります。以下は、それぞれの選択肢の特徴と利点、制限点を示しています。 テキストのリスト形式 利点: シンプルで簡単にセットアップできる。 小さな固定のリストに適している。 選択リストやチェックボックスなどの形式で簡単に表示できる。 制限点: 項目間の関係や階層構造を持たせることができない。 リストが大きくなると管理が難しくなる可能性がある。 Vocabulary (タクソノミー) 利点: 項目間の関係や階層構造を持たせることができる。 項目にメタデータや説明、関連画像などを追加できる。 大量の項目や動的に変わる項目を管理するのに適している。 拡張機能やモジュールとの統合が豊富。 制限点: セットアップや管理がテキストのリスト形式よりも複雑になる可能性がある。 どちらを選ぶべきか? リストのサイズと変動性 : 小さく、あまり変わらないリストの場合はテキストのリスト形式が適しています。一方、大きい、または頻繁に変わるリストの場合は、Vocabulary の方が適しています。 関連データの必要性 : 項目に追加の情報や属性が必要な場合、Vocabulary の使用が推奨されます。 階層性や関連性 : カテゴリのように項目間に階層や関連性が必要な場合、Vocabulary が適しています。 シンプルさ : 簡単にセットアップし、シンプルに保ちたい場合は、テキストのリスト形式が良いでしょう。 最終的には、プロジェクトの要件や将来の拡張性を考慮して、最適な選択を行うことが重要です。

Drupalで他のコンテンツを参照する際に、IDとタイトルで探せるようにする

Drupalで他のコンテンツを参照する際に、IDとタイトルで探せるようにする

はじめに 例えば、Drupalで「組織」というコンテンツタイプを作成し、「東京大学」「京都大学」というコンテンツを作成します。 この時、Research Organization Registry (ROR)を使用して、以下のIDも登録したとします。 タイトル ID 東京大学 057zh3y96 京都大学 02kpeqv85 このコンテンツを他のコンテンツ(例えば、「研究者」コンテンツタイプ)からaffiliationフィールドを使って参照してみます。この時、以下のように大学と入力すると、登録済みの2件のコンテンツが表示されます。 一方、IDの一部である057などを入力しても、登録済みのコンテンツが表示されません。 そこで、本記事では、タイトルに加えて、他のフィールドでもコンテンツを探せるようにすることを目指します。 方法 ビューの作成 Drupalにログイン後、以下のURLにアクセスし、ビューを追加します。 /admin/structure/views/add ここでは、ビューの基本情報として、「組織」「organization」を与え、ビューの設定として、コンテンツのタイプを「組織」に限定しています。 次の画面に遷移後、まず以下のように「+追加」ボタンを押し、「エンティティ参照」を選択します。 以下のように、メッセージが表示されます。 ディスプレイ “エンティティ参照” が正しく動作するには、選択した検索フィールドが必要です。エンティティ参照リストのフォーマット設定を確認してください。 このメッセージに対応するには、フォーマット > フォーマット > 設定を押して、以下のように、検索フィールドにチェックを入れる必要がありました。 この結果、以下のように、タイトルが表示されます。 IDフィールドの追加 次に、IDフィールドを追加します。 フィールド > 追加 から、追加したいフィールド(ここではID)を追加します。 次に、フォーマット > フォーマット > 設定から、IDにもチェックを入れます。 結果、以下のように、タイトルとIDのペアで表示されるようになりました。 フィールド > 並び替え で順番を入れ替えてみます。 結果、以下のように、IDが先頭にくるようになりました。 IDの場合、昇順で並べるケースが考えられるため、ここでも並び順を変更してみます。具体的には、並び替え基準でIDフィールドを追加して、昇順にします。 また、デフォルトで登録済みであったコンテンツ: 投稿日時を削除します。 結果、以下のように、IDの昇順でエンティティ参照が並ぶようになりました。(ここでは、画面上は変化がありません。) そして「保存」ボタンを押して、設定を保存します。 フィールド管理への反映 作成したビューをフィールド管理に反映してみます。まず、以下のコンテンツタイプの一覧ページにアクセスします。 ...

Drupal: APIを用いた`uid`フィールド更新時のエラー対応

Drupal: APIを用いた`uid`フィールド更新時のエラー対応

DrupalのJSONAPIを用いてnodeのuidフィールドを更新しようとした際、以下のエラーが発生しました。 The current user is not allowed to PATCH the selected field (uid). The 'administer nodes' permission is required. これについて、権限を変更することで解決できました。 具体的には、NodeのAdminister contentにチェックをいれることで、解決できました。 ただし、以下のような記載がありましたので、利用にあたっては注意が必要かと思います。 Warning: Give to trusted roles only; this permission has security implications. Promote, change ownership, edit revisions, and perform other tasks across all content types. 参考になりましたら幸いです。

Some resources have been omitted because of insufficient autho... への対応

Some resources have been omitted because of insufficient autho... への対応

DrupalのJSONAPIの利用において、以下のようなクエリで、fieldのIDから、field_nameを取得しようとしたところ、結果が0件になりました。 https://xxx/jsonapi/field_config/field_config?fields[field_config–field_config]=label%2Cfield_name&filter[name-filter][condition][path]=field_name&filter[name-filter][condition][operator]=IN&filter[name-filter][condition][value][1]=field_xxx1&filter[name-filter][condition][value][2]=field_xxx2&filter[name-filter][condition][value][3]=field_xxx3&filter[bundle]=yyy 返却された結果のmetaの項目に、権限の問題が記載されていました。 { "jsonapi": { "version": "1.0", "meta": { "links": { "self": { "href": "http://jsonapi.org/format/1.0/" } } } }, "data": [], "meta": { "omitted": { "detail": "Some resources have been omitted because of insufficient authorization.", ... } }, ... } そこで、以下の図にある通り、Field UIのコンテンツ: フィールドの管理の権限を変更したところ、上記の権限の問題を解決することができました。 ただし、以下のような記載があるため、ご利用の際は十分に注意してください。 警告: 信頼できる役割のみに与えてください。この権限はセキュリティへの影響があります。

EASY RDFを用いてJSON-LDのデータをRDF/XMLやTurtleに変換してみる

EASY RDFを用いてJSON-LDのデータをRDF/XMLやTurtleに変換してみる

概要 以下の記事で、エクスポート機能を追加する方法を紹介しました。 そのエクスポート方法の一つとして、JSON-LDがあります。 今回は、このJSON-LDをRDF/XMLやTurtleに変換してみます。 使用するツール 今回は、以下のEASY RDFを使用します。 https://www.easyrdf.org/converter 先のOmeka Sのエクスポートによって得られる以下のJSON-LDの内容をコピーします。 { "@context": "https://omekas.aws.ldas.jp/xxx/omekas/api-context", "@id": "https://omekas.aws.ldas.jp/xxx/omekas/api/items/12", "@type": "o:Item", "o:id": 12, "o:is_public": true, "o:owner": { "@id": "https://omekas.aws.ldas.jp/xxx/omekas/api/users/1", "o:id": 1 }, "o:resource_class": null, "o:resource_template": null, "o:thumbnail": null, "o:title": "aaa", "thumbnail_display_urls": { "large": "https://omekas.aws.ldas.jp/xxx/omekas/files/large/4f57960c4471c954c6d3aac0a23bd441a6f4eb8b.jpg", "medium": "https://omekas.aws.ldas.jp/xxx/omekas/files/medium/4f57960c4471c954c6d3aac0a23bd441a6f4eb8b.jpg", "square": "https://omekas.aws.ldas.jp/xxx/omekas/files/square/4f57960c4471c954c6d3aac0a23bd441a6f4eb8b.jpg" }, "o:created": { "@value": "2023-07-26T22:52:31+00:00", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" }, "o:modified": { "@value": "2023-10-17T06:56:16+00:00", "@type": "http://www.w3.org/2001/XMLSchema#dateTime" }, "o:media": [ { "@id": "https://omekas.aws.ldas.jp/xxx/omekas/api/media/13", "o:id": 13 } ], "o:item_set": [], "o:site": [ { "@id": "https://omekas.aws.ldas.jp/xxx/omekas/api/sites/1", "o:id": 1 } ], "dcterms:title": [ { "type": "literal", "property_id": 1, "property_label": "Title", "is_public": true, "@value": "aaa" } ], "dcterms:creator": [ { "type": "literal", "property_id": 2, "property_label": "Creator", "is_public": true, "@value": "bbb" } ] } そして、EASY RDFのInput Dataのフォームに貼り付けます。 ...

Landoで構築したDrupalにdrushをインストールする

Landoで構築したDrupalにdrushをインストールする

以下のサイトを参考に、Landoを使ってDrupalの開発環境を用意しました。 https://www.acquia.com/jp/blog/how-to-use-lando-for-building-drupal-local-environment そこにdrushをインストールするにあたり、以下が参考になりました。 https://docs.lando.dev/drupal/getting-started.html#quick-start 以下を実行することで、drushが使えるようになりました。 # Install a site local drush lando composer require drush/drush 他の方の参考になりましたら幸いです。

Drupal 10.1.0以降でTwigのキャッシュを無効化する方法

Drupal 10.1.0以降でTwigのキャッシュを無効化する方法

以下に記載がありました。 https://www.drupal.org/docs/develop/development-tools/disable-caching#s-disabling-twig-caching-the-easy-way 以下にアクセスします。 /admin/config/development/settings 以下の画面でチェックを入れることで、キャッシュを無効化できました。 他の方の参考になりましたら幸いです。

IIIF Content State APIを試す

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をエンコードします。 { "id": "https://archives.ichigaya-letterpress.jp/api/presentation/2/084cef1f7ddc/canvas/2#xywh=2148,813,312,304", "type": "Canvas", "partOf": [{ "id": "https://archives.ichigaya-letterpress.jp/api/presentation/2/084cef1f7ddc/manifest.json", "type": "Manifest" }] } 結果、以下の文字列が得られます。 ewogICAgImlkIjogImh0dHBzOi8vYXJjaGl2ZXMuaWNoaWdheWEtbGV0dGVycHJlc3MuanAvYXBpL3ByZXNlbnRhdGlvbi8yLzA4NGNlZjFmN2RkYy9jYW52YXMvMiN4eXdoPTIxNDgsODEzLDMxMiwzMDQiLAogICAgInR5cGUiOiAiQ2FudmFzIiwKICAgICJwYXJ0T2YiOiBbewogICAgICAgICJpZCI6ICJodHRwczovL2FyY2hpdmVzLmljaGlnYXlhLWxldHRlcnByZXNzLmpwL2FwaS9wcmVzZW50YXRpb24vMi8wODRjZWYxZjdkZGMvbWFuaWZlc3QuanNvbiIsCiAgICAgICAgInR5cGUiOiAiTWFuaWZlc3QiCiAgICB9XQp9 エンドポイントURLにアクセス 上記の文字列を使って、以下のURLにアクセスしてみます。 https://archives.ichigaya-letterpress.jp/library/items/084cef1f7ddc?target=ewogICAgImlkIjogImh0dHBzOi8vYXJjaGl2ZXMuaWNoaWdheWEtbGV0dGVycHJlc3MuanAvYXBpL3ByZXNlbnRhdGlvbi8yLzA4NGNlZjFmN2RkYy9jYW52YXMvMiN4eXdoPTIxNDgsODEzLDMxMiwzMDQiLAogICAgInR5cGUiOiAiQ2FudmFzIiwKICAgICJwYXJ0T2YiOiBbewogICAgICAgICJpZCI6ICJodHRwczovL2FyY2hpdmVzLmljaGlnYXlhLWxldHRlcnByZXNzLmpwL2FwaS9wcmVzZW50YXRpb24vMi8wODRjZWYxZjdkZGMvbWFuaWZlc3QuanNvbiIsCiAgICAgICAgInR5cGUiOiAiTWFuaWZlc3QiCiAgICB9XQp9 結果、以下のページにアクセスできます。 まとめ IIIF Content State APIの目的の通り、オブジェクトの表示を詳細に指定したリンクを作成することができました。 リンクの作成については、より効率的な方法があるかと思いますが、参考になりましたら幸いです。 ...

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

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

概要 Cantaloupeの管理画面を有効化する方法です。以下のようなサーバ情報を閲覧できました。 設定方法 cantaloupe.propertiesの以下の箇所を編集します。 # Enables the Control Panel, at /admin. endpoint.admin.enabled = true # false endpoint.admin.username = admin endpoint.admin.secret = <パスワード> 結果、以下のようなURLにアクセスして、Basic認証画面が表示されればOKです。 https://cantaloupe.aws.ldas.jp/admin まとめ Cantaloupeの利用にあたり、参考になりましたら幸いです。

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

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の活用にあたり、お役に立ちましたら幸いです。

DrupalのViewsでURLで参照する画像を表示する

DrupalのViewsでURLで参照する画像を表示する

背景 次のように、Field typeをLinkとしたthumbnailというフィールドに画像のURLを入力する場合を想定します。 今回、いらすとやさんの以下の画像を利用させていただきます。 https://3.bp.blogspot.com/-HLe8mKu9lCs/Ugsu_AAFifI/AAAAAAAAXNI/-yW12EVgQ5s/s800/book_yoko.png このようなデータを、以下のようなViewsで表示するための備忘録です。 Views ViewsのRewrite resultsで以下のように設定しました。 <img src="{{ field_thumbnail__uri }}" alt="Image" /> Field typeをLinkとした場合、以下のようなReplacement patternsが必要なようでした。 {{ field_thumbnail }} == thumbnail {{ field_thumbnail__uri }} == Raw uri {{ field_thumbnail__title }} == Raw title {{ field_thumbnail__options }} == Raw options まとめ 当初、{{ field_thumbnail }}を指定したところ画像が表示されず、困っていました。 参考になりましたら幸いです。

Mirador3プラグイン開発: Text Overlay pluginで縦書き対応を行う

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が指定されています。 { "@id": "https://iiif.wellcomecollection.org/presentation/b18035723/canvases/b18035723_0003.JP2", "@type": "sc:Canvas", "label": "-", "thumbnail": { "@id": "https://iiif.wellcomecollection.org/thumbs/b18035723_0003.JP2/full/72,100/0/default.jpg", "@type": "dctypes:Image", "service": { "@context": "http://iiif.io/api/image/2/context.json", "@id": "https://iiif.wellcomecollection.org/thumbs/b18035723_0003.JP2", "profile": "http://iiif.io/api/image/2/level0.json", "protocol": "http://iiif.io/api/image", "width": 732, "height": 1024, "sizes": [ { "width": 72, "height": 100 }, { "width": 143, "height": 200 }, { "width": 286, "height": 400 }, { "width": 732, "height": 1024 } ] } }, "seeAlso": { "@id": "https://api.wellcomecollection.org/text/alto/b18035723/b18035723_0003.JP2", "profile": "http://www.loc.gov/standards/alto/v3/alto.xsd", "format": "text/xml", "label": "METS-ALTO XML" }, "height": 3372, "width": 2411, "images": [ { "@id": "https://iiif.wellcomecollection.org/presentation/b18035723/canvases/b18035723_0003.JP2/painting/anno", "@type": "oa:Annotation", "motivation": "sc:painting", "resource": { "@id": "https://iiif.wellcomecollection.org/image/b18035723_0003.JP2/full/732,1024/0/default.jpg", "@type": "dctypes:Image", "format": "image/jpeg", "height": 1024, "width": 732, "service": { "@context": "http://iiif.io/api/image/2/context.json", "@id": "https://iiif.wellcomecollection.org/image/b18035723_0003.JP2", "profile": "http://iiif.io/api/image/2/level1.json", "protocol": "http://iiif.io/api/image", "width": 2411, "height": 3372 } }, "on": "https://iiif.wellcomecollection.org/presentation/b18035723/canvases/b18035723_0003.JP2" } ], "otherContent": [ { "@id": "https://iiif.wellcomecollection.org/annotations/v2/b18035723/b18035723_0003.JP2/line", "@type": "sc:AnnotationList", "label": "Text of page -" } ], "within": "" } まとめ 開発したプラグインについて、xmlファイルのロードが完了しない時があるなど、引き続き改善が必要ですが、Mirador3のプラグイン開発やIIIF、OCR結果の活用にあたり、参考になりましたら幸いです。 ...

ジャパンサーチ利活用スキーマについて、最新の更新年ごとのアイテム数を視覚化する

ジャパンサーチ利活用スキーマについて、最新の更新年ごとのアイテム数を視覚化する

ジャパンサーチ利活用スキーマについて、最新の更新年ごとのアイテム数を視覚化してみましたので、その備忘録です。 https://api.triplydb.com/s/bfcE2qF65 以下のクエリをベースとしています。 https://zenn.dev/nakamura196/books/a4534e306de7e7/viewer/e38587 参考になりましたら幸いです。

Mirador3プラグイン開発: レイヤーのスライドショーを行う

Mirador3プラグイン開発: レイヤーのスライドショーを行う

概要 レイヤーのスライドショーを行うMirador3プラグインを開発しました。 https://youtu.be/r1ShHGqCs24 以下の記事にある通り、以前、Mirador2のカスタマイズにより実現しました。以下では「起絵図」のIIIF実装を試みています。 https://nakamura196.hatenablog.com/entry/2020/08/14/073700 今回はMirador3のプラグインとして開発を試みました。 リポジトリ https://github.com/nakamura196/mirador-layer-slideshow-plugin デモサイト https://nakamura196.github.io/mirador-layer-slideshow-plugin/ まとめ 改善の余地が多々ありますが、参考になりましたら幸いです。

ALTO (Analyzed Layout and Text Object) XMLについて

ALTO (Analyzed Layout and Text Object) XMLについて

概要 ALTO (Analyzed Layout and Text Object) XMLについて、GPT-4に問い合わせた結果を共有します。 https://www.loc.gov/standards/alto/ 必須項目 ALTO (Analyzed Layout and Text Object) XMLは、OCR生成テキストとそのレイアウトを表現するためのXMLスキーマです。その構造は非常に柔軟で、多くの要素と属性が存在しますが、必須の要素は限られています。 最も単純な形式のALTO XMLは、以下のような階層構造を持ちます: <alto>: ルート要素です。ALTO XMLスキーマのバージョンを示す@xmlns属性と@xmlns:xsi属性を持つ必要があります。また、<Description>と<Layout>という二つの子要素を持つ必要があります。 <Description>: ファイルのメタデータを含みます。この要素自体に必須の子要素はありませんが、通常、<MeasurementUnit>, <sourceImageInformation>や<OCRProcessing>などの子要素を含むでしょう。 <Layout>: ファイルの物理的なレイアウトを表現します。これは<Page>という子要素を1つ以上含む必要があります。 <Page>: 一つのページを表現します。この要素は@IDと@WIDTHと@HEIGHTという三つの必須属性を持つべきです。また、<PrintSpace>という子要素を1つ持つことができます。 上記の要素はALTO XMLの最も基本的な構造を表現していますが、テキストの内容やそのレイアウトを詳細に表現するためには、さらに多くの要素と属性を使用することが可能です。例えば、<PrintSpace>, <TextBlock>, <TextLine>, <String>などの要素を使用することで、テキストの物理的な配置や内容を詳細に表現することができます。それぞれの要素や属性の詳細については、ALTO XMLスキーマのドキュメンテーションを参照してください。 OCRProcessing要素 OCRProcessing要素は、ALTO XML内の<Description>エレメント内で使用されます。この要素は、特定のOCRプロセスに関する情報を格納します。それは以下のサブ要素を持つことができます: ocrProcessingStep: OCR処理の各ステップを記述します。この要素は processingDateTime, processingAgency, processingSoftware, processingStepSettings, processingStepDescriptionといった属性を持つことができます。 以下に、OCRProcessingエレメントの使用例を示します: <Description> ... <OCRProcessing ID="OCR1"> <ocrProcessingStep> <processingDateTime>2023-08-01T00:00:00</processingDateTime> <processingAgency>Agency Name</processingAgency> <processingSoftware> <softwareCreator>Software Creator Name</softwareCreator> <softwareName>Software Name</softwareName> <softwareVersion>Software Version</softwareVersion> </processingSoftware> <processingStepSettings>Settings</processingStepSettings> <processingStepDescription>Description of the processing step</processingStepDescription> </ocrProcessingStep> </OCRProcessing> ... </Description> ここで、processingDateTimeはOCR処理が行われた日時を表し、processingAgencyはその処理を行った機関名を表します。processingSoftwareはOCR処理に使用されたソフトウェアに関する情報を含み、processingStepSettingsとprocessingStepDescriptionはそれぞれ設定と処理手順の説明を提供します。 ...

CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。

CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。

概要 CETEIceanとNuxt3を使ったサンプルリポジトリを作成しました。 https://github.com/TEIC/CETEIcean 以下のissueを参考にさせていただきました。 https://github.com/TEIC/CETEIcean/issues/27 以下で紹介されているスクリプトでは、CETEIceanのv1.8.0では動作しなかったため、CETEIceanのv1.8.0とNuxt3で動作する最小限のリポジトリを作成しました。 デモページ https://nakamura196.github.io/ceteicean-nuxt3 ソースコード https://github.com/nakamura196/ceteicean-nuxt3 主なファイル https://github.com/nakamura196/ceteicean-nuxt3/blob/main/app.vue まとめ 参考になりましたら幸いです。またCETEIceanを開発してくださっている方々に感謝いたします。

【Omeka S モジュール紹介】Scripto:転写や翻訳を行う

【Omeka S モジュール紹介】Scripto:転写や翻訳を行う

概要 Omeka Sに登録したメディア(画像など)に対して、転写や翻訳を可能にするモジュール「Scripto」について紹介します。 https://omeka.org/s/modules/Scripto/ インストール 本モジュール自体のインストールは、他の通常のモジュールと同じです。 一方、本モジュールのインストールに加えて、mediawikiをセットアップする必要があります。 Omeka Sが動作している環境であれば、mediawikiのセットアップに必要な環境も揃っているはずですので、以下のコマンドなどにより、mediawikiのダウンロードやセットアップを行います。 wget https://releases.wikimedia.org/mediawiki/1.40/mediawiki-1.40.0.zip unzip mediawiki-1.40.0.zip mv mediawiki-1.40.0 /home/bitnami/htdocs/mediawiki セットアップの環境後、例えば以下のようなURLから、mediawikiのAPIのURLにアクセスできます。 https://omekas.aws.ldas.jp/mediawiki/api.php 上記のURLをScriptoモジュールの有効後に表示される設定画面に反映します。 アイテムセットの作成 本モジュールの利用にあたっては、transcribeの対象とするアイテムを含むアイテムセットを指定する必要があります。 今回は、以下のアイテムセットを例に使用します。 https://omekas.aws.ldas.jp/omeka4/s/bootstrap/item-set/9 プロジェクトの追加 管理画面右下のモジュールに「Scripto」が追加されます。そのリンクから以下のダッシュボードを開き、プロジェクトを作成します。 タイトルとアイテムセット、および転写したテキストをインポートするためのプロパティを指定します。本モジュールでは、プロジェクトにおいて転写内容が承認されるまではアイテムのメタデータとして記録されず、転写内容が承認され、プロジェクトにおいて後述するコンテンツのインポートを実行後、ここで指定したプロパティの値として登録されます。 右上のActionsボタンからSync projectを選択する。 以下のように、アイテムが登録されます。 サイトに追加 転写のプロジェクトは独立したページが用意されます。そのため、当該ページにアクセスするため、Omeka Sの公開サイトのナビゲーションなどにプロジェクトへのリンクを設置します。 プロジェクトの公開ページ プロジェクトは以下のような公開ページを提供します。 各メディアは、以下のような編集画面を持ちます。画面左にメディアが表示され、画面右にエディタが表示されます。また承認済みか、完了済みか、等のフラグを持ちます。 https://omekas.aws.ldas.jp/omeka4/scripto/s/default/1/1/8/10/edit 管理画面では、更新履歴等が閲覧できます。 各アイテムの編集履歴も閲覧できます。 データはmediawikiに保存されます。 https://omekas.aws.ldas.jp/mediawiki/index.php?title=1:8:10 管理画面においても、以下のように登録したテキストデータを確認できます。 インポート 状態がApprovedになったメディアについては、「Import content」から、mediawikiから、Omeka Sのメタデータとして登録できます。 結果、以下のように、テキストデータがメタデータとして登録されます。 まとめ プロジェクトごとに、以下のようにReviewer等を設定することができます。 他にも様々な機能が提供されていますので、柔軟にプロジェクトの設定を変更することができそうです。Omeka Sを用いた転写・翻訳等を行う際の参考になりましら幸いです。

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

【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モジュールなどのほうが優れているように思われますので、用途に応じて使い分けるのがよさそうに思いました。 他の方の参考になりましたら幸いです。