Python ビジネス関連

python3でPyOCRを使って画像を文字列に変換する方法

OCRとは

OCRとはOptical Character Recognition/Readerの略で、オーシーアールと読みます。
光学的文字認識とも呼ばれ、手書きされた文字や印刷された文字など、画像やPDF上の文字を読み取り、文字コードに変換する技術です。



python3でOCRを活用したい場面

OCRを活用するのにはいろいろな用途があると思います。

画像上の文字/数字をOCRで認識する

画像上の文字や数字を認識したいケースに活用できます。

今回は、この点に関してサンプルを作成したいと思います。

WEB上の画像だってOCRで文字認識できる

PyOCRとtesseractのインストール手順

今回はPyOCRを使って実現します。

インストール手順はたったこれだけ。簡単に使える様になります。

Windowsの場合

python -m pip install pyocr


LinuxやmacOSの場合

pip install pyocr

tesseract-OCRをインストールする

下記リンク先からexeファイルをダウンロードしてください。

exeファイルがダウンロード出来たら、exeファイルを実行し、インストールを進めてください。

tesseract OCRのインストール手順

手順通りすすめると、以下の様にチェックが外れてる箇所が表示されます。

tesseract OCRのインストール手順 Additional script data

ここでAdditional script data(download)内にあるJapaneseにチェックを入れます。

tesseract OCRのインストール手順 japanise script

また、Additional language data(download)内にあるJapaneseにもチェックを入れてください。

tesseract OCRのインストール手順 japanese



tesseract-OCRのパス(path)を通す

インストールされた先を一応確認します。
64bit版でfor all userの場合は、例えば次にインストールされます。

C:\Program Files\Tesseract-OCR

次に、PC画面左下のウインドウアイコンを右クリックして検索>「環境変数」>システム環境変数の設定>環境変数>システム環境変数のPathを選択した状態で「編集」>空白行に、上記tesseract-OCRがインストールされたパスを入力して再起動します。

PyOCRを用いて画像認識するサンプルコード

引数として画像のパスを受け取ります。

文字として変換したものをテキストとして返します。

from PIL import Image
import sys
import pyocr
import pyocr.builders

# pngファイルの自動読み取り
def png_to_text(png_name):
    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.

    txt = tool.image_to_string(
        Image.open(png_name),
        lang=lang,
        builder=pyocr.builders.TextBuilder()
    )
    # txt is a Python string

    return txt

# img.pngの内容をテキスト化
keyword_text = png_to_text('img.png')

WEB上の画像を文字起こししたい場合のサンプルコード

Chrome Driverとの組み合わせで実装する

Chrome Driverはpythonでクローリングする際に使うと開発が格段に楽になります。

関連記事
トップ画像
pyhon3でWEBクローリングするならSelenium WebDriverを活用しよう(導入手順と使い方)

目次スクレイピングは情報を「抽出」することクローリングはWEB上を「巡回」することpythonではクローリングを簡単に実 ...

続きを見る

画像上の文字と同一の文字をフォームに入力する必要があるログイン画面の自動ログインサンプルコード

from time import sleep
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from PIL import Image
import sys
import pyocr
import pyocr.builders

# pngファイルの自動読み取り
def png_to_text(png_name):
    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.

    txt = tool.image_to_string(
        Image.open(png_name),
        lang=lang,
        builder=pyocr.builders.TextBuilder()
    )
    # txt is a Python string

    return txt


USER = 'IDをここに記入'
PASS = 'PASSをここに記入'

# seleniumの準備
options = webdriver.ChromeOptions()
# 必須
options.add_argument('--disable-gpu')
options.add_argument('--disable-infobars')
# エラーの許容
options.add_argument('--ignore-certificate-errors')
options.add_argument('--allow-running-insecure-content')
options.add_argument('--disable-web-security')
# headlessでは不要そうな機能
options.add_argument('--disable-desktop-notifications')
options.add_argument("--disable-extensions")
# UA
options.add_argument('--user-agent=hogehoge')
# 言語
options.add_argument('--lang=ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7')

# ブラウザーを起動
driver = webdriver.Chrome(chrome_options=options)

# HPにアクセス
driver.get('ログインページURLをここに記入')

# ちょっとだけ待機
sleep(2)

# ID/PASSを入力
id = driver.find_element_by_xpath("実際のidを入れるフォームのxpathを入力してください")
id.send_keys(USER)
sleep(1)
password = driver.find_element_by_xpath("実際のpasswordを入れるフォームのxpathを入力してください")
password.send_keys(PASS)
sleep(1)

# キーワード部分を画像化
png = driver.find_element_by_xpath("OCRにかけたい画像のxpathを入力してください").screenshot_as_png
with open('./img.png', 'wb') as f:
f.write(png)

# 画像を文字列に変換してフォームに入力
keyword_text = png_to_text('img.png')
keyword = driver.find_element_by_xpath("実際のkeywordを入れるフォームのxpathを入力してください")
keyword.send_keys(keyword_text)

# ログインボタンを押す
login_button = driver.find_element_by_xpath("ログインボタンのxpathを入力してください")
login_button.click()

python3でPyOCRを使って画像を文字列に変換する方法

目次OCRとはpython3でOCRを活用したい場面画像上の文字/数字をOCRで認識するWEB上の画像だってOCRで文字認識できるPyOCRとtesseractのインストール手順Windowsの場合LinuxやmacOSの場合tesseract-OCRをインストールするtesseract-OCRのパス(path)を通すPyOCRを用いて画像認識するサンプルコードWEB上の画像を文字起こししたい場合のサンプルコードChrome Driverとの組み合わせで実装する画像上の文字と同一の文字をフォームに入力する ...

ReadMore

トップ画像

pyhon3でWEBクローリングするならSelenium WebDriverを活用しよう(導入手順と使い方)

目次スクレイピングは情報を「抽出」することクローリングはWEB上を「巡回」することpythonではクローリングを簡単に実装できるSelenium WebDriverを使ってクローリングするSelenium WebDriver(Chrome Driver)の導入手順1.Chromeのバージョンを確認する2.Chromeのバージョンと一致するChromeDriverをダウンロードする3.ダウンロードしたEXEファイルをフォルダに格納して環境変数を割り当てる4.Seleniumをインストール5.テストコードを作 ...

ReadMore

Python3でgmailからメールを送る方法(ファイル添付あり)

AIの分野で注目のPython(パイソン)ですが、とても便利な言語で、いろいろなことができちゃいます。ぼくは、クローリングツールを作る兼ね合いでPythonと出会い、クローリングツールの他に自動メール送信ツール、ビットコイン自動売買ツールなど、いろいろな物を試作しました。 その中で、gmailでファイル添付してメールを送信する仕組みが、調べた通りでできなかったため、自分なりに修正した物でを公開したいと思いました。 そのまま使えるはずですが、もしうまくいかない場合はご連絡ください。 目次Python3を使っ ...

ReadMore

1日1ポチお願いいたします!
人気ブログランキング

-Python, ビジネス関連
-, ,

© 2020 with-Biz