ホーム 記事一覧 ブック DH週間トピックス 検索 このサイトについて
RSS English
Amazon Lightsailを用いたOmeka Classicサイトの構築(独自ドメイン+SSL化を含む)

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

概要 Amazon Lightsailを用いたOmkea Sの構築方法を以下の記事にまとめました。 今回はAmazon Lightsailを用いたOmeka Classicの構築法方について紹介します。Omeka Classicは以下の本で紹介しているように、IIIF Toolkitを用いたアノテーション付与環境の構築などに有用です。 https://zenn.dev/nakamura196/books/2a0aa162dcd0eb 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-9-30 4.19.0-20-cloud-amd64 #1 SMP Debian 4.19.235-1 (2022-03-17) 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.29-0 *** *** Documentation: https://docs.bitnami.com/aws/infrastructure/lamp/ *** *** https://docs.bitnami.com/aws/ *** *** Bitnami Forums: https://community.bitnami.com/ *** bitnami@ip-172-26-9-30:~$ インスタンス内での作業 ファイルの移動 まず、必要なファイルのダウンロードや移動を行います。 ...

Elastic Searchにおける異なるキーと値(ラベルとID)を持つアグリゲーション

Elastic Searchにおける異なるキーと値(ラベルとID)を持つアグリゲーション

概要 現在Cultural Japanプロジェクトにおける検索アプリの更新を進めており、多言語データのアグリゲーションを行う必要がありました。本記事では、その方法に関する調査結果の備忘録です。 データ データとしては、以下のように、agential(人物を示す)フィールドに、id、ja、enの値を持つケースを想定します。 { "agential": [ { "ja": "葛飾北斎", "en": "Katsushika, Hokusai", "id": "chname:葛飾北斎" } ] } 上記のデータに対して、idでフィルタリング処理などを行いつつ、言語設定に合わせてjaまたはenの値を表示することを想定します。 理想的には、aggregationの結果として、以下のようなデータを取得したいです。 (jaを指定した場合) { "buckets": [ { "key": "葛飾北斎", "id": "chname:葛飾北斎", "doc_count": 1 } ] } (enを指定した場合) { "buckets": [ { "key": "Katsushika, Hokusai", "id": "chname:葛飾北斎", "doc_count": 1 } ] } 方法1: nested aggregationの利用 以下の記事を参考に、nested aggregationを試します。 https://discuss.elastic.co/t/aggregeations-with-different-keys-and-values-label-and-id/274218 DELETE test PUT test { "mappings": { "properties": { "agential": { "type": "nested", "properties": { "id": { "type": "keyword" }, "ja": { "type": "keyword" }, "en": { "type": "keyword" } } } } } } PUT test/_doc/1 { "agential": [ { "ja": "葛飾北斎", "en": "Katsushika, Hokusai", "id": "chname:葛飾北斎" } ] } GET test/_search { "query": { "bool": { "filter": [ { "nested": { "path": "agential", "query": { "bool": { "filter": [ { "term": { "agential.id": "chname:葛飾北斎" } } ] } } } } ] } }, "_source": [ "agential" ], "aggs": { "agential": { "nested": { "path": "agential" }, "aggs": { "id": { "terms": { "field": "agential.id" } }, "label": { "terms": { "field": "agential.ja" } } } } } } この場合、以下のような結果が返却されます。 ...

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

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

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

AWS Copilotを用いたOmeka Sデータの定期バックアップ

AWS Copilotを用いたOmeka Sデータの定期バックアップ

概要 先日、Omeka Sのデータをダウンロードするプログラムを作成しました。 今回は、AWS Copilotを使用して、上記のプログラムを定期的に実行してみます。 AWS Copilotのインストール 以下を参考にしてください。 https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/AWS_Copilot.html ファイルの準備 任意の場所で、Dockerfile、main.sh、.envの3ファイルを作成します。 Dockerfile FROM python:3 COPY *.sh . CMD sh main.sh main.sh set -e export output_dir=../docs # Omeka Sからデータをダウンロードするプログラム export repo_tool=https://github.com/nakamura196/omekas_backup.git dir_tool=tool dir_dataset=dataset # フォルダが存在したら if [ -d $dir_tool ]; then rm -rf $dir_tool rm -rf $dir_dataset fi # clone git clone --depth 1 $repo_tool $dir_tool git clone --depth 1 $repo_dataset $dir_dataset # requirements.txt cd $dir_tool pip install --upgrade pip pip install -r requirements.txt # 実行 cd src sh main.sh # copy odir=../../$dir_dataset/$subdir mkdir -p $odir cd $odir cp -r ../../$dir_tool/data . cp -r ../../$dir_tool/docs . # git git status git add . git config user.email "$email" git config user.name "$name" git commit -m "update" git push # 後処理 cd ../../ rm -rf $dir_tool rm -rf $dir_dataset .env api_url=https://dev.omeka.org/omeka-s-sandbox/api github_url=https://<個人アクセストークン>@github.com/<ユーザ名>/<リポジトリ名>.git username=nakamura email=nakamura@example.org dirname=dev 以下、説明です。 ...

