Google Colabを用いたNDLOCRアプリの更新:Sigle input dir modeの追加

概要 先日以下の記事およびノートブックを作成しました。 上記の記事執筆時点では、以下の入力形式にのみ対応していました。 Image file mode(-s fで指定) (単体の画像ファイルを入力として与える場合はこちら) ただ、以下の記事での検証により、複数の画像に対して上記のオプションを適用することは、オーバーヘッドが大きいことがわかりました。 そこで、以下の入力形式にも対応できるようにノートブックを修正しました。 Sigle input dir mode(-s sで指定)※デフォルト 以下、上記入力オプションの使い方について説明します。 使い方 「2.設定」の「input_structure」において、「s」を選択してください。従来の「Image file mode」を使用する場合には、「f」を選択してください。 「input_structure」で「s」を選んだ場合、「extensions」の項目は無視されます。 また、入力フォルダの作成方法に注意点があります。以下の入力フォルダのパスを指定する場合を例とします。 /content/drive/MyDrive/ndl_ocr/input/ この時、以下のように、「input」フォルダの下に「img」フォルダを作成し、その下に画像を格納します。 上記の準備および設定を行なった上で実行を行うと、「Sigle input dir mode」によりOCR処理を実行することができます。 まとめ 今回作成したノートブックについて、「f(Image file mode)」を選択した場合、指定した入力フォルダ内の階層構造を特に意識せずに実行することができます。ただしこのモードでは画像ファイル毎にプログラムを実行するため、一部オーバーヘッドが生じます。大量の画像ファイルを対象に実行する場合には、「s(Sigle input dir mode)」を選択することをお勧めします。 誤った理解をしている点があるかもしれませんが、参考になりましたら幸いです。

2022年4月29日 · 1 分 · Nakamura

Google Colabを用いたNDLOCRの実行にかかる時間について

先日、以下の記事を執筆しました。 今回は、Google Colabを用いたNDLOCRの実行にかかる時間について、かんたんな調査を行なったので、その結果をまとめます。 設定 GPUは以下です。 F r = = i N G F = N P = V P a = / r G = N A I U n = 0 A o P = o p D = c U = r I = e = r A N T = T s = u 2 - a e = e 3 s = n 9 S m m = s 5 e G I = n M e p = l C s I D = i 0 I = a : = n 6 = = g : 4 P = V = 2 6 e = 1 C I = p 6 0 r = 0 P I D = r : . f = 0 0 = o 2 3 = - = c 9 2 = S = e . P P = X = s 2 0 e w = M = s 0 3 r r = 2 2 = e 2 s : = . 3 = s 2 i U = . W = s s = . P = f t a = / I = o D e g = D = u r n e = O 3 = n i c / = f 0 = d v e C = f 0 = e - a = W T = r M p = y = p = V = e = e B = 0 = r u = 0 = s s = 0 = i - = 0 P = o I = 0 r = n d = 0 0 o = : = 0 M c = = 0 i e = 4 M = : B s = 6 e = 0 s = 0 m = 0 / = . o = : n = 3 r = 0 1 a = 2 y = 4 6 m = . D - = . 1 e = 0 i U = 0 6 = 3 s s = 0 = p a = O M = . g = f i = A e = f B = = = C = U = = D V G = = A o P = = l U = = V a - = = e t U = = r i t = 0 = s l i = % = i e l = = o = = n U = = : n C = G U = c o = P s = 1 o m = U a = 1 r p = D g = . r u M = e M e = 2 . t I = f e = e G = a m = E = u N o = C M M = l / r = C . . = 0 t A y = = = 以下の画像を用いました。サイズは5000 x 3415 px で、 1.1 MB でした。 ...

2022年4月29日 · 4 分 · Nakamura

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

Google Colabを用いたジャパンサーチRDFストアに対するSPARQLの実行例を示すノートブックを作成しました。Pythonを用いたRDFストア利用時の参考になりましたら幸いです。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ジャパンサーチのRDFストアを対象したSPARQLチュートリアル.ipynb 他にも以下のような参考サイト・チュートリアルがあります。 https://www.kanzaki.com/works/ld/jpsearch/ https://lab.ndl.go.jp/data_set/tutorial/

2022年4月29日 · 1 分 · Nakamura

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.実行」の再生ボタンを押してください。 今回の場合、以下のように、まず画像のダウンロードが行われます。 # # 8 # 0 % マ | ニ █ フ █ ェ █ ス █ ト █ が █ 指 █ 定 █ さ れ て | い る 4 場 / 合 5 は 、 [ 画 0 像 0 の : ダ 1 ウ 3 ン < ロ 0 ー 0 ド : 0 # 3 # , # 3 . 4 1 s / i t ] その後、抽出処理が始まります。処理対象の画像が多い場合、完了まで時間がかかります。 ...

2022年4月29日 · 2 分 · Nakamura

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

