Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

RasPi 4BにTesseract 5.3.0をビルド

Dockerでtesseractを使えるようになったキャッキャッと喜んでいたのも昔。
認識率やら取り回しやらの問題で最新版のTesseractをRasPiに組んで動かす事になりました……。

実際のところ

aptで導入できるtesseractはバージョンがやや古い

$ tesseract --version
tesseract 4.1.1
 leptonica-1.79.0
  libgif 5.1.9 : libjpeg 6b (libjpeg-turbo 2.0.6) : libpng 1.6.37 : libtiff 4.2.0 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.4.0
 Found libarchive 3.4.3 zlib/1.2.11 liblzma/5.2.5 bz2lib/1.0.8 liblz4/1.9.3 libzstd/1.4.8

必要なライブラリ群の入手

例のごとく、ビルドに必要な諸々を入手。

$ sudo apt install -y g++  autoconf automake libtool pkg-config libpng-dev libtiff5-dev zlib1g-dev

ソースコードの入手とビルド

Releases · tesseract-ocr/tesseract · GitHub
より最新版を入手。
執筆時点では5.3.0が最新なので

$ wget https://github.com/tesseract-ocr/tesseract/archive/refs/tags/5.3.0.zip

回答してcd

$ unzip 5.3.0.zip
$ cd 5.3.0

指示通り、ビルドに必要な諸々をそろえてくれるシェルスクリプトを実行

$ ./autogen.sh
$ ./configure --prefix=$HOME/local/

お楽しみのビルド。
RasPi4Bでは一時間ほどかかりました。

$ make
$ sudo make install
$ sudo ldconfig

学習済みファイルの導入

ビルドした状態では一切の学習データが入っていないので、外からもってきます。
https://github.com/tesseract-ocr/tessdata_bestに学習済みデータが入ってるので、必要な言語のものを入手。
私は英語のみ用があったので

$ wget https://github.com/tesseract-ocr/tessdata_best/raw/main/eng.traineddata
$ sudo mv eng.traineddata /home/user/local/share/tessdata/

ちゃんと認識されたか確認

$ /home/user/local/bin/tesseract --list-langs
List of available languages in "/home/user/local/share/tessdata/" (1):
eng

実験

deadbeef.jpg

$ convert -threshold 20000 deadbeef.jpg bindeadbeef.jpg

ためしに実行すると……カメラ越しのものが、ようやく認識できるように……。

$ /home/user/local/bin/tesseract bindeadbeef.jpg - -l eng
DEAD BEEF