Tesseract 5.0.0を使用して名刺をOCRしてみる


この記事はユニークビジョン株式会社 Advent Calendar 2019の22日目の記事です。

はじめに

本記事では、tesseractを使用して名刺のOCRを行います。

インストール

基本的にはGitHubのインストール手順に従います。
最新版のインストールにはPPAを登録する必要があります。
また、tesseractのインストールと同時に日本語用のデータもインストールします。

$ add-apt-repository ppa:alex-p/tesseract-ocr-devel -y
$ apt update
$ apt install -y tesseract-ocr libtesseract-dev tesseract-ocr-jpn

バージョンを確認します。無事、5.00 Alphaがインストールされています。

$ tesseract -v
tesseract 5.0.0-alpha-582-g60b07
 leptonica-1.78.0
  libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.2) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
 Found AVX2
 Found AVX
 Found FMA
 Found SSE
 Found OpenMP 201511
 Found libarchive 3.2.2 zlib/1.2.11 liblzma/5.2.2 bz2lib/1.0.6 liblz4/1.7.1

ついでに、日本語が使用できることを確認します。

$ tesseract --list-langs
List of available languages (3):
eng
jpn
osd

試してみる

GitHubの使用方法によれば、日本語のOCRは以下のようなコマンドで実行できるようです。

$ tesseract imagename outputbase -l jpn

本記事では、試しに自分の名刺をOCRしてみます。

上記画像をmeishi.jpgという名前で保存し、tesseractを実行します。

$ tesseract meishi.jpg meishi -l jpn
Tesseract Open Source OCR Engine v5.0.0-alpha-582-g60b07 with Leptonica
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 219

すると、以下のようなファイルが生成されると思います。

meishi.txt
Kazumasa YAMAMOTO

ユニークビジョン株式会

〒160-0022 東京都新宿区新宿2- 1 -12 PMO新宿御苑前4F
http://www.uniquevision.coJp/

                                   TEL : 03-6434-9993
E-mail : [email protected]


肝心の名前が取れていなかったり、co.jpが誤認識されていたりしますが概ね良さそうな気がします。
ちなみに、解析する言語は複数指定することが出来ます。試しに、英語+日本語で先ほどの名刺を解析すると以下のようになります。

$ tesseract meishi.jpg meishi -l eng+jpn
Tesseract Open Source OCR Engine v5.0.0-alpha-582-g60b07 with Leptonica
Warning: Invalid resolution 0 dpi. Using 70 instead.
Estimating resolution as 219
meishi.txt
Kazumasa YAMAMOTO

ユニ ー ク ビジ ョ ン 株 式 会

〒160-0022 東京 都 新宿 区 新宿 2- 1 -12 PMO 新 宿 御苑 前 4F
http://www.uniquevision.co.jp/

TEL : 03-6434-9993
E-mail : [email protected]


日本語の解析結果に不自然なスペースが含まれてしまいましたが、URLやメールアドレスは正しく認識されるようになりました。

CLI以外の方法で実行する

GitHubのWikiにまとまっていました。
本記事では取り扱いませんが、各言語で使用できるラッパーも紹介されており、例えば大量の名刺を自動でOCRするスクリプトなども簡単に書けるかもしれません。

まとめ

本記事ではtesseractを使用したOCRを試しました。
簡単に導入することができるので、業務効率化などに使いやすいと感じました。

今後はプログラムからの実行も試せたらと思います。