1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ndlocrよくわからんかった話

Posted at

やりたいこと

国会図書館プロジェクトのOCRをやってみる
動機付けはここから
https://qiita.com/yanosen_jp/items/9d3852c29c80dbb952f2
環境がWindowとのことで、こちらはUbuntuでしかやる予定が無いので後々参考外

国会図書館のNDL-OCRのgitページ
https://github.com/ndl-lab/ndlocr_cli

具体的に、詳細に

・米Amazonにのみ存在するKindle本を買ってAIに投げ込んで翻訳する
・日Amazon本のイメージファイルを文字起こししてデータ活用
・対象のデータを音声に起こしてリスニング学習する
 (読み聞かせによる強制力)
・自宅の書籍を自炊して処分する

前提とする環境はVSCode上のWSL,ディストリビューションはUbuntuの最新。

環境構築はじめ(リポジトリのクローン、コンテナビルド)

まずはNDL_OCRをクローン
CLIとsubmoduleで構成されているらしく、以下で一括で取得できる。

git clone --recursive https://github.com/ndl-lab/ndlocr_cli

gitのreadmeに従いビルドを行う。
今回はLinuxで行うので以下を実施

cd ndlocr_cli`
sh ./docker/dockerbuild.sh`
**出力**
30.79 ERROR: This script does not work on Python 3.8. The minimum supported Python version is 3.9. Please use https://bootstrap.pypa.io/pip/3.8/get-pip.py instead.

コンテナのビルドに失敗。pythonのバージョンに問題があるようだ。

環境構築沼る(pyenv導入失敗)

バージョンを確認し、3.8以降になっていることを確認

python3 --version
Python 3.12.3

再度実行しても同様のメッセージ

出力

26.22 ERROR: This script does not work on Python 3.8. The minimum supported Python version is 3.9. Please use https://bootstrap.pypa.io/pip/3.8/get-pip.py instead.
ERROR: failed to solve: process "/bin/sh -c set -x     && apt -y install python3.8 python3.8-dev     && ln -s /usr/bin/python3.8 /usr/bin/python     && apt -y install wget python3-distutils     && wget https://bootstrap.pypa.io/get-pip.py     && python get-pip.py     && python -m pip install --upgrade pip==24.0" did not complete successfully: exit code: 1

get-pip.pyの冒頭のスクリプトによるエラーが起きており、環境のpythonバージョンと3.8を比較して未達であればキックしているもの。
それ自体は正しく記述されてそうで、しかしながら環境のpythonバージョンは3.12
コンテナを落としてきており、そこのpythonバージョンが狂っているのかな?
実行環境のpythonバージョンを3.9にしてどうなるか見てみる。

pyenvで切り替えられるらしいのでインストール

sudo apt install pyenv
**出力**
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package pyenv

なんかインストールできない

環境構築沼る(uvを試そうとしたけどこれで解決無理目)

uvがいいらしいので試す
https://qiita.com/ssc-ksaitou/items/9da75058489ebe8c2009

#Cargo (Rustのパッケージマネージャ)
sudo apt install cargo
cargo install --git https://github.com/astral-sh/uv uv

cannot install package `uv 0.7.2`, it requires rustc 1.84 or newer, while the currently active rustc version is 1.75.0

rustcのバージョンが古いらしい

sudo apt upgrade rustc

uvを使う場合python実行の命令を書き換える必要がある(ハズ)
実行されるget-pip.py自体は.shで引っ張ってきたものなので、これを書き換えるのは無理(没)

環境構築沼る(dockerコンテナ)

VSCode上のDockerでGUIにてpython3.9コンテナをちょろっと作って(簡単に作れた)
その中で実行したらget-pip.pyまではおそらくうまくいった。
image.png
ただ、dockerがインストールされていないっぽいのでdockerコマンドは通っていない。(dockerの中のdockerってどう起動するんだろう。)
コンテナ内でdockerコマンドも受け付けてもらえず、vscodeのextensionで追加しても同じ。

コンテナinコンテナの環境も面倒そうなので一旦検討辞める。

pyenvの導入に成功

これを参考にUbuntu上にpyenvのPythonビルドの依存関係をインストール
https://zenn.dev/tigrebiz/articles/2822fb4de256d8#venv%E3%81%A7%E3%81%AE%E4%BB%AE%E6%83%B3%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89

sudo apt update
sudo apt install -y build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev curl libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

pyenvが機能しなかったのは依存関係が入っていなかったかららしい
これで以下のpyenvコマンドが機能することが確認取れたのでpython3.9をインスコしていく

pyenv install -l | less

仮想環境上にpython3.9はインストールできており、これをアクティベートできた。
それでもget-pip.pyは実行が通らない。そもそもdockerコンテナ内での実行結果と出力結果がかなり異なる。

image.png

ChatGptに聞いてみる

get-pip.pyスクリプトは本日時点でpython3.8では以下のメッセージにより本来の機能を果たせていません。
「ERROR: This script does not work on Python 3.8. The minimum supported Python version is 3.9. Please use https://bootstrap.pypa.io/pip/3.8/get-pip.py instead.」
過去のいずれかの時点でpython3.8で実行可能だったか調べてください。
また、get-pip.pyスクリプトの更新履歴とその内容を調べてください。

🕰 過去の Python 3.8 対応状況
get-pip.py は、Python 3.8 が現役サポートされていた期間(2019年10月〜2024年10月)には、Python 3.8 環境で正常に動作していました。
しかし、Python 3.8 のサポート終了に伴い、get-pip.py のメインスクリプトも更新され、Python 3.8 では使用できなくなりました。

ndlocr_cliリポジトリはpython3.8を前提としているが、ここで用いるget-pip.pyは外部リポジトリのスクリプトであり、このスクリプトが更新された結果、ndlocr_cliの環境構築ができなくなっている、と理解。最終更新は2023年であり、その影響もあるだろうか。

成果はあったのか

・pyenvの使い方を理解した
・pythonの依存関係問題を見た気がする
・Qiitaに残すためにマークダウンを書く必要に迫られ、Typoraを導入してマークダウン簡単やん!という知見を得た

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?