Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例

Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例を示すノートブックを作成しました。Pythonを用いたRDFストア利用時の参考になりましたら幸いです。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/%E3%82%B8%E3%83%A3%E3%83%91%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%81%E3%81%AERDF%E3%82%B9%E3%83%88%E3%82%A2%E3%82%92%E5%AF%BE%E8%B1%A1%E3%81%97%E3%81%9FSPARQL%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB.ipynb

他にも以下のような参考サイト・チュートリアルがあります。

https://www.kanzaki.com/works/ld/jpsearch/

https://lab.ndl.go.jp/data_set/tutorial/

Google Colabを用いたndl-lab図表自動抽出プログラムの実行

概要

ndl-labでは、以下の図表自動抽出プログラムが公開されています。

https://github.com/ndl-lab/tensorflow-deeplab-v3-plus

今回は上記のプログラムについて、Google Driveを用いた画像の入力と結果の保存までの手続きを含むGoogle Colabの使用方法をまとめましたので紹介します。

ノートブック

今回作成したGoogle Colabのノートブックには以下からアクセスいただけます。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_deeplab.ipynb

Googleドライブ上に入力画像のフォルダを用意することで、図表の自動抽出処理を実行することができます。

基本的な操作方法は、上記のノートブック内の説明をご確認ください。以下、実行例を紹介します。

本ノートブックでは、(1)入力フォルダを準備する方法と、(2)IIIFマニフェストファイルのURLを入力する方法の2つがあります。それぞれについて説明します。

実行方法:(1)入力フォルダの準備

入力フォルダの準備

まず、Google Drive上に画像ファイルを格納したフォルダを作成します。今回は、以下のように、マイドライブに「ndl_deeplab > input」というフォルダを作成して、その直下に画像ファイルを格納しました。

ノートブックの実行:1.初期セットアップ

先に示した以下のノートブックにアクセスしてください。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_deeplab.ipynb

そして、用意されている2つの再生ボタンを押してください。少し時間がかかりますが、必要なライブラリ等をインストールします。また、本作業については、ノートブック立ち上げ後の初回のみ実行します。

ノートブックの実行:2.設定

次に、処理の適用対象を設定します。以下のように、input_dirに先に用意したフォルダへのパスを指定します。またmanifestの値を空にしてください。これにより、input_dirに格納した画像ファイルを対象に処理を実行します。

再生ボタンを押して、設定は完了です。

ノートブックの実行:3.実行

「3.実行」の再生ボタンを押してください。

完了後は、以下のように、指定した出力フォルダに処理の開始時間に基づくフォルダが作成され、その中に認識結果が保存されます。

図表の抽出に失敗してしまう場合もありますが、今回は以下のように、正しく図表を抽出することができました。

実行方法:(2)IIIFマニフェストファイルのURLを入力する

ノートブックの実行:1.初期セットアップ

これは先ほどのプロセスと同じです。2回目以降はスキップしてください。

ノートブックの実行:2.設定

以下のように、manifestに処理対象とするIIIFマニフェストファイルのURLを入力してください。

またprocess_sizeに処理対象のcanvas数を指定します。-1を入力すると、マニフェストファイルに含まれるすべてのcanvas(画像)に対して処理を実行します。

再生ボタンを押して、設定は完了です。

ノートブックの実行:3.実行

「3.実行」の再生ボタンを押してください。

今回の場合、以下のように、まず画像のダウンロードが行われます。

### マニフェストが指定されている場合は、画像のダウンロード ###
 80%|████████  | 4/5 [00:13<00:03,  3.41s/it]

その後、抽出処理が始まります。処理対象の画像が多い場合、完了まで時間がかかります。

抽出処理の完了後、「実行方法:(1)入力フォルダの準備」で示した通り、指定したGoogleドライブ上の出力フォルダに認識結果が保存されるほか、以下のように、認識結果をIIIFマニフェストファイルの形で出力し、それをMiradorビューアで閲覧するためのURLが表示されます。

