Tesseract を使って OCR を行うための環境を、Docker を使って構築しました。開発言語は Python を想定しています。
環境
- Ubuntu 20.04
Dockerfile の作成
Dockerfile のサンプルです。
USB カメラのキャプチャ画像に対して OCR を行いたかったので、OpenCV と GUI の表示に必要なパッケージもインストールしています。
FROM ubuntu:20.04
# Tesseract、訓練済みモジュール、その他必要なパッケージをインストール
RUN apt -y install \
tesseract-ocr \
tesseract-ocr-jpn \
git \
python3-pip \
libgl1-mesa-dev \
libsm6
# python パッケージをインストール
RUN pip3 install pyocr pytesseract opencv-python
# aptのクリア
RUN apt clean && rm -rf /var/lib/apt/lists/*
# bash起動
CMD [ "/bin/bash" ]
これをビルドします。
$ docker build -t tesseract-dev .
コンテナ起動
以下のようにして起動します。
docker run -it --rm \
--name tesseract-dev \
-e DISPLAY=${DISPLAY} \
-v /tmp/.X11-unix/:/tmp/.X11-unix/ \
--device /dev/video0:/dev/video0 \
tesseract-dev
確認
Tesseract がインストールされていることを確認します。
$ tesseract 4.1.1
leptonica-1.79.0
libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 2.0.3) : libpng 1.6.37 : libtiff 4.1.0 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.1
Found AVX2
Found AVX
Found FMA
Found SSE
Found libarchive 3.4.0 zlib/1.2.11 liblzma/5.2.4 bz2lib/1.0.8 liblz4/1.9.2 libzstd/1.4.4
ついでに Tesseract で OCR 出来ることを確認します。
$ tesseract test.jpg output -l jpn
参考 URL
- https://crieit.net/posts/Tesseract-Ubuntu-Docker
- https://a244.hateblo.jp/entry/2016/07/04/050000
- https://cocoinit23.com/docker-opencv-importerror-libgl-so-1-cannot-open-shared-object-file/
- https://heppoco-cto.com/pip-install-opencv-python%E3%81%A7modulenotfounderror-no-module-named-skbuild%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC/456/
- https://qiita.com/nishiys/items/3b8c1670891f745c5a81
- https://qiita.com/fukasawah/items/99219e1ff7d08915952f