概要 前回、Google Cloud PlatformのCompute Engineを用いたNDLOCRアプリの実行方法を共有しました。 ただし、上記の方法は手続きが一部面倒で、かつ費用がかかる方法です。本番環境で使用するには適した方法ですが、小規模に、または試験的に使用するにはハードルが高い方法でした。 この課題に対して、 @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#推論処理の実行 ノートブックの実行:3.実行 「3.実行」の再生ボタンを押してください。 再生ボタンを押した後、以下のように、再生中ボタンが表示されます。 完了後は、以下のように、指定した出力フォルダに認識結果が保存されます。入力フォルダの構造を維持する形で出力するようにしています。また、設定において選択したprocessの値をフォルダ名に付与しています。processの値を変えて実行した際、それぞれの出力フォルダが残るようにしています。 以下のように、Googleドライブ上で認識結果の保存と確認が可能です。 まとめ 上記の方法により、Googleドライブ上に格納した画像に対するOCR処理と、その結果の保存を無料で 行うことができます。保存した結果を、さまざまな用途に活用することができます。 Google Colabを利用した実行方法を示してくださった @blue0620 さんに感謝いたします。 追記 2022.05.02 本ノートブックの改良版であるVersion 2を作成しました。以下の記事も参考にしてください。 ...

2022年4月28日 · 1 分 · Nakamura

The New York Public LibraryのAPIを使ってみる

概要 The New York Public Libraryでは、Digital Collections APIを提供しています。 http://api.repo.nypl.org/ 本記事では、このAPIの使い方の一例について説明します。 サインアップ まず以下のリンクをクリックして、サインアップを行います。 以下のようなフォームが表示されますので、必要な情報を入力します。 入力後、 Welcome to NYPL API という件名のメールが届きます。このメールの中に、 Authentication Token が記載されています。 メタデータの抽出 The New York Public Library Digital Collections APIではさまざまなendpointが提供されています。今回は以下のendpointを利用して、各アイテムのメタデータを抽出してみます。 http://api.repo.nypl.org/api/v1/items/item_details/[:id] 具体的には、以下のアイテムを例としてます。 https://digitalcollections.nypl.org/items/510d47e1-d3b0-a3d9-e040-e00a18064a99 そして、以下に示したメタデータの抽出を試みます。 以下のGoogle Colabにメタデータの抽出サンプルプログラムを作成しました。参考になりましたら幸いです。 https://colab.research.google.com/drive/1sO9plTqraPwdBF61sArlD6k6pZRpfJL8?usp=sharing 上記プログラムを実行すると、例えば以下のようなメタデータが得られます。 { } " " " " " t c d p i i o a l d t l t a e l l e c n e e I e t " c s " i : t s : f i u i " o e " e G n d K r e " " y " n : : o : j t i " " o " 1 " H m > 6 , a o 5 d n G 0 e o e s g n ( a j s C t i t o a a l r m r l i o t e : n ) c t S g 1 i a a 7 o k t 0 n a a 0 k r G i i ( u e i n : n d o d e S ) m a " I a k , D k a i k ( | i l T e h n g e o a c T m y a a ) l k : e i " 4 o , 4 f 3 | G H e a n d j e i s " , s t r u c I D ( l e g a c y ) : 7 4 7 8 7 7 | U n i v e r s a l U n i q u e I d e n t i f i e r ( U U I D ) : c e 4 b c d 9 0 - c 6 0 d - 0 1 2 f - 9 d 1 9 - 5 8 d 3 8 5 a 7 b c 3 4 " まとめ APIを利用したデータ活用の参考になりましたら幸いです。 ...

2022年4月23日 · 2 分 · Nakamura

pyvipsの使い方とPyramid Tiled Tiffファイルの作り方

概要 pyvipsを用いてPyramid Tiled Tiffファイルを作成するプログラムを作成しました。以下のGoogle Colabでお試しいただけます。 https://colab.research.google.com/drive/1VO1PgKgS3H21zXpg4g2inN-mtIrON5TQ?usp=sharing IIIFを用いた画像配信において、Pyramid Tiled Tiffファイルを作成する場面がありますが、PythonおよびVipsを用いた画像変換を行う際の参考になりましたら幸いです。 なお、パラメータ等は以下を参考にしています。 https://github.com/samvera-labs/serverless-iiif#using-vips また、変換したPyramid Tiled Tiffファイルを配信する方法の一例 として、以下の記事も参考になりましたら幸いです。 ポイント vipsのインストール pyvipsを使用するのは、vipsを事前にインストールしておく必要があります。以下が参考になります。 https://www.libvips.org/install.html pyvipsを用いたPyramid Tiled Tiffファイルの作成 以下のように使用します。 i i i m n n p s s o . r = t t c p t t t i i o y i i p f l m r l l p y f e p a e e y v s = r m _ _ v i a T e i w h i p v r s d i e p s e u s = d i s . ( e i T t g I < , o r h h m 出 n u = t a 力 = e 2 = g 画 ' , 5 2 e 像 j 6 5 . フ p , 6 n ァ e ) e イ g w ル ' _ の , f パ r ス o > m , _ f i l e ( < 入 力 画 像 フ ァ イ ル の パ ス > ) 上記は、以下と同じ結果が得られる(はず)です。 ...

2022年3月30日 · 2 分 · Nakamura