### マニフェストが指定されている場合は、認識結果をマニフェストファイルに出力 ###
/content/drive/MyDrive/ndl_deeplab/output/20220429095851/manifest.json にマニフェストファイルを保存しました。
また以下のリンクから、認識結果を確認できます。
https://localhost:8000/

上記のリンクをクリックすると、以下のように、Miradorを用いて認識結果を確認することができます。

まとめ

今回は、NDLラボが公開する図表自動抽出プログラムについて、Google Colabを用いた実行方法の一例を示しました。他の方の参考になりましたら幸いです。

このようなアプリケーションを公開してくださったNDLの関係者の方々に深く感謝いたします。

Google Colabを用いたNDLOCRアプリの実行(Google Driveを用いた画像の入力と結果の保存)

概要

前回、Google Cloud PlatformのCompute Engineを用いたNDLOCRアプリの実行方法を共有しました。

nakamura196.hatenablog.com

ただし、上記の方法は手続きが一部面倒で、かつ費用がかかる方法です。本番環境で使用するには適した方法ですが、小規模に、または試験的に使用するにはハードルが高い方法でした。

この課題に対して、 @blue0620 さんがGoogle Colabを用いたNDLOCRアプリの実行方法を作成されました。

https://twitter.com/blue0620/status/1519294332159012864

上記のノートブックを使用することにより、簡単に(「ランタイム」>「すべてのセルを実行」からワンクリックで)、かつ無料でOCRを実行することができます。

今回は、このノートブックを参考にして、Google Driveを用いた画像の入力と結果の保存までの手続きを含むGoogle Colabの使用方法をまとめましたので紹介します。

ノートブック

今回作成したGoogle Colabのノートブックには以下からアクセスいただけます。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_ocr_folder.ipynb

Googleドライブ上に入力画像のフォルダを用意するだけで、OCR処理を実行することができます。

基本的な操作方法は、上記のノートブック内の説明をご確認ください。以下、実行例を紹介します。

実行方法

入力フォルダの準備

まず、Google Drive上に画像ファイルを格納したフォルダを作成します。今回は、以下のように、マイドライブに「ndl_ocr > input」というフォルダを作成して、その直下に画像ファイル「image_1.jpg」とフォルダ「dir_1」を作成し、フォルダ「dir1」の中に画像ファイル「image_2.jpeg」を格納しました。

ツリーで見ると、以下のような形です。

今回作成したプログラムでは、指定した入力フォルダに含まれる画像を再帰的に探索します。

ノートブックの実行:1.初期セットアップ

先に示した以下のノートブックにアクセスしてください。

https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_ocr_folder.ipynb

そして、以下に示す再生ボタンを押してください。少し時間がかかりますが、必要なライブラリ等をインストールします。また、本作業については、ノートブック立ち上げ後の初回のみ実行します。

再生ボタンを押した後、「このノートブックに Google ドライブのファイルへのアクセスを許可しますか?」と聞かれるので、「Google ドライブに接続」を押して、許可してください。

その後、しばらくの間、再生中のボタンが表示されます。これが完了したら、次のステップに進みます。

ノートブックの実行:2.設定

次に、OCR処理の適用対象を設定します。

入力フォルダ(input_dir)は、上述した「/content/drive/MyDrive/ndl_ocr/input/」としました。

出力フォルダ(output_dir)は、「/content/drive/MyDrive/ndl_ocr/output/」としました。このフォルダは事前に作成しておかなくてもかまいません。

拡張子(extensions)は、今回は拡張子がjpgとjpegの画像を格納したので、これら二つを設定します。

processは、以下を参考にしてください。

https://github.com/ndl-lab/ndlocr_cli#%E6%8E%A8%E8%AB%96%E5%87%A6%E7%90%86%E3%81%AE%E5%AE%9F%E8%A1%8C

ノートブックの実行:3.実行

「3.実行」の再生ボタンを押してください。

再生ボタンを押した後、以下のように、再生中ボタンが表示されます。