Mirador 3にmirador-image-toolsプラグインを追加して、1つのjsファイルにまとめて配布する方法

Mirador 3にmirador-image-toolsプラグインを追加して、1つのjsファイルにまとめて配布する方法

概要 表題の通り、Mirador 3にmirador-image-toolsなどのプラグインを追加して、1つのjsファイルにまとめて配布する方法を記述します。 JavaScriptに関する知識不足により、誤った記述があるかもしれません。間違っている点などがありましたらご指摘いただけますと幸いです。 ゴール 以下に示すようなHTMLファイルを記述することにより、以下のURLから確認できるアプリを作成することが目的です。mirador-image-toolsプラグインが有効化されているMirador 3を使用しています。 https://nakamura196.github.io/mirador-integration-alt/ <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Basic Mirador</title> </head> <body> <div id="demo"></div> <!-- ポイント --> <script src="https://nakamura196.github.io/mirador-integration-alt/dist/main.js"></script> <script> // 注意点 const {Mirador, miradorImageToolsPlugin} = integration const config = { id: "demo", windows: [ { imageToolsEnabled: true, imageToolsOpen: true, manifestId: "https://iiif.dl.itc.u-tokyo.ac.jp/repo/iiif/fbd0479b-dbb4-4eaa-95b8-f27e1c423e4b/manifest", }, ] }; Mirador.viewer(config, [...miradorImageToolsPlugin]); </script> </body> </html> ポイントは、上記のソースコードで「<!-- ポイント -->」としている点です。1つのjsファイルを読み込むことで、Mirador 3とmirador-image-toolsプラグインを使用しています。 ...

ファイルのアップロード(python)とダウンロード(php)

ファイルのアップロード(python)とダウンロード(php)

ファイルをサーバにアップロードする機会があり、その備忘録です。 サーバ上で動作する画像の受け取りプログラムはphpで作成しました。セキュリティ等には十分にお気をつけください。 upload.php <?php $root = "./"; //適宜変更してください。 $path = $_POST["path"]; $dirname = dirname($path); if (!file_exists($dirname)) { mkdir($dirname, 0755, true); } move_uploaded_file($_FILES['media']['tmp_name'], $root.$path); ?> ファイルをpostでアップロードするプログラムはpythonで作成しました。ローカルの画像ファイルと、出力先のパスをpostしています。 import requests import json url = '<upload.phpのURL>' input_local_image_path = 'input/test.jpg' output_server_image_path = "output/test2.jpg" files = {'media': open(input_local_image_path, 'rb')} json_data = { "path": output_server_image_path } response = requests.post(url, files=files, data=json_data) print(response) print(response.text) 繰り返しになりますが、セキュリティ等を十分に考慮した上でご使用ください。

python-docxを用いたMicrosoft Wordファイルの作成:テンプレート、int2kanjiの利用など

python-docxを用いたMicrosoft Wordファイルの作成:テンプレート、int2kanjiの利用など

概要 以下のように表形式で管理している情報を、Microsoft Wordの縦書きフォーマットに変換する機会がありましたので、その備忘録です。 変換前 研究課題名 課題番号 直接経費 持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発 21K18014 2600000 変換後 指定されたテンプレートの利用や、「数字 <-> 漢数字 の相互変換ライブラリ 「Kanjize」」を利用しています。 python-docxを用いたMicrosoft Wordファイルの作成 まず、以下のようなMicrosoft Wordのテンプレートファイルを作成します。指定されたレイアウトを使用しつつ、値を変更したい部分に{<変数名>}を指定します。 そして、上記のテンプレートで使用した変数名に対応したjsonファイルなどを作成します。 { "direct_cost": "二百六十万", "indirect_cost": "七十八万", "period_end": "二〇二三", "period_start": "二〇二一", "principal_investigator": "中村 覚", "project_number": "二一K一八〇一四", "research_category": "若手研究", "research_title": "持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発" } そして、以下のようなpythonスクリプトを実行することにより、指定されたフォーマットに基づくMicrosoft Wordファイルを作成することができます。 import docx import json item = { "direct_cost": "二百六十万", "indirect_cost": "七十八万", "period_end": "二〇二三", "period_start": "二〇二一", "principal_investigator": "中村 覚", "project_number": "二一K一八〇一四", "research_category": "若手研究", "research_title": "持続性と利活用性を考慮したデジタルアーカイブシステム構築手法の開発" } doc = docx.Document("template.docx") for para in doc.paragraphs: text = para.text for key in item: target = "{"+key+"}" if target in text: text = text.replace(target, item[key]) para.text = text opath = "output.docx" doc.save(opath) 数字 <-> 漢数字 の相互変換 上記の入力用のjsonファイルを作成するにあたり、数字を漢数字に変換する必要がありました。 例:2600000 -> 二百六十万 ...

