27
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Anacondaだけで環境を構築して、Python+OCRをやってみる

Last updated at Posted at 2019-05-11

背景

Anaconda + python + tesseract で文字認識をしたみた。
tesseractがHomeBrewやMacPortを使ったりする方法しかネット上になかったため、
今回はAnacondaだけで、インストールしてやってみた方法を残します。

環境

MacOS Mojave ver10.14.4
Anaconda Navigator 1.9.7
 ※Anacondaのインストールは、こちらを参考にいたしました
JupiterNotebook 5.4.0
OpenCV 3.4.2

事前準備

こちらの記事を参考にやってみました。
https://qiita.com/it__ssei/items/fd804dcb10997566593b
・tesseractのインストール
・pyocrのインストール
が必要とのこと。まずはやってみましょう!

OCRツール(tesseract)概要

PythonでOCRで調べると必ず、こいつの存在が出てくるメジャーツール。
元々は米Hewlett-Packardが開発していたOCRツールでお蔵入りしていたものを
Googleが引き取って、公開しているツールのようです。(ありがたや!)

OCRツール(tesseract)インストール

まずは、公式ページのインストール方法を見ると、
Macの場合は、HomeBrew/MacPortでインストールと書かれています。
じゃあ、これらをインストールするための方法を調べると、まずはXcodeをインストールする必要があると。。。
手間が多いな&Macの容量が無くてXcode入れられない。。。
https://qiita.com/pypypyo14/items/4bf3b8bd511b6e93c9f9

ということで、Anacondaだけで、できないかと調べてみたわけです。
すると、あるじゃないですか!Anacondaでインストールできる環境が!
https://anaconda.org/search?q=tesseract
こちらはAnacondaが標準で提供していないツールを有志の方がAnacondaで使えるように
公開してくれているという涙が出るほど便利なサイトになります。
例えば、今回のtesseractで検索すると、いくつか公開してくれています!
(本当に感謝です!!)
スクリーンショット 2019-05-11 22.25.33.png

このページの、conda-forge/tesseract を開いてみると、
Anacondaにインストールするためには、
conda install -c conda-forge tesseract
を実行すれば良いと書いてあります。(なるほど)
スクリーンショット 2019-05-11 22.31.17.png

感謝を胸に自分のAnacondaにインストールしてみましょう。
まずは、AnacondaNavigatorの
Enviroments→(自分の使う仮想環境)→矢印をクリック→ open terminal を開く
スクリーンショット 2019-05-11 22.27.45.png

コンソール画面が開いたら、下記を打ち込みます!
途中、実行してよいか?(y/n?)と聞かれますが、迷わず y+Enter を押しましょう!

conda install -c conda-forge tesseract

Errorが出なければ、OK。インストールされているはずです。
一応、下記コマンドで、tesseractが入っているかを確認しましょう
Anacondaに入っているモジュールを一覧表示してくれます。

conda list

pyocr インストール

この調子で、pyocrもAnacondaでインストールだ!と思ったら、
pyocrは残念ながら、windowsとLinux verしかないみたい。(筆者はMac)
https://anaconda.org/search?q=pyocr
ということで、今回は、pipで入れました。
※pip:別のパッケージ管理ツール
※widows/Linuxユーザの方は、condaで入れてみても良いかも!

pip install pyocr

モジュールの動作確認

さて、ここまでで事前準備を終えることができたので、
いよいよOCRに挑戦です!とその前に、モジュールが動作するかを確認しましょう。
こちらの記事を参考にやってみました
https://qiita.com/it__ssei/items/fd804dcb10997566593b

pyocrからtesseractを呼び出す

まずは、公式コードで、確認

from PIL import Image
import sys

import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'

langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))
# Ex: Will use lang 'fra'
# Note that languages are NOT sorted in any way. Please refer
# to the system locale settings for the default language
# to use.
実行結果
Will use tool 'Tesseract (sh)'
Available languages: afr, amh, ara, asm, aze, aze_cyrl, bel, ben, bod, bos, bre, bul, cat, ceb, ces, chi_sim, chi_sim_vert, chi_tra, chi_tra_vert, chr, cos, cym, dan, deu, div, dzo, ell, eng, enm, epo, est, eus, fao, fas, fil, fin, fra, frk, frm, fry, gla, gle, glg, grc, guj, hat, heb, hin, hrv, hun, hye, iku, ind, isl, ita, ita_old, jav, jpn, jpn_vert, kan, kat, kat_old, kaz, khm, kir, kmr, kor, kor_vert, lao, lat, lav, lit, ltz, mal, mar, mkd, mlt, mon, mri, msa, mya, nep, nld, nor, oci, ori, osd, pan, pol, por, pus, que, ron, rus, san, script/Arabic, script/Armenian, script/Bengali, script/Canadian_Aboriginal, script/Cherokee, script/Cyrillic, script/Devanagari, script/Ethiopic, script/Fraktur, script/Georgian, script/Greek, script/Gujarati, script/Gurmukhi, script/HanS, script/HanS_vert, script/HanT, script/HanT_vert, script/Hangul, script/Hangul_vert, script/Hebrew, script/Japanese, script/Japanese_vert, script/Kannada, script/Khmer, script/Lao, script/Latin, script/Malayalam, script/Myanmar, script/Oriya, script/Sinhala, script/Syriac, script/Tamil, script/Telugu, script/Thaana, script/Thai, script/Tibetan, script/Vietnamese, sin, slk, slv, snd, spa, spa_old, sqi, srp, srp_latn, sun, swa, swe, syr, tam, tat, tel, tgk, tha, tir, ton, tur, uig, ukr, urd, uzb, uzb_cyrl, vie, yid, yor
Will use lang 'afr'

呼び出すと、上のような実行結果がでてきました。
使える言語はものすごく含まれています。
もちろん、eng,jpnがあるので、英語/日本語はいけそうですね。

文字認識(OCR)

さて、本番です!!
英語と日本語の2パターンをやってみましょう。

英語のOCR

読み込ませたい画像

en.png

txt = tool.image_to_string(
    Image.open('./imagesFolder/en/en.png'),
    lang="eng",
    builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
print( txt )
# txt is a Python string

言語設定を「eng」に設定するのがポイントですね。
文字として認識されました!!やったぜ!
スクリーンショット 2019-05-11 23.09.19.png

日本語のOCR

読み込ませたい画像

iroha.png

txt = tool.image_to_string(
    Image.open('./imagesFolder/iroha.png'),
    lang="jpn",
    builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)
print( txt )
# txt is a Python string

言語設定を「jpn」に設定するのがポイントですね。
文字として認識されました!!やったぜ!
スクリーンショット 2019-05-11 23.15.57.png

終わりに

以上、Anacondaだけで環境を構築して、Python+OCRをやってみました!
思った以上に、文字が読み取れて満足です。
これを使って、会社の書類の自動読み取り処理で業務を効率化していければと思います!

参考

PythonでOCR
https://qiita.com/it__ssei/items/fd804dcb10997566593b

27
27
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?