- はじめに
- 変更できるところ
- 修正後のPythonスクリプト
- Python環境
- 2021年11月19日追記(easyocr 1.4.1)
- 2022年3月18日追記(easyocr 1.4.1)
- 2022年4月26日追記(easyocr 1.4.2)
- 2022年7月9日追記
はじめに
EasyOCR が1.2から1.3にバージョンアップしています。変更点の一つにこのようなものがあります。
Add support for PIL image
以前はPILで画像を開いてnumpy配列に変換していましたがこの過程が不要になります。さっそく過去のスクリプトで試してみました。
touch-sp.hatenablog.com
変更できるところ
変更前
result = reader.readtext(np.array(pil))
変更後
result = reader.readtext(pil)
これによってnumpyのインポートが必要なくなります。1行少なくできました。
修正後の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)
たったこれだけですか?はい、その通りです。
Python環境に「easyocr」と「streamlit」をpipでインストールするだけで実行できます。
GPU非搭載のノートPCで動かすと少し時間がかかりましたが問題なく動作します。
実行は以下の1行。(上記スクリプトを「ocr.py」としています。)
streamlit run ocr.py
Python環境
altair==4.1.0 argon2-cffi==20.1.0 astor==0.8.1 async-generator==1.10 attrs==21.2.0 backcall==0.2.0 base58==2.1.0 bleach==3.3.0 blinker==1.4 cachetools==4.2.2 certifi==2021.5.30 cffi==1.14.5 chardet==4.0.0 click==7.1.2 colorama==0.4.4 cycler==0.10.0 decorator==4.4.2 defusedxml==0.7.1 easyocr==1.3.2 entrypoints==0.3 gitdb==4.0.7 GitPython==3.1.17 idna==2.10 imageio==2.9.0 ipykernel==5.5.5 ipython==7.24.1 ipython-genutils==0.2.0 ipywidgets==7.6.3 jedi==0.18.0 Jinja2==3.0.1 jsonschema==3.2.0 jupyter-client==6.1.12 jupyter-core==4.7.1 jupyterlab-pygments==0.1.2 jupyterlab-widgets==1.0.0 kiwisolver==1.3.1 MarkupSafe==2.0.1 matplotlib==3.4.2 matplotlib-inline==0.1.2 mistune==0.8.4 nbclient==0.5.3 nbconvert==6.0.7 nbformat==5.1.3 nest-asyncio==1.5.1 networkx==2.5.1 notebook==6.4.0 numpy==1.20.3 opencv-python==4.5.2.52 packaging==20.9 pandas==1.2.4 pandocfilters==1.4.3 parso==0.8.2 pickleshare==0.7.5 Pillow==8.2.0 prometheus-client==0.11.0 prompt-toolkit==3.0.18 protobuf==3.17.2 pyarrow==4.0.1 pycparser==2.20 pydeck==0.6.2 Pygments==2.9.0 pyparsing==2.4.7 pyrsistent==0.17.3 python-bidi==0.4.2 python-dateutil==2.8.1 pytz==2021.1 PyWavelets==1.1.1 pywin32==301 pywinpty==1.1.1 PyYAML==5.4.1 pyzmq==22.1.0 requests==2.25.1 scikit-image==0.18.1 scipy==1.6.3 Send2Trash==1.5.0 six==1.16.0 smmap==4.0.0 streamlit==0.82.0 terminado==0.10.0 testpath==0.5.0 tifffile==2021.4.8 toml==0.10.2 toolz==0.11.1 torch==1.8.1 torchvision==0.9.1 tornado==6.1 traitlets==5.0.5 typing-extensions==3.10.0.0 tzlocal==2.1 urllib3==1.26.5 validators==0.18.2 watchdog==2.1.2 wcwidth==0.2.5 webencodings==0.5.1 widgetsnbextension==3.5.1
2021年11月19日追記(easyocr 1.4.1)
以下の環境(RTX 3060 Laptop)で動作確認できました。easyocr==1.4.1 streamlit==1.2.0 torch==1.10.0+cu113 torchvision==0.11.1+cu113
2022年3月18日追記(easyocr 1.4.1)
以下の環境で動作確認できました。「opencv-python-headless」は4.5.5.64から4.5.4.60にダウングレードする必要がありました。
Windows 11
Windows 11
python 3.9.10
easyocr==1.4.1 streamlit==1.7.0 torch==1.11.0+cu113 torchvision==0.12.0+cu113 opencv-python-headless==4.5.4.60
Ubuntu 20.04 on WSL2
Ubuntu 20.04 on WSL2
python 3.9.5
easyocr==1.4.1 streamlit==1.7.0 torch==1.11.0+cu113 torchvision==0.12.0+cu113 opencv-python-headless==4.5.4.60
2022年4月26日追記(easyocr 1.4.2)
以下の環境で動作確認できました。Ubuntu 22.04 on WSL2
Ubuntu 22.04 on WSL2
python 3.10.4
easyocr==1.4.2 streamlit==1.8.1 torch==1.11.0+cu113 torchvision==0.12.0+cu113
2022年7月9日追記
新しい記事を書きました。touch-sp.hatenablog.com