<OCR, tesseract, python> 光学的文字認識をやってみた。

諸事情により、画像imageから、テキストを抽出をやってみた。
光学的文字認識Optical Character Recognitionというらしい。

自分の土俵でできるか、、だったが、幸いにmsys2版があった。ラッキー。
で、必要なソフトのインストールからスタート。
このWikiに従う。
Home · tesseract-ocr/tesseract Wiki · GitHub

>pacman -S mingw-w64-{i686,x86_64}-tesseract-ocr
>pacman -S mingw-w64-{i686,x86_64}-tesseract-data-eng

mingw64を使ってこなかったが、ここで、大量にインストールが発生。
まあ、しょうがないので、進める。Go。

次。pythonのパッケージのインストール。

>conda install pillow
>pip install pyocr

で、環境変数設定。

export PATH=$PATH:/mingw64/bin
export TESSDATA_PREFIX=/mingw64/share/tessdata

以上でインストール完了。
では、始めます。

In [7]: import pyocr

In [8]: tool = pyocr.get_available_tools()[0]

In [9]: tool
Out[9]: <module 'pyocr.tesseract' from 'C:\\Anaconda3\\Lib\\site-packages\\pyocr\\tesseract.py'>

In [10]: from PIL import  Image

In [14]: txt = tool.image_to_string(
    ...:     Image.open('capture.PNG'),
    ...:     lang='eng',
    ...:     builder=pyocr.builders.TextBuilder(tesseract_layout=6)
    ...: )

できました。
できたtxtを覗いてみましたが、、、 なんか、行けてない感じ。
単純な英語テキストなのに、完璧には変換できてない。ちと、がっかり感。

少しくぐると、
Google Cloud Vision API というのがあって、こっちはすごいらしい。
次回試してみるかな。。。

github.com

qiita.com