Google ColabからGoogle Spreadsheetのデータを取得するサンプルノートブック

Google ColabからGoogle Spreadsheetのデータを取得するサンプルノートブック

Google ColabからGoogle Spreadsheetのデータを取得するサンプルノートブックを作成しました。 以下からお試しいただけます。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/Google_ColabからGoogle_Spreadsheetのデータを取得するサンプル.ipynb 以下のように、Google Spreadsheetの内容を取得できます。 以下、ソースコードです。 from google.colab import auth auth.authenticate_user() import gspread from google.auth import default creds, _ = default() gc = gspread.authorize(creds) import pandas as pd from pandas import json_normalize # シートの指定 ss_id = "<Google SpreadsheetのID>" workbook = gc.open_by_key(ss_id) worksheet = workbook.get_worksheet(0) # 全データを取得 data = worksheet.get_all_records() df = json_normalize(data) df 参考になりましたら幸いです。

【備忘録】sam deployを行う際のprofileの指定

【備忘録】sam deployを行う際のprofileの指定

以下のようにprofileを指定してdeployする。 sam deploy --guided --profile <profile名>

AWS SAMを用いたローカル開発時におけるError building docker imageへの対応

AWS SAMを用いたローカル開発時におけるError building docker imageへの対応

AWS SAMを用いたローカル開発を行う際、以下のような手順を踏んでいます。 sam init --runtime=python3.8 cd sam-app sam local start-api ただ上記を実行した際、以下のエラーが発生することがありました。 samcli.commands.local.cli_common.user_exceptions.ImageBuildException: Error building docker image: pull access denied for public.ecr.aws/sam/emulation-python3.8, repository does not exist or may require 'docker login': denied: Your authorization token has expired. Reauthenticate and try again. この時、以下を実行することでエラーを解消することができました。regionなどは環境に合わせて修正する必要があるかもしれません。 aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws 同様のエラーでお困りの方の参考になりましたら幸いです。

gdriveを用いたOmeka Sの簡易バックアップ

gdriveを用いたOmeka Sの簡易バックアップ

概要 gdriveを用いたOmeka Sの簡易バックアップの方法についてのメモです。 ここでは例として、Amazon Lightsailで起動したLAMP環境にインストールしたOmeka Sを対象とします。インストール方法は以下をご確認ください。 gdriveのインストール 今回は、Google Driveにファイルをバックアップします。そのため、gdriveを使用します。以下の記事を参考に、gdriveをインストールしてください。 backup用のスクリプトを用意する $HOMEディレクトリにおいて、例えばbackup.shというファイルを作成します。ファイルの内容の一例は以下です。 # 設定値 ## Omeka Sのインストールディレクトリ OMEKA_DIRNAME=htdocs OUTPUT_DIRNAME=`date +%y-%m-%d` ## MySQLのユーザ名。 USERNAME=root ## MySQLのパスワード。以下のコマンドで確認できます。 ## cat /home/bitnami/bitnami_application_password PASSWORD=<パスワード> ## Omeka Sのデータベース名。例:omekas DATABASE_NAME=<データベース名> FOLDER_ID=<GoogleドライブのフォルダID> # 出力フォルダの作成(日付に基づくフォルダ名を作成) mkdir -p "$OUTPUT_DIRNAME" # sqlのバックアップ mysqldump -u $USERNAME -p$PASSWORD $DATABASE_NAME > $OUTPUT_DIRNAME/dump.sql # omeka関連フォルダの圧縮 zip -q $OUTPUT_DIRNAME/$OMEKA_DIRNAME -r $OMEKA_DIRNAME # Google Driveへのアップロード ./go/bin/gdrive upload --recursive --parent $FOLDER_ID $OUTPUT_DIRNAME # 出力フォルダの削除 rm -rf $OUTPUT_DIRNAME 上記のファイルを作成後、以下のコマンドを実行します。 ...

Using gdrive in a LAMP environment started with Amazon Lightsail

Using gdrive in a LAMP environment started with Amazon Lightsail

