画像からテキスト抽出するプログラムです。
便利なライブラリを使うので非常にシンプルなコードになります。
今回はカレントディレクトリにあるtest.pngという画像からテキストを抽出するコードにしていますが、sysライブラリなどを使うことで抽出したい画像を引数として指定するようにもできます。
ソースコード
import sys
from PIL import Image
import pyocr.builders
tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
txt = tool.image_to_string(
Image.open('test.png'),
lang='jpn',
builder=pyocr.builders.TextBuilder()
)
print(txt)
事前準備
今回、ライブラリのほかにTesseract OCRというOCR(光学的文字認識)エンジンを別途インストールする必要があります。
上のリンクから対応するOSに合わせてダウンロード・インストールしてください。デフォルトだと英語のみ対応なので、日本語を認識させたい場合は追加でインストールしてください。Windowsの場合はインストールの途中で追加でチェックを入れることでインストール可能です。
なお、Pythonのコード上でインストール先フォルダを指定することも可能ですが、Pathを通しておく(環境変数としてTesseract OCRのインストール先のフォルダをPathに設定する)といちいち指定せずに済むので便利です。
画像関連の操作を行うPIL(Pillow)とOCRの操作を行うPyOCRという外部ライブラリも使用するのでインストールが必要となります。
pip install Pillow
pip install pyocr
コードの解説
上記のページのサンプルコードそのままのシンプルなコードになります。
1~3行目でライブラリのインポート、5~10行目でOCRエンジンの読み込み、12行目~16行目で画像からテキストを抽出、18行目で抽出したテキストをprint文により出力します。
テキスト抽出の際には、言語として日本語(jpn)を指定しているのでご注意ください。