Raspberry Pi 3B+における、Tesseract（5.0.0 alpha）のインストール方法と基本操作

#Tesseractについて
>　TesseractはGoogleが開発したオープンソースのテキスト認識(OCR)エンジンで、Apache 2.0ライセンスで利用可能です。直接使用することも、APIを使用して画像から印刷されたテキストを抽出することもできます。幅広い言語をサポートしています。
　また、バージョン4.0からは、従来の認識エンジンに加え、LSTMベースのニューラルネットワークによる認識エンジンが搭載されている。

#今回の最新Tesseractの導入の目的
　私は8月頃からWindows PCで接触確認アプリの利用状況を解析するために、Tesseractを用いてシステムを構築していた。今回は，従来のシステムを手元にあるRaspberry Piに移行し，PCから独立した形で自動化を行いたかった経緯があった。詳しい内容は[https://qiita.com/Unagi_Create/items/7e1b01e43b71e0770727](https://qiita.com/Unagi_Create/items/7e1b01e43b71e0770727 "quiita.com")で公開している。

　しかし、移行する上で問題があった。WindowsPCでは**Tesseract 5.0.0-Aplpha**を用いていたが、Raspberry PiにTesseractを導入しようとしたところ，ネット上の解説では**Tesseract 3.x系**がインストールされる手順であった。

　私自身，既にバージョンが低いと文字の認識精度が著しく低下することを確認していたため、**Tesseract 5.x系**をRaspberry Pi 3B+に導入する必要があった。
* * *
Tesseract 3.x系がインストールされる手順例を以下に示す。（参考リンク:[neko.ne.jp](http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_ocr_tesseract/)）

```bash
sudo apt-get update
sudo apt-get -y install tesseract-ocr
```

#前提環境
>Hardware : Raspberry Pi 3 Model B+

```bash 
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.13 (stretch)
Release:        9.13
Codename:       stretch
pi@raspberrypi:~ $
```

#インストール手順
##1. ターミナルを開いて apt-transport-https をインストールします。

```bash
sudo apt-get install apt-transport-https
```

##2. etc/apt/sources.listを開きます。

```bash
nano /etc/apt/sources.list
```

**or**

```bash
vi /etc/apt/sources.list
```

##3. 手順２で開いたsources.listにこの行を追加。

```bash
deb https://notesalexp.org/tesseract-ocr-dev/raspbian/stretch/ stretch main
```

##4. source.listを保存して閉じる。

##5. GnuPGキーの取得とインストール

```bash
sudo apt-get update -oAcquire::AllowInsecureRepositories=true
sudo apt-get install notesalexp-keyring - oAcquire::AllowInsecureRepositories=true
sudo apt-get update
```

**or**

```bash
wget -O - https://notesalexp.org/debian/alexp_key.asc | sudo apt-key add -
sudo apt-get update
```

##6. 最後にtesseract-ocrをインストール

```bash
sudo apt-get install tesseract-ocr
```

#トレーニングデータ（tessdata）の導入方法
　tesseractをインストールできたが、認識させたい言語のトレーニングデータを入れなければ文字認識（OCR）が行えない。

　そこで、文字認識を行うトレーニングデータの中で`best`か`fast`を選んでダウンロードし、tessdataディレクトリにコピーする。２つのリンク先のファイルをダウンロードする。


今回は、日本語のtessdataを導入する場合のリンク先を紹介する。

保存場所は`/usr/share/tesseract-ocr/tessdata` or `/usr/share/tessdata` or `/usr/share/tesseract-ocr/5/tessdata`のどれかである。

- **best（精度重視）トレーニングデータ**
    
[https://github.com/tesseract-ocr/tessdata_best/blob/master/jpn.traineddata](https://github.com/tesseract-ocr/tessdata_best/blob/master/jpn.traineddata "jpn.traineddata")
[https://github.com/tesseract-ocr/tessdata_best/blob/master/jpn_vert.traineddata](https://github.com/tesseract-ocr/tessdata_best/blob/master/jpn_vert.traineddata "jpn_vert.traineddata")

- **fast（速度重視）トレーニングデータ**
    
[https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata](https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata "jpn.traineddata")
[https://github.com/tesseract-ocr/tessdata/blob/master/jpn_vert.traineddata](https://github.com/tesseract-ocr/tessdata/blob/master/jpn_vert.traineddata "jpn＿_vert.traineddata")

日本語以外が必要な場合、各言語に対して適宜ダウンロードを行う。
**tessdataのリポジトリ: [https://github.com/tesseract-ocr](https://github.com/tesseract-ocr "tessdata")**


#動作確認

##1. バージョン確認

```bash
pi@raspberrypi:~ $ tesseract --version
tesseract 5.0.0-alpha-773-gd33e
leptonica-1.78.0
libgif 5.1.4 : libjpeg 6b (libjpeg-turbo 1.5.1) : libpng 1.6.28 : libtiff 4.0.8 : zlib 1.2.8 : libwebp 0.5.2 : libopenjp2 2.3.0
Found NEON
Found OpenMP 201511
Found libarchive 3.2.2 zlib/1.2.8 liblzma/5.2.2 bz2lib/1.0.6 liblz4/1.7.1
pi@raspberrypi:~ $
```

##2. インストールされている言語の確認

```bash
pi@raspberrypi:~ $ tesseract --list-langs
List of available languages (4):
eng
jpn
jpn_vert
osd
pi@raspberrypi:~ $
```

##3. Tesseractの実行テスト

- tesseract-ocrのコマンド形式

    ```bash
    tesseract imagename outputbase [-l lang] [-psm pagesegmode] [configfile...]
    ```

- **実行例**
   ![cocoa_info_0901.png](https://github.com/Unagi2/cocoa-getinfo/blob/master/getIMG_pool/cocoa_info_0901.png?raw=true"cocoa_info_0901.png")


    ```bash
    pi@raspberrypi:~ $ tesseract /home/pi/Documents/Github/cocoagetinfo/getIMG_pool/cocoa_info_0901.png stdout -l jpn




    接触 確認 アプ リ は 、iOS・Android と も に 、 現 在 、「1.1.2」 を 配布 し て いま す 。
古い バー ジョ ン の アプ リ を ご 利用 の 方 は 、 App Store ま た は Google Play か ら 「 接 触 確
認 ア プリ 」 を 検索 いた だ き 、 アッ プ デ ー ト を お 願い し ます 。

    ダウ ン ロ ー ド 数 は 、9 月 1 日 17:00 現 在 、 合計 で 約 1.577 万 件 で す 。
・ios、Android 両 方 の 合計 の 数 に な り ま す 。

    ・ ダ ウン ロー ド 後 に 削除 し 、 再 度 ダ ウン ロー ド し た 場合 は 、 複 数 回 カウ ント され る 場
合 が あり ます 。

    陽性 登録 件 数 は 、9 月 1 日 17:00 現 在 、 合計 で 533 件 で す 。




    pi@raspberrypi:~ $
    ```


#参考文献・引用
一部Deeplで翻訳した文を本記事内に引用しています。

1. [https://ja.wikipedia.org/wiki/Tesseract](https://ja.wikipedia.org/wiki/Tesseract_(%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2) "Wikipedia")
2. [https://tesseract-ocr.github.io/tessdoc/Home.html](https://tesseract-ocr.github.io/tessdoc/Home.html "tesseract-ocr.github")
3. [https://binary-star.net/tesseract-language-download](https://binary-star.net/tesseract-language-download "bynary-star.net")
4. [https://rightcode.co.jp/blog/information-technology/python-tesseract-image-processing-ocr](https://rightcode.co.jp/blog/information-technology/python-tesseract-image-processing-ocr "rightcode.co.jp")