Google Colabを用いたNDLOCRアプリのVersion 2を作成しました。
お知らせ
ノートブックのURL
2022-07-06
使い方のデモ動画を作成しました。
またルビのテキスト化機能が追加されました。
概要
Google Colabを用いたNDLOCRアプリを作成し、以下の記事で紹介しました。
今回は、上記ノートブックの改良版であるVersion 2を作成しましたので紹介します。以下からノートブックにアクセスいただけます。
特徴
複数の入力形式に対応しました。以下のオプションを使用できます。
- 画像
- 単一の画像ファイルの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アプリの利用にあたって、参考になりましたら幸いです。
Discussion
いつもNDLOCRアプリの方を研究利用させていただいてます。
2週間ほど前までは、アプリが利用できていたのですが、数日前からこのようなエラーコードがでて利用することができません。複数の入力方式の方を試してみたのですが、すべてエラーコードが出てきました。
自分以外にも同様のエラーがでている方がいるそうです。
対応の程していただければ幸いです。
IndexError Traceback (most recent call last)
<ipython-input-6-b8576dfd6394> in <cell line: 10>()
8 input_file = next(iter(uploaded))
9
---> 10 ins = Task.pdfFromLocal(input_file, output_dir, process, ruby)
11 message(ins)
2 frames
/content/ndlocr_cli/task.py in merge_txt_and_download(self)
297 output_dir = self.output_dir
298 tmp_dirs = glob.glob(os.path.join(output_dir, "*/txt"))
--> 299 txt_dir = tmp_dirs[0]
300
301 file_id = os.path.basename(os.path.dirname(txt_dir))
IndexError: list index out of range
(20237/20)不具合の対応をしていただきありがとうございます。
OCRを試してみようと思い手順に従ってやったつもりですがエラーがでてしまうのですが何が悪いのか分からない状態です。
単一のPDFファイルのURLを指定する場合を実行
/usr/local/lib/python3.10/dist-packages/urllib3/connectionpool.py:1095: InsecureRequestWarning: Unverified HTTPS request is being made to host 'dglb01.ninjal.ac.jp'. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
warnings.warn(
OCR処理を実行しています。
IndexError Traceback (most recent call last)
<ipython-input-2-2325c3705cde> in <cell line: 8>()
6 ruby = False #@param {type:"boolean"}
7
----> 8 ins = Task.pdfFromUrl(url, output_dir, process, ruby)
9 message(ins)
2 frames
/content/ndlocr_cli/task.py in merge_txt_and_download(self)
297 output_dir = self.output_dir
298 tmp_dirs = glob.glob(os.path.join(output_dir, "*/txt"))
--> 299 txt_dir = tmp_dirs[0]
300
301 file_id = os.path.basename(os.path.dirname(txt_dir))
IndexError: list index out of range
ご連絡ありがとうございます。また不具合が生じてしまい、ご迷惑をおかけして申し訳ありません。
本ノートブックの不具合について、不完全ではありますが、修正しました。
またノートブックに記載しましたが、新しいノートブック(NDLOCRのver.2.1を使用したもの。これまではNDLOCRのver.1を使用していました。)を用意しました。今後はこちらをお使いいただけますと幸いです。
引き続き不具合などが生じるかと思いますが、都度ご連絡いただけますと幸いです。
今後とも何卒よろしくお願いいたします。
早急なご対応ありがとうございます。利用させていただきます。
はじめまして。
新しいノートブック(NDLOCRのver.2.1)を「すべてのセルを実行」したところ、以下のエラーが出力されました。
も問題ないようですが、原因について心当たりあるでしょうか?
単一の画像ファイルのURLを指定する場合
2025-04-02 の更新内容で、動作することを確認しました。
ご対応ありがとうございます。
お世話になります。
「単一の既にダウンロード済みのPDFファイルを対象にする場合」にて以下のエラーが表示され、出力ができません。恐れ入りますが、対応策をご教示いただけないでしょうか。よろしくお願いいたします。
UnboundLocalError Traceback (most recent call last)
<ipython-input-38-cffde1c0c446> in <cell line: 0>()
9
10 task = Task(出力フォルダ, process, ruby)
---> 11 task.prepare_pdf(入力ファイル)
12 task.run_common_pipeline()
<ipython-input-36-96f4af5bd585> in prepare_pdf(self, pdf_path_, 画像の長辺をリサイズするサイズ)
345
346 # 画像を保存
--> 347 img.save(target_name)
348
349 # 元の画像ファイルを削除
UnboundLocalError: cannot access local variable 'img' where it is not associated with a value
はじめまして。NDLOCRを研究に使用させていただいている者です。以前は何のトラブルもなく使用できたのですが、久しぶりに使ったところ、以下2点でトラブルが起きています。恐れ入りますが、アドバイスを頂くことは可能でしょうか?
1)初期セットアップが短時間で初期化(?)されてしまう。
初回のみ必要とありますが、維持できるのはほんの数十分で、1日に何度もやり直しが必要な状況です。
2)URL、画像ファイルともにエラーが出て使用できない。
以下のようなエラーが表示されてしまい、出力が出来ません。ドライブにはからのフォルダが生成されるのみで、PDFやテキストデータは入っていません。
FileNotFoundError Traceback (most recent call last)
<ipython-input-4-d994e66aa93c> in <cell line: 0>()
10 task = Task(出力フォルダ, process, ruby)
11 task.download_image(url, f"{str(1).zfill(4)}.jpg")
---> 12 task.run_common_pipeline()
3 frames
/usr/local/lib/python3.11/dist-packages/ldas/iiif.py in convert_ndl_ocr_xml_to_iiif_manifest(xml_path, base_manifest_path, output_manifest_path)
197
198 # Load XML content
--> 199 with open(xml_path, "r") as file:
200 content = file.read()
201
FileNotFoundError: [Errno 2] No such file or directory: '/content/output/21a53658-37e0-11f0-ae50-0242ac1c000c/21a53658-37e0-11f0-ae50-0242ac1c000c/xml/21a53658-37e0-11f0-ae50-0242ac1c000c.xml'
うまく説明できているか分かりませんが、直近でコメントを残している方々とほぼ同じ状況かと思います。
改善法など、何かしらアドバイスを頂けますと幸いです。
よろしくお願いいたします。
ご連絡ありがとうございます。また不具合申し訳ありません。
修正したいと思いますので、少々お時間をいただけますと幸いです。
こんにちは、今日PDFをアップロードしてOCRしてみましたが、以下のエラーがありました。
単一の画像ファイルをアップロードする場合でも同じようなエラーもありました。
よろしくお願い致します。