Tesseractによる文字認識をPythonで行う方法【PyOCR】

Tesseractによる文字認識をPythonで行う方法【PyOCR】 プログラミング

この記事では、Windows上のPythonでTesseractを利用する方法を説明しています。
普段利用しているWindowsで、気軽にOCR(文字認識)をしたい人向けの記事です。

本記事の内容

  • Tesseractによる文字認識をPythonで行うための環境
  • TesseractのWindowsへのインストール
  • PyOCRのWindowsへのインストール
  • PythonからTesseractを利用する
  • Tesseractによる文字認識をPythonで行う方法【PyOCR】のまとめ

まずは、今回利用する環境についてから解説します。

Tesseractによる文字認識をPythonで行うための環境

  • Windows 10 Home (バージョン1909)※以下の説明は64bit前提
  • Python 3.7.3
  • Tesseract 5.0.0
  • PyOCR 0.7.2

pipコマンドが使えることは前提です。

TesseractのWindowsへのインストール

インストールしていない場合は、次の記事をご覧ください。

記事の内容をのせておきます。

  • TesseractはOCRエンジンである
  • TesseractをWindowsへインストールするための環境
  • Tesseractのダウンロード
  • TesseractのWindowsへのインストール
  • Tesseractの動作確認
  • Tesseractのインストール先を環境変数のPathに設定する
  • Tesseractの精度確認

PyOCRのWindowsへのインストール

TesseractはOCRエンジンです。
それ単体で使えるモノではありません。

プログラムからTesseractを利用するから、便利なツールなどを開発できるのです。
Pythonの場合であれば、PyOCRを経由することでTesseractを利用できます。

PyOCRは、PyPIで公開されています。
そのため、次のpipコマンドで簡単にインストール可能です。
WindowsであろうとLinux、Macであろうと。

pip install pyocr

コマンド実行して、しばらく待ちます。
以下のように「Successfully」が表示されれば、インストールが成功です。

Successfully built pyocr
Installing collected packages: pyocr
Successfully installed pyocr-0.7.2

PyOCRのWindowsへのインストールは、以上で終了です。

PythonからTesseractを利用する

画像から文字を読み取るプログラムで検証しましょう。
次の画像(pyocr_test.png)を利用します。

この画像は、PDFからスクリーンショットしたモノです。
そのため、画質が良いというわけではありません。

画像の説明はここまでにして、実際に検証してみましょう。

この画像を適当な場所に保存します。
そして、以下のコードを実行。

from PIL import Image
import pyocr
import pyocr.builders

# OCRエンジンの取得
tools = pyocr.get_available_tools()
tool = tools[0]

# 画像の読み込み
img_org = Image.open("./data/pyocr_test.png")

# OCRの実行
builder = pyocr.builders.TextBuilder()
result = tool.image_to_string(img_org, lang="jpn", builder=builder)

print(result)

実行結果は、以下。

キャッシュレス決済は、 消費者の利便性向上だけでなく、 店舗のレジ精算業務の削
減など現金管理の手間や時間の削減、消費者の手持ち現金不足による機会損失の
防止などにつながる。 また、現金に触れず、従業員と顧客の接触機会を減らすことで
衛生的な取引が可能になる、現金では取得できなかったデータが得られることで、顧
客に対しよりよいサービスを最適なタイミングで提供できるようになるなど、店舗に様々
なメリットをもたらしうる。

結果は、100%の認識率ですね。
これは、単純にスバラシイ。

もし、上記のプログラムが動かない場合は、以下が原因として考えられます。

  • Tesseractのパスが通っていない
  • プログラムのファイル名をpyocr.pyにしている

Tesseractのパスが通っていない

次の記事の「Tesseractのインストール先を環境変数のPathに設定する」を参考にしてパスを通してください。

「環境変数のPathには設定したくない!」という方は、次のコードを加えてください。

import os

# インストール済みのTesseractへパスを通す
path_tesseract = "C:\\Program Files\\Tesseract-OCR"
if path_tesseract not in os.environ["PATH"].split(os.pathsep):
    os.environ["PATH"] += os.pathsep + path_tesseract

プログラムのファイル名をpyocr.pyにしている

ModuleNotFoundError: No module named 'pyocr.builders'; 'pyocr' is not a package

この場合は、おそらくこのエラーが表示されているはずです。
「import pyocr」
自分自身をimpotしようとするのでしょう。

あと、作成したプログラムと同じフォルダ内にも「pyocr.py」が存在していてもアウトです。

Tesseractによる文字認識をPythonで行う方法【PyOCR】のまとめ

どうでしたでしょうか?
簡単にPythonで文字認識ができることを確認できたと思います。

今回の検証のように、文字認識が上手く行けば何も問題はありません。
しかし、画像によっては、全く文字認識ができないケースもあります。

おそらく、実務で使う場合は、適切に文字認識をできない画像が多くなるでしょう。
その場合にどうしていくのか?

これが、Tesseractによって文字認識をPythonで行う上での課題です。
この課題にどうやって取り組んでいけばよいのでしょうか?
難しいですね・・・

朗報です!!
なんと、Tesseractには学習機能が備わっています。

機械学習により、文字認識の精度を向上させることができます。
学習次第によっては、実務で使えるOCRに格上げすることも可能ということです。

タイトルとURLをコピーしました