ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
English
NDL-DocLデータセットとYOLOv5を用いたレイアウト抽出モデルを作成しました。

NDL-DocLデータセットとYOLOv5を用いたレイアウト抽出モデルを作成しました。

概要 NDL-DocLデータセットとYOLOv5を用いたレイアウト抽出モデルを作成しました。 https://github.com/ndl-lab/layout-dataset https://github.com/ultralytics/yolov5 本モデルは以下のノートブックからお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/NDL_DocLデータセットとYOLOv5を用いたレイアウト抽出モデル.ipynb 本記事は、上記の学習過程の備忘録です。 データセットの作成 Pascal VOC形式のNDL-DocLデータセットを、YOLO形式に変換します。この方法については、以下の記事を参考にします。Pascal VOC形式からCOCO形式への変換に加えて、COCO形式からYOLO形式への変換を追加しています。 学習 以下のページにカスタムデータの学習方法が記載されています。 https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data 以下のノートブックにも学習方法が記載されています。 https://colab.research.google.com/github/ultralytics/yolov5/blob/master/tutorial.ipynb 入力画像のサイズを1024、バッチサイズを4、エポック数を300に設定した結果、以下のような結果が得られました。なお、データセットをtrain 80%, validation 10%, test 10%に分けています。 推論 上述した通り、以下のノートブックから推論をお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/NDL_DocLデータセットとYOLOv5を用いたレイアウト抽出モデル.ipynb 以下、推論結果の例です。うまく認識できた例のみを掲載しています。 『源氏物語』(東京大学所蔵) 『源氏物語』(京都大学所蔵) 『源氏物語』(九州大学所蔵) まとめ レイアウト認識の結果を踏まえ、次は行内の文字認識に取り組みたいと思います。

NDL OCRでルビのテキスト化を行えるようにしていただきました。

NDL OCRでルビのテキスト化を行えるようにしていただきました。

概要 NDL OCRについて、これまではルビのテキスト化を行わない設定がデフォルトでした。これに対して、NDLの方々のご協力により、テキスト化を行うか否かを設定できるようにしていただきました。 https://github.com/ndl-lab/ndlocr_cli/ config.yamlの以下をTrueにするとルビのテキスト化機能が動作します。 yield_block_rubi: False また、以下の留意事項があるとのことです。ご利用される際はご注意ください。 必ずしもルビの振られた漢字の箇所で切れるわけではなく、複数箇所のルビがマージされて出力されてしまうことも多い ルビは字のサイズが小さいことから、〓になってしまうことも多い チュートリアル用のノートブックの更新 ルビのテキスト化オプションについて、チュートリアル用のGoogle Colabにも追加しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_ocr_v2.ipynb rubyというオプションにチェックを入れると、ルビのテキスト化を行います。デフォルトでは、従来通りFalse(ルビのテキスト化は行わない設定)にしています。 また今回の機能追加に合わせて、PDFを入力とした際の不具合修正や、認識結果の出力方法の変更等を行いました。認識結果を保存したGoogleドライブへのリンクを出力し、リンク先で認識結果を確認する方法に統一しました。 操作方法については、今回の修正内容は含まれていませんが、以下のデモ動画を用意しています。Google Colabの使い方など、参考になりましたら幸いです。 https://youtu.be/46p7ZZSul0o

Google Colabを用いたNDLOCRアプリの使い方の動画を作成しました。

Google Colabを用いたNDLOCRアプリの使い方の動画を作成しました。

Google Colabを用いたNDLOCRアプリの使い方の動画を作成しました。参考になりましたら幸いです。 https://youtu.be/46p7ZZSul0o 動画中で使用されているブログは以下です。 なお、「初期セットアップ」の部分は動画をトリミングしています。実際には3~5分程度かかりますので、ご注意ください。

Google Colabを用いたgcv2hocrの実行例:Google Vision APIを用いた透明テキスト付きPDFファイルの作成

Google Colabを用いたgcv2hocrの実行例:Google Vision APIを用いた透明テキスト付きPDFファイルの作成

概要 gcv2ocrは、Google Cloud Vision OCR出力からhocrに変換して、検索可能なpdfを作成するリポジトリです。 https://github.com/dinosauria123/gcv2hocr 今回、上記リポジトリをGoogle Colabで実行するノートブックを作成しました。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/gcv2hocrの実行サンプル.ipynb 以下のように、検索可能なpdfファイルを作成することができます。 使い方 以下のノートブックにアクセスします。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/gcv2hocrの実行サンプル.ipynb まず、Google Cloud Vision APIを使用するためのAPIキーを取得します。以下の記事などが参考になります。 https://zenn.dev/tmitsuoka0423/articles/get-gcp-api-key APIキーを入力したら、以下の初期セットアップに関する3つの再生ボタンを押します。 その後は、以下に示す実行オプションから、適切なものを選択します。 画像 画像のURL 画像のアップロード PDF PDFのURL PDFのアップロード IIIF IIIF 例えば、「画像のURL」を指定する場合、以下に示す「設定」と「実行」の2つの再生ボタンを押します。 実行後、PDFファイルがダウンロードされます。また、認識結果等が出力されるパスが表示されます。 まとめ gcv2ocrやhocr-toolsなど、便利なツールを開発してくださった方々に感謝いたします。