完了後は、以下のように、指定した出力フォルダに認識結果が保存されます。入力フォルダの構造を維持する形で出力するようにしています。また、設定において選択したprocessの値をフォルダ名に付与しています。processの値を変えて実行した際、それぞれの出力フォルダが残るようにしています。

以下のように、Googleドライブ上で認識結果の保存と確認が可能です。

まとめ

上記の方法により、Googleドライブ上に格納した画像に対するOCR処理と、その結果の保存を無料で行うことができます。保存した結果を、さまざまな用途に活用することができます。

Google Colabを利用した実行方法を示してくださった @blue0620 さんに感謝いたします。

追記

2022.05.02

本ノートブックの改良版であるVersion 2を作成しました。以下の記事も参考にしてください。

nakamura196.hatenablog.com

2022.04.30

設定にSigle input dir modeを追加しました。以下の記事も参考にしてください。

nakamura196.hatenablog.com

Amazon Lightsailを用いたOmeka Sサイトの構築(独自ドメイン+SSL化を含む)

概要

Amazon Lightsailは以下のような説明がなされています。

Amazon Lightsail は、コンテナなどのクラウドリソースを予測可能な低価格で簡単に管理できる、使いやすい仮想プライベートサーバー (VPS) です。

今回は、このAmazon Lightsailを用いたOmeka Sの構築方法を紹介します。合わせて、データベースの公開にあたり一般的に求められる「独自ドメイン」「SSL」設定についても扱います。

Amazon Lightsail

インスタンスの作成

以下のページにアクセスします。

https://lightsail.aws.amazon.com/ls/webapp/home/instances

そして、以下の「Create Instance」ボタンをクリックします。

「Select a blueprint」において、「LAMP (PHP 7)」を選択します。

「Choose your instance plan」において、インスタンスプランを選択します。今回は最も低価格のプランを選びました。

起動したら、以下のインスタンスのページにアクセスして、「Connect using SSH」ボタンを押します。

以下の画面が表示されます。

Linux ip-172-26-5-202 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
       ___ _ _                   _
      | _ |_) |_ _ _  __ _ _ __ (_)
      | _ \ |  _| ' \/ _` | '  \| |
      |___/_|\__|_|_|\__,_|_|_|_|_|
  
  *** Welcome to the LAMP packaged by Bitnami 7.4.28-14                 ***
  *** Documentation:  https://docs.bitnami.com/aws/infrastructure/lamp/ ***
  ***                 https://docs.bitnami.com/aws/                     ***
  *** Bitnami Forums: https://community.bitnami.com/                    ***
bitnami@ip-172-26-5-202:~$ 

インスタンス内での作業

ファイルの移動

まず、必要なファイルのダウンロードや移動を行います。

cd .

# Omekaのダウンロード
wget https://github.com/omeka/omeka-s/releases/download/v3.2.0/omeka-s-3.2.0.zip
unzip omeka-s-3.2.0.zip

