【Python】【EasyOCR】【Streamlit】わずか20行でOCRアプリを作成する

はじめに

EasyOCRは名前の通り簡単にOCR機能を実装できるパッケージです。
OCRとはざっくり言うと画像から文字を取り出すことです。
StreamlitはGUI操作可能なアプリケーションを非常に簡単に作成できるパッケージです。パッケージではなくフレームワークと表現されることも多いです。
この二つを使って簡単なOCRアプリを作成しました。
スクリプトはたったの20行です。
環境構築も非常に簡単でPython環境に「easyocr」と「streamlit」をpipでインストールするだけです。

pip install streamlit
pip install easyocr

完成したアプリ

ファイルを選択するだけで結果を返してくれます。
f:id:touch-sp:20210320163531j:plain

日本語に対応してくれています。しかし残念ながら結果は完璧ではありませんでした。日本語は難しいのでしょう。

Pythonスクリプト

import numpy as np 
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(np.array(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)

上記スクリプトを適当な名前で保存してStreamlitで実行して下さい。
例えば「ocr.py」と名前を付けたらこのようになります。

streamlit run ocr.py

動作環境

Windows 10 no GPU
Python 3.8.6

easyocr==1.2.5.1
streamlit==0.79.0

2021年7月22日追記

easyocrを1.3にアップデートした新しい記事を書きました。
touch-sp.hatenablog.com