この記事では、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に格上げすることも可能ということです。