Google Colabを用いたNDLOCRアプリのVersion 2を作成しました。

Google Colabを用いたNDLOCRアプリのVersion 2を作成しました。

お知らせ ノートブックのURL https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_ocr_v2.ipynb 2022-07-06 使い方のデモ動画を作成しました。 https://youtu.be/46p7ZZSul0o またルビのテキスト化機能が追加されました。 概要 Google Colabを用いたNDLOCRアプリを作成し、以下の記事で紹介しました。 今回は、上記ノートブックの改良版であるVersion 2を作成しましたので紹介します。以下からノートブックにアクセスいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/ndl_ocr_v2.ipynb 特徴 複数の入力形式に対応しました。以下のオプションを使用できます。 画像 単一の画像ファイルのURLを指定する場合 単一の画像ファイルをアップロードする場合 複数の既にダウンロード済みの画像ファイルを対象にする場合(Sigle input dir mode) 複数の既にダウンロード済みの画像ファイルを対象にする場合(Image file mode: 単体の画像ファイルを入力として与える場合) PDF 単一のPDFファイルのURLを指定する場合 単一のPDFファイルをアップロードする場合 単一の既にダウンロード済みのPDFファイルを対象にする場合 複数の既にダウンロード済みのPDFファイルを格納したフォルダを指定する場合 IIIF IIIFマニフェストファイルのURLを指定する場合(本記事執筆時点ではPresentation API v2のみ) PDFファイルやIIIFマニフェストファイルの入力をサポートします。また、Version 1では事前にGoogle Driveに画像ファイルをアップロードする必要がありましたが、Version 2では画像ファイルのURLの指定や、アップロードフォームによる登録機能を提供しています。 さらに、上記のいくつかのオプションにおいて、実行後に推論結果をマージしたテキストファイルをダウンロードする機能を提供します。ダウンロードしたテキストファイルをVoyantツールなどの他のアプリケーションに使用することができます。(なお本格的な分析にあたっては、認識結果の修正やトークナイズの方法など、各種調整が必要です。) 使用方法 1.初期セットアップ 以下に示す2つの実行ボタンを押してください。Googleドライブのアクセス許可が求められるので、許可してください。 2.設定 上述したオプションから、目的に応じたものを選択してください。各オプションに付与されたリンクをクリックすると、当該オプションの設定画面に遷移します。 実行後 実行後は、以下のように、出力フォルダが表示されます。設定において選択したprocessの値が「@(アットマーク)」とともにフォルダ名に付与されます。また既に出力フォルダが存在する場合には、フォルダ名の末尾に実行時間に基づくIDが「_(アンダーバー)」とともに付与されます。 また単一のファイルを処理するオプションを選択した場合、実行後、以下のようにテキストファイルがダウンロードされます。 まとめ NDLOCRアプリの利用にあたって、参考になりましたら幸いです。

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

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

先日、以下の記事を執筆しました。 今回は、Google Colabを用いたNDLOCRの実行にかかる時間について、かんたんな調査を行なったので、その結果をまとめます。 設定 GPUは以下です。 Fri Apr 29 06:26:29 2022 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla V100-SXM2... Off | 00000000:00:04.0 Off | 0 | | N/A 35C P0 23W / 300W | 0MiB / 16160MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+ 以下の画像を用いました。サイズは5000 x 3415 px で、 1.1 MB でした。 ...

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

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を作成しました。以下の記事も参考にしてください。 ...

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

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

概要 NDLが公開したNDLOCRアプリケーションについて、GCP(Google 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インスタンスの作成を完了します。 ...

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

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

国立国会図書館「次世代デジタルライブラリー」で公開されているOCR結果をIIIFビューアで閲覧するアプリについて、OCR結果をTEI/XML形式でダウンロードする機能を追加しました。 https://static.ldas.jp/ndl-ocr-iiif/ 本アプリについては、以下の記事も参考にしてください。 本機能の追加にあたり、UIを更新しました。結果を「ビューア」と「データ」に分けています。 「ビューア」については、従来から提供していた「Mirador」と「Curation Viewer」に加えて、「Universal Viewer」、「Image Annotator」を追加しました。また、「次世代デジタルライブラリー」へのリンクと、TEI/XMLファイルの簡易ビューアとして「TEI Viewer」というページを実装して追加しています。 「データ」については、「マニフェストファイル」「キュレーションリスト」「TEI/XML」の3種類を提供します。 用途に応じてご活用いただけますと幸いです。

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

【開発編】国立国会図書館「次世代デジタルライブラリー」で公開されている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勉強中の身ですが、他の方の参考になる部分がありましたら幸いです。

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

国立国会図書館「次世代デジタルライブラリー」で公開されている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での表示例 まとめ 本記事では本アプリの使い方について説明しました。別の記事では、本アプリの構築方法について説明したいと思います。