公開日:2022年7月9日
最終更新日:2022年8月29日
はじめに
1年以上前の記事の振り返りです。touch-sp.hatenablog.com
PyTorchを1.12.1+cu116にアップデートしました。
EasyOCRは1.6.0になっています。
Streamlitは1.12.2になっています。
PC環境
Ubuntu 22.04 on WSL2 Python 3.10.4 CUDA 1.16.2
今回はUbuntu22.04を新規にインストールしてCUDAを入れるところから始めました。
全体を通して2か所つまづくポイントがありました。
つまづき①
CUDAのインストールはNVIDIA公式通りに行いました。その際に以下のエラーが出ました。
The following packages have unmet dependencies: libcufile-11-6 : Depends: liburcu6 but it is not installable
liburcu6_0.12.2-1_amd64.debのインストールで解決しました。
こちらを参照して下さい。
つまづき②
後述するPythonスクリプトを実行した際に以下のエラーが出ました。Could not load library libcudnn_cnn_infer.so.8. Error: libcuda.so: cannot open shared object file: No such file or directory Please make sure libcudnn_cnn_infer.so.8 is in your library path!
以下の1行で解決しました。
sudo ln -s /usr/lib/wsl/lib/libcuda.so.1 /usr/local/cuda/lib64/libcuda.so
こちらを参照して下さい。
Python環境構築
すべてpipでインストール可能です。pip install torch==1.12.1+cu116 torchvision==0.13.1+cu116 --extra-index-url https://download.pytorch.org/whl/cu116 pip install easyocr pip install streamlit
Pythonスクリプト
from PIL import Image, ImageDraw import easyocr import streamlit as st reader = easyocr.Reader(['ja','en']) selected_image = st.file_uploader('upload image', type='jpg') original_image = st.empty() result_image = st.empty() if (selected_image != None): original_image.image(selected_image) pil = Image.open(selected_image) result = reader.readtext(pil) draw = ImageDraw.Draw(pil) for each_result in result: draw.rectangle(tuple(each_result[0][0] + each_result[0][2]), outline=(0, 0, 255), width=3) st.write(each_result[1]) result_image.image(pil)
実行は以下の1行です。(上記スクリプトを「ocr.py」としています。)
streamlit run ocr.py
ライブラリのバージョン
altair==4.2.0 attrs==22.1.0 blinker==1.5 cachetools==5.2.0 certifi==2022.6.15 charset-normalizer==2.1.1 click==8.1.3 commonmark==0.9.1 decorator==5.1.1 easyocr==1.6.0 entrypoints==0.4 gitdb==4.0.9 GitPython==3.1.27 idna==3.3 imageio==2.21.2 importlib-metadata==4.12.0 Jinja2==3.1.2 jsonschema==4.14.0 MarkupSafe==2.1.1 networkx==2.8.6 ninja==1.10.2.3 numpy==1.23.2 opencv-python-headless==4.5.4.60 packaging==21.3 pandas==1.4.3 Pillow==9.2.0 protobuf==3.20.1 pyarrow==9.0.0 pyclipper==1.3.0.post3 pydeck==0.8.0b1 Pygments==2.13.0 Pympler==1.0.1 pyparsing==3.0.9 pyrsistent==0.18.1 python-bidi==0.4.2 python-dateutil==2.8.2 pytz==2022.2.1 pytz-deprecation-shim==0.1.0.post0 PyWavelets==1.3.0 PyYAML==6.0 requests==2.28.1 rich==12.5.1 scikit-image==0.19.3 scipy==1.9.1 semver==2.13.0 Shapely==1.8.4 six==1.16.0 smmap==5.0.0 streamlit==1.12.2 tifffile==2022.8.12 toml==0.10.2 toolz==0.12.0 torch==1.12.1+cu116 torchvision==0.13.1+cu116 tornado==6.2 typing_extensions==4.3.0 tzdata==2022.2 tzlocal==4.2 urllib3==1.26.12 validators==0.20.0 watchdog==2.1.9 zipp==3.8.1