Overview Memorandum for using gdrive in a LAMP environment started with Amazon Lightsail, allowing backup of files to Google Drive, etc. Procedure First, access Amazon Lightsail and press the following “Connect using SSH” button on the target instance. You can access the server as follows. 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 programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the /usr/share/doc/*/copyright. 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/ *** Last login: Thu May 12 03:25:13 2022 from 72.21.217.186 bitnami@ip-172-26-5-202:~$ Install golang Install golang as follows. ...

Amazon Lightsailで起動したLAMP環境でgdriveを使用する

Amazon Lightsailで起動したLAMP環境でgdriveを使用する

概要 Amazon Lightsailで起動したLAMP環境でgdriveを使用するための備忘録です。Google Driveへのファイルのバックアップなどが可能になります。 手順 まず、Amazon Lightsailにアクセスして、対象となるインスタンスにおいて、以下の「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/ *** Last login: Thu May 12 03:25:13 2022 from 72.21.217.186 bitnami@ip-172-26-5-202:~$ golangのインストール 以下のように、golangをインストールします。 ...

What to do when

What to do when

Overview When creating a large number of files on a shared drive, I encountered an error message “An error has occurred in Google Drive. and the file could not be saved. The cause of the above may be that the file was caught by the shared drive limitation shown below. https://support.google.com/a/answer/7338880?hl=en *The maximum number of items that can be stored on a shared drive The maximum number of items that can be stored on a shared drive is 400,000. This includes files, folders, and shortcuts. * ...

「Google ドライブでエラーが発生しました。」が生じた時の対処方法:共有ドライブのゴミ箱を空にするスクリプト

「Google ドライブでエラーが発生しました。」が生じた時の対処方法:共有ドライブのゴミ箱を空にするスクリプト

概要 共有ドライブに対して大量のファイルを作成した際、以下のように「Google ドライブでエラーが発生しました。」が表示され、ファイルを保存できなくなる事象に出会いました。 上記の原因として、以下に示す共有ドライブの制限に引っかかったことが考えられます。 https://support.google.com/a/answer/7338880?hl=ja 共有ドライブに保存できるアイテム数の上限 共有ドライブに保存できるアイテム数は最大 40 万個です。これにはファイル、フォルダ、ショートカットが含まれます。 1 日のアップロードの上限 個々のユーザーがマイドライブおよびすべての共有ドライブにアップロードできるのは、1 日あたり 750 GB までです。 2つ目の「1日のアップロードの上限」に引っかかってしまった場合には、1日待つほかないと思います。 一方、1つ目の「共有ドライブに保存できるアイテム数の上限」について、不要なファイルを削除することで対応することができます。 ただし、単にファイルを削除しただけでは、それらがゴミ箱に残ってしまい、(おそらく)先の制限を解除することができません。そこで、共有ドライブのゴミ箱を空にするスクリプトを探したところ、以下の記事に辿り着きました。 https://stackoverflow.com/questions/57764248/is-there-a-script-to-empty-google-team-drive-trash-related-folders 以下、上記で紹介されているスクリプトの使用方法について説明します。これにより、先述した「共有ドライブに保存できるアイテム数の上限」に引っかかってしまった際、その制限を解除することができます。 共有ドライブのゴミ箱を空にするスクリプトの実行方法 以下のスクリプトをコピペして利用します。 const driveId = "<共有ドライブのID>"; function myFunction() { var optionalArgs={driveId, 'includeItemsFromAllDrives':true, 'corpora': 'drive', 'supportsAllDrives': true, 'q':'trashed = true' } while(true){ var trashed=Drive.Files.list(optionalArgs).items; console.log("削除対象のファイルサイズ", trashed.length) for(var i=0;i<trashed.length;i++){ //console.log(i, trashed[i].id) try { Drive.Files.remove(trashed[i].id, {'supportsAllDrives':true}) } catch (e){ //console.log({e}) } } if(trashed.length == 0){ break } } } まず、以下のURLにアクセスしてください。 https://script.google.com/home そして、下図に示す、「新しいプロジェクト」をクリックします。 先のスクリプトをコピペしてください。コピペ後、一行目の「driveId」を変更し、画面上部の「保存」ボタンを押してください。 次に、サービスを追加します。「サービス」から「Drive API」を追加してください。 その後「実行」ボタンを押します。 初回は承認が求められます。 以下に示すように、100件ずつ削除されていきます。 一定時間が経過すると、以下のようにエラーが発生します。その場合には、再度「実行」ボタンを押してください。 まとめ よりよい解決策があるかもしれませんが、「Google ドライブでエラーが発生しました。」等でお困りの方の参考になりましたら幸いです。 追記 2022.05.06 GASでは、スクリプトの実行時間が6分間という縛りがあるそうです。 ...

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を用いたGoogle Drive上のファイルの削除方法

Google Colabを用いたGoogle Drive上のファイルの削除方法

Google Drive上のファイルをGoogle Colabを用いて削除する例を示すノートブックを作成しました。Google Drive上に不要なファイルを大量に作成してしまった際など、ご活用いただけますと幸いです。 https://colab.research.google.com/github/nakamura196/ndl_ocr/blob/main/Google_Drive上のファイルを削除するノートブック.ipynb

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アプリの更新:Sigle input dir modeの追加

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)」を選択することをお勧めします。 誤った理解をしている点があるかもしれませんが、参考になりましたら幸いです。

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 でした。 ...