# ファイルの移動
mv omeka-s/* /home/bitnami/htdocs

# .htaccessの移動
mv omeka-s/.htaccess /home/bitnami/htdocs

# 元からあったindex.htmlを削除
rm /home/bitnami/htdocs/index.html

データベースの作成

次にデータベースを作成します。

# パスワードの確認(パスワードが表示されます。)
cat /home/bitnami/bitnami_application_password

# 上記のパスワードを使ってmysqlに入る
mysql -u root -p

# データベースを作成する(omekasの部分は任意)
MariaDB [(none)]> create database omekas;
Query OK, 1 row affected (0.002 sec)

MariaDB [(none)]> quit;

Omeka Sの設定

次に、Omeka Sの設定ファイルを修正します。

vi /home/bitnami/htdocs/config/database.ini

以下のようにファイルの内容を修正する。

user     = "root"
password = "(先ほど確認したパスワード)"
dbname   = "omekas" # 先ほど作成したデータベース名
host     = "localhost"
;port     = 
;unix_socket = 
;log_path = 

また、filesフォルダの所有者を変更します。

sudo chown -R daemon:daemon /home/bitnami/htdocs/files

さらに、サムネイル画像の生成等に必要な、imagemagickをインストールしておきます。

sudo apt install imagemagick -y

ブラウザでの設定

Amazon Lightsailのインスタンスの画面で、「Public IP」に表示されるIPアドレスにアクセスします。

以下のように、インストール画面が表示されます。

あとは、基本的なOmeka Sの操作方法と同じです。以下の記事などを参考に、Omeka Sをご活用ください。

https://nakamura196.hatenablog.com/entry/2022/03/01/121931

独自ドメインの付与

ここからはオプショナルな作業について記述します。「独自ドメインの付与」「SSL化」「Basic認証」について扱います。

静的IPアドレスの付与

独自ドメインの付与については、まず静的なIPアドレスを付与します。「Networking」タブから「+ Create static IP」のリンクをクリックします。

以下の画面で「Create」ボタンを押します。

結果、静的なIPアドレスが付与されました。

Route 53

ここでは、Route 53を用いた独自ドメインの付与を行います。例えば、以下のように設定します。

しばらくすると、以下のようなアドレスでアクセスできるようになります。

SSL

次に、SSL化を行います。再度インスタンスsshでアクセスして、以下を実行します。

bitnami@ip-172-26-5-202:~$ sudo /opt/bitnami/bncert-tool

以下のように質問に回答します。(以下、一部分です。)

Domain list []: omeka.aws.ldas.jp

The following domains were not included: www.omeka.aws.ldas.jp. Do you want to add them? [Y/n]: n

Warning: No www domains (e.g. www.example.com) or non-www domains (e.g. 
www.example.com) have been provided, so the following redirections will be 
disabled: non-www to www, www to non-www.
Press [Enter] to continue: [Enter]

Do you agree to these changes? [Y/n]: Y

これにより、先のURLにアクセスすると、HTTPSにリダイレクトされます。

ここまでの作業により、独自ドメインSSLを用いた最低限の公開環境が整います。

(参考)Basic認証

今回はBasic認証をかける必要があったため、その備忘録です。まず、ユーザを作成します。

sudo htpasswd -c /opt/bitnami/apache2/.htpasswd <username>
New password: 
Re-type new password: 
Adding password for user <username>

次に、.htaccessの先頭に認証情報を追記します。

vi /home/bitnami/htdocs/.htaccess
AuthType Basic
AuthName MyAuthName
AuthUserFile "/opt/bitnami/apache2/.htpasswd"
Require valid-user

この結果、以下のように、Basic認証が適用されました。

まとめ

以上、Amazon Lightsailを用いたOmeka Sの基本的なセットアップ方法と、Basic認証といったオプショナルな作業をまとめました。

Omeka Sを用いたデジタルアーカイブシステム構築時の参考になりましたら幸いです。

Google Cloud PlatformのCompute Engineを用いたNDLOCRアプリの実行

概要

NDLが公開したNDLOCRアプリケーションについて、GCPGoogle Cloud Platform)の仮想マシンを用いて実行してみましたので、その備忘録です。本アプリケーションの詳細については、以下のリポジトリをご確認ください。

https://github.com/ndl-lab/ndlocr_cli

VMインスタンスの作成

GCPのCompute Engineにアクセスして、画面上部の「インスタンスを作成」ボタンをクリックします。

「マシンの構成」の「マシンファミリー」について、「GPU」を選択します。そして「GPUのタイプ」において、今回は最も安価な「NVIDIA T4」を選択します。「GPUの数」は1に設定しました。

「シリーズ」については、「n1-standard-2」を選択します。

「n1-standard-1」では、以下のようにMemoryErrorが発生してしまいました。

次に、「ブートディスク」において、「イメージの切り替え」を選択します。そして推奨された「Deep Learning on Linux」を選択します。

この時の注意点として、「サイズ」をデフォルトの50GBから、100GBに変更しました。50GBの場合、no space leftが発生しました。

以下は、環境構築が済んだ後の情報ですが、40GB強が使用済みとなるため、余裕を持った「サイズ」にしておくことをお勧めします。

u_nakamura_satoru@instance-4:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            7.4G     0  7.4G   0% /dev
tmpfs           1.5G  8.4M  1.5G   1% /run
/dev/sda1       492G   41G  432G   9% /
tmpfs           7.4G     0  7.4G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           7.4G     0  7.4G   0% /sys/fs/cgroup
/dev/sda15      124M  5.7M  119M   5% /boot/efi
tmpfs           1.5G     0  1.5G   0% /run/user/1001

その後、画面下部の「作成」ボタンを押してVMインスタンスの作成を完了します。

しばらくすると、以下のようにVMインスタンスが立ち上がるので、「SSH」ボタンをクリックして、VMインスタンスに入ります。

VMインスタンス内での操作

Nvidia driverのインストール

SSHで接続後、以下の画面が表示されます。「y」を押して、Nvidia driverをインストールしました。

======================================
Welcome to the Google Deep Learning VM
======================================
Version: common-cu113.m91
Based on: Debian GNU/Linux 10 (buster) (GNU/Linux 4.19.0-19-cloud-amd64 x86_64\n
)
Resources:
 * Google Deep Learning Platform StackOverflow: https://stackoverflow.com/questi
ons/tagged/google-dl-platform
 * Google Cloud Documentation: https://cloud.google.com/deep-learning-vm
 * Google Group: https://groups.google.com/forum/#!forum/google-dl-platform
To reinstall Nvidia driver (if needed) run:
sudo /opt/deeplearning/install-driver.sh
Linux instance-1 4.19.0-19-cloud-amd64 #1 SMP Debian 4.19.232-1 (2022-03-07) x86
_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
This VM requires Nvidia drivers to function correctly.   Installation takes ~1 minute.
Would you like to install the Nvidia driver? [y/n] 

ただ立ち上げた直後に上記を実行すると、以下のエラーが発生しました。

Would you like to install the Nvidia driver? [y/n] y
Installing Nvidia driver.
wait apt locks released
install linux headers: linux-headers-4.19.0-19-cloud-amd64
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
Nvidia driver installed.

以下のpsコマンドを実行してみると、他のプロセスが実行されていました。

ps aux | grep apt

そのため、一旦exitして、少し時間を置いてから再度ssh接続します。同じ質問を聞かれますので、改めて「y」を押すと、以下のようにインストールが完了しました。

Would you like to install the Nvidia driver? [y/n] y
Installing Nvidia driver.
wait apt locks released
install linux headers: linux-headers-4.19.0-19-cloud-amd64
Reading package lists... Done
Building dependency tree       
Reading state information... Done
linux-headers-4.19.0-19-cloud-amd64 is already the newest version (4.19.232-1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
DRIVER_VERSION: 470.57.02
Downloading driver from GCS location and install: gs://nvidia-drivers-us-public/tesla/470.57.02/NVIDIA-Linux-x86_64
-470.57.02.run
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86_64 470.57.02........................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................
WARNING: The nvidia-drm module will not be installed. As a result, DRM-KMS will not function with this
         installation of the NVIDIA driver.
WARNING: nvidia-installer was forced to guess the X library path '/usr/lib64' and X module path
         '/usr/lib64/xorg/modules'; these paths were not queryable from the system.  If X fails to find the NVIDIA
         X driver module, please install the `pkg-config` utility and the X.Org SDK/development package for your
         distribution and reinstall the driver.

Nvidia driver installed.

上記のWARNINGの意味は分かりかねたので、スルーしました...

dockerコンテナの起動

あとは、GitHubのREADME.mdの通りに進めることができました。

dockerやgitはインストール済みでしたので、以下を実行しました。dockerbuild.shの実行には少し時間がかかります。

git clone --recursive https://github.com/ndl-lab/ndlocr_cli
cd ndlocr_cli
sh ./docker/dockerbuild.sh
sh ./docker/run_docker.sh

推論の実行

こちらもREADME.mdの通りに進めることができました。

今回は、「校異源氏物語. 巻一」の4ページを対象に推論を実行してみました。

https://dl.ndl.go.jp/info:ndljp/pid/3437686/4

# コンテナにログイン
docker exec -i -t --user root ocr_cli_runner bash

コンテナ内で推論を試します。

# sample_data/imgに画像をダウンロード
wget https://www.dl.ndl.go.jp/api/iiif/3437686/R0000004/full/full/0/default.jpg -P sample_data/img/
# 推論の実行(-xオプションをつけて、認識結果のxmlファイルの合わせて出力)
python main.py infer sample_data output_dir -x

以下のように推論が実行されます。

root@fd35b62fef61:~/ocr_cli# python main.py infer sample_data output_dir -x
start inference !
input_root : sample_data
output_root : output_dir
config_file : config.yml
Using TensorFlow backend.
load from config=src/ndl_layout/models/ndl_layout_config.py, checkpoint=src/ndl_layout/models/epoch_140_all_eql_bt.pth
set up EQL (version NDL), 9 classes included.
load checkpoint from local path: src/ndl_layout/models/epoch_140_all_eql_bt.pth
No Transformation module specified
No SequenceModeling module specified
model input parameters 32 1200 20 1 512 256 7085 100 None ResNet None CTC
loading pretrained model from src/text_recognition/models/ndlenfixed64-mj0-synth1.pth
[{'input_dir': '/root/ocr_cli/sample_data', 'img_list': ['/root/ocr_cli/sample_data/img/default.jpg'], 'output_dir': '/root/ocr_cli/output_dir/sample_data'}]
{'input_dir': '/root/ocr_cli/sample_data', 'img_list': ['/root/ocr_cli/sample_data/img/default.jpg'], 'output_dir': '/root/ocr_cli/output_dir/sample_data'}
######## START PAGE INFERENCE PROCESS ########
### Page Separation ###
1/1 [==============================] - 1s 1s/step
img 0 top conf: 0.8656622171401978
### Page Deskew Process ###
### Page Deskew Process ###
### Layout Extraction Process ###
/usr/local/lib/python3.7/dist-packages/mmdet/datasets/utils.py:68: UserWarning: "ImageToTensor" pipeline is replaced by "DefaultFormatBundle" for batch inference. It is recommended to manually replace it in the test data pipeline in your config f
ile.
  'data pipeline in your config file.', UserWarning)
### Layout Extraction Process ###
### Line OCR Process ###
### Line OCR Process ###
This BLOCK elemetn will be skipped.
{'TYPE': '図版', 'X': '881', 'Y': '378', 'WIDTH': '439', 'HEIGHT': '428', 'CONF': '0.999'}
This BLOCK elemetn will be skipped.
{'TYPE': '図版', 'X': '881', 'Y': '378', 'WIDTH': '439', 'HEIGHT': '428', 'CONF': '0.999'}
No predicted STRING for this xml_line
{'TYPE': '図版', 'X': '881', 'Y': '378', 'WIDTH': '439', 'HEIGHT': '428', 'CONF': '0.999'}
########  END PAGE INFERENCE PROCESS  ########
### save xml : /root/ocr_cli/output_dir/sample_data/xml/sample_data.xml###
================== PROCESSING TIME ==================
Average processing time : 6.026494741439819 sec / image file 

結果、以下のようにOCRの処理結果を確認することができました。

root@fd35b62fef61:~/ocr_cli# cat output_dir/sample_data/xml/sample_data.xml 
<?xml version='1.0' encoding='utf-8'?>
<OCRDATASET><PAGE HEIGHT="3426" IMAGENAME="default_L.jpg" WIDTH="2485">
<LINE CONF="1.000" HEIGHT="440" STRING="に決定いたしました。" TYPE="本文" WIDTH="45" X="1147" Y="522" />
<LINE CONF="1.000" HEIGHT="2319" STRING="ず、講壇から博士を失ふことを惜しまないものはありませんでした。それで博士記念のために國文學研究の一" TYPE="本文" WIDTH="56" X="1614" Y="517" />
<LINE CONF="1.000" HEIGHT="2336" STRING="事業を起さうといふ議が、やがて博士の知人門下生の間に起り、十二年三月本會が出來て、資金の募集に著手" TYPE="本文" WIDTH="58" X="1519" Y="517" />
<LINE CONF="1.000" HEIGHT="2334" STRING="ありません。大正十一年三月病のために願に依つて本官を免ぜられましたが、博士を知ると知らざるとを問は" TYPE="本文" WIDTH="55" X="1709" Y="519" />
<LINE CONF="1.000" HEIGHT="2337" STRING="られ、又わが國文學界に於ける新研究の開拓者として學界に貢獻された功績の顯著なことは、今更申すまでも" TYPE="本文" WIDTH="55" X="1804" Y="519" />
<LINE CONF="1.000" HEIGHT="876" STRING="原典研究に從事されることになりました。" TYPE="本文" WIDTH="48" X="765" Y="516" />
<LINE CONF="1.000" HEIGHT="2311" STRING="爾來君は主力を原典の搜索、蒐集に注ぎ、廣くこれを全國に探り、得るに隨つて或は摸寫し、或は撮影して、" TYPE="本文" WIDTH="52" X="668" Y="566" />
<LINE CONF="1.000" HEIGHT="2330" STRING="したのであります。中途大震火災の變に遭遇しましたが、幸に資を得ること金五千餘圓に達しました。そこで" TYPE="本文" WIDTH="53" X="1426" Y="523" />
<LINE CONF="1.000" HEIGHT="2309" STRING="ば、諸註研究の完備は期し難いことを痛感され、實行委員も亦これを容認したので、君は第一次事業として、" TYPE="本文" WIDTH="50" X="858" Y="517" />
<LINE CONF="1.000" HEIGHT="2291" STRING="東京帝國大學名譽教授故芳賀矢一博士が、久しく東大の國語國文學講座を擔當して、多數學生の指導に任ぜ" TYPE="本文" WIDTH="59" X="1897" Y="564" />
<LINE CONF="1.000" HEIGHT="2329" STRING="が漸次進むに隨つて、君は古註引くところの原文の異同に疑を抱き、先づ原典研究の基礎を固めるのでなけれ" TYPE="本文" WIDTH="51" X="952" Y="519" />
<LINE CONF="1.000" HEIGHT="2286" STRING="池田文學士は囑を受けてより日夜勵精、資料の蒐集及びその研究に從事することになりました。かくて研究" TYPE="本文" WIDTH="52" X="1045" Y="566" />
<LINE CONF="1.000" HEIGHT="2332" STRING="研究を新進有爲の學者に委囑することとし、芳賀博士の贊成を得て、これを文學士池田龜鑑君に囑託すること" TYPE="本文" WIDTH="53" X="1236" Y="522" />
<LINE CONF="1.000" HEIGHT="2337" STRING="實行委員は直ちに本資金及びその利子を以て源氏物語の諸註集成を作成せんことを企圖し、これを目標とした" TYPE="本文" WIDTH="52" X="1331" Y="518" />
<LINE CONF="0.999" HEIGHT="80" STRING="序" TYPE="本文" WIDTH="77" X="2129" Y="640" />
<LINE CONF="0.823" HEIGHT="88" STRING="3%θ" TYPE="本文" WIDTH="396" X="1632" Y="184" />
<BLOCK CONF="0.593" HEIGHT="46" STRING="一" TYPE="ノンブル" WIDTH="48" X="583" Y="2546" />
</PAGE><PAGE HEIGHT="3463" IMAGENAME="default_R.jpg" WIDTH="2595">
<LINE CONF="0.610" HEIGHT="151" STRING="中央" TYPE="本文" WIDTH="729" X="573" Y="2788" />
<LINE CONF="0.491" HEIGHT="117" STRING="" TYPE="キャプション" WIDTH="92" X="1683" Y="2778" />
<BLOCK CONF="0.999" HEIGHT="428" TYPE="図版" WIDTH="439" X="881" Y="378" />

まとめ

NDLOCRアプリを無事に実行することができました。実行後は、インスタンスの停止を忘れないようにしてください。

このようなアプリケーションを公開してくださったNDLの関係者の方々に深く感謝いたします。

追記

2022.04.28

Google Colabを用いた実行方法を記事にしました。こちらも参考になりましたら幸いです。

nakamura196.hatenablog.com

「NDL OCR x IIIF」アプリにTEI/XML形式でダウンロードする機能を追加しました。

国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリについて、OCR結果をTEI/XML形式でダウンロードする機能を追加しました。

https://static.ldas.jp/ndl-ocr-iiif/

本アプリについては、以下の記事も参考にしてください。

https://zenn.dev/nakamura196/articles/d559237570ccf2

本機能の追加にあたり、UIを更新しました。結果を「ビューア」と「データ」に分けています。

「ビューア」については、従来から提供していた「Mirador」と「Curation Viewer」に加えて、「Universal Viewer」、「Image Annotator」を追加しました。また、「次世代デジタルライブラリー」へのリンクと、TEI/XMLファイルの簡易ビューアとして「TEI Viewer」というページを実装して追加しています。

「データ」については、「マニフェストファイル」「キュレーションリスト」「TEI/XML」の3種類を提供します。

用途に応じてご活用いただけますと幸いです。

CSVファイルを用いたresearchmap業績の新規登録・更新・削除方法

概要

researchmapの業績について、CSVファイルを用いた新規登録・更新・削除を行いました。本記事では、その方法と使用したデータを共有します。

今回使用したサンプルデータ

https://github.com/ldasjp8/researchmap

新規登録

まず「インポート」ボタンをクリックします。

インポートダイアログが表示されるため、新規登録用のcsvファイルを選択して、「整合性チェック」ボタンを押します。

登録するcsvファイルの例を以下に格納しました。「published_papers」へ新規登録を行う例です。

https://github.com/ldasjp8/researchmap/blob/main/create.csv

公式の「CSV項目定義書」やCSVファイルのサンプルは以下で取得できます。

https://researchmap.jp/public/other-document/specification

結果、「処理待ち」のタスクが登録されます。

少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。

以下の画面に遷移後、「インポート」ボタンを押します。

再び「処理待ち」のタスクが登録されます。

少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。

「論文」の一覧ページでも、新規に登録されていることを確認できます。

なお、以降の「更新」「削除」においては、登録した業績のIDが必要になります。今回登録した業績のIDは36765885でした。このIDは、登録した個々の業績のURLなどから確認することができます。

また、既に登録済みの業績のIDを一括取得する場合は、「エクスポート」機能などを用います。

更新

新規登録と同様、「インポート」機能を用いて、更新用のCSVファイルを登録します。

更新用のcsvファイルの例を以下に格納しました。

https://github.com/ldasjp8/researchmap/blob/main/update.csv

ポイントとして、アクションタイプに「similar_merge」、類似業績マージ優先度に「input_data」、IDに先ほど取得した業績のIDを入力しています。 

これらを行いたいことに対して適切に設定しないと、類似業績などによって整合性チェックでエラーが発生する可能性があります。

以下のCSV項目定義書のページが参考になります。

https://researchmap.jp/outline/v2api/v2CSV.pdf#page=7

以下のようにタスクが登録されます。

少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。

以下の画面に遷移後、「インポート」ボタンを押します。

少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。

以下のように、先ほど登録した業績の情報が更新されます。

削除

これまでと同様、「インポート」機能を用いて、削除用のCSVファイルを登録します。削除用のcsvファイルの例を以下に格納しました。

https://github.com/ldasjp8/researchmap/blob/main/delete.csv

CSVファイルの登録後、少し待って「更新」ボタンを押すと、以下のように整合性チェックが終了します。「こちらよりチェック結果を確認」リンクをクリックします。

以下の画面に遷移後、「インポート」ボタンを押します。

少し待って「更新」ボタンを押すと、以下のようにインポートが終了します。

業績のページにアクセスしてみることで、業績が正しく削除されていることを確認できます。

まとめ

researchmapの業績に対する一括登録や更新、削除を行う際の参考になりましたら幸いです。