【Python】tesseractとPyOCRで画像の文字を検出

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク
本記事を読むと以下の実行ができます

画像の文字をOCR技術で出力する。

OCR(Optical Character Recognition)、日本語で「光学文字認識」と呼ばれる技術は、手書きの文字や印刷された書類の活字をスキャナーやカメラなどで画像化し、その画像の文字を認識して、テキストのデジタルデータへと変換する技術のことをいいます。

ビジネスや日常生活でデジタル化が進む現代で、書類や書籍など印刷されたアナログ情報をデータ化するニーズが高まっていて、OCRの需要が今後さらに拡大していきます。

本記事では、Pythonを使って、画像の文字を認識する方法を紹介します。

本記事は次の人におすすめ
  • Pythonを使う人
  • OCRに興味がある人
  • 業務を効率化したい人
スポンサーリンク

Tesseract

Tesseractは、ヒューレット・パッカード(HP)が開発を進め、Googleが後援している光学式文字認識エンジンです。

Windows、Linux、macOSなどのオペレーティングシステムで利用できます。
Tesseractは、多数の言語に対応しており、日本語も使用可能です。

Tesseractのインストール(windowsの場合)

Tesseractはコマンドプロンプトでインストールするのではなく、外部からexeファイルをインストールする必要があります。

Tesseract at UB Mannheim-GitHub」にアクセスをして、最新版のパッケージをインストールしてください。

ダウンロードしたインストーラーの指示に従い、インストールをします。
※画像は、ライセンスの確認です。

「Next」・「I agree」を進めていき、「Choose Components」までたどり着いたら、ここから操作が必要です。

Additional script data (download)」の「+」を押して展開してください。項目の中から日本語(Japanese~)にチェックを入れてください。

同様に「Additional language data (download)」項目の中から日本語(Japanese~)にチェックを入れてください。

これらが完了したら、次に進み、インストールを完了させてください。

macOSで使用する場合

macの場合は、Homebrewを使用してTesseractをインストールすることができます。

brew install tesseract

Windowsでは、exeファイルをインストールしなければいけませんでしたが、Macの場合は、たったのこれだけです。

クリエイターのMac離れを言われていますが、OCRは、Macの方が手際よくできそうです。

Tesseractは商用利用可能か

Tesseractはオープンソースですので、商用利用可能と考えてください。

しかし商用利用可能でも、著作権は開発者に属するように、完全に自由に使ってよいというものではありません。

ビジネスで使用する際は、必ずライセンスを一読し詳細をご確認ください。

PyOCR

Tesseractをインストールしたので、使用しているPCで、紙に印刷された文字をPCに起こすことができるようになりました。

次に、PythonでOCRを起動させるようにPyOCRを使えるようにします。

PyOCRは、OCRエンジンと統合するPythonラッパーライブラリであり、先ほどインストールしたTesseractをはじめ一般的なOCRエンジンと連携できます。

連携によってPyOCRを使用してさまざまなテキスト認識プロジェクトを実行できます。

PyOCRを使用するためには、OCRエンジンをインストールし、Pythonコードを使用して統合したOCRタスクを実行できます。

PyOCRはPillowのサポートによって、jpeg, png, gif, bmpなど様々な画像形式に対応しています。

Pythonでは、画像の形式(拡張子)を変更することができます。

PyOCRのインストール

ターミナルまたはコマンドプロンプトを開き、以下のコマンドを実行してPyOCRをインストールします。

pip install pyocr

PyOCRは商用利用可能か

PyOCRはオープンソースですので、商用利用可能と考えてください。

しかし、同様に制限があるので、公式サイトで各自確認してください。

Pythonで画像の文字を表示する

TesseractとPyocrの導入後、画像の文字の認識が可能になります。

ここでは、次の画像を使用します。

以下のコードはPythonを使用してOCRを実行し、指定した画像ファイルからテキストを抽出するためのものです。

ソースコード

import pyocr
from PIL import Image

#pyocrにTesseractを指定する。
pyocr.tesseract.TESSERACT_CMD = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
tools = pyocr.get_available_tools()
tool = tools[0]

image =Image.open('test01.png')   #画像ファイルを読み込む
text = tool.image_to_string(image, lang="jpn", builder=pyocr.builders.TextBuilder())    #画像の文字を抽出

print(text) # 抽出したテキストを表示

Pythonの学習進め方

Pythonでできることは多岐に渡ります。

Pythonでできること
  • 機械学習・人工知能
  • データ解析・統計分析
  • ファイル操作・システム管理
  • GUIアプリ開発

Pythonは強力で柔軟なプログラミング言語ですが、常に情報がアップデートされるので、
新しいライブラリやフレームワークを独学で学び続けることは困難です。

Udemyは動画で目的に応じた講座を受講できるのでレベルを合わせて学習できます。
購入した講座は再生・停止・スキップなどが可能なオンデマンド形式なので、
専門的な内容を自分のペースで独学できます。

Udemyの特徴
  • プロのエンジニアによる講習が受けられる
  • 自分のペースで学習を進められる
  • オンデマンド形式だから何度でも視聴可能
  • 不満足なコースは視聴していても返金可能返金ポリシー

Pythonでデータサイエンスや人工知能、GUIを学びたい人はUdemy学習を取り入れましょう。
数多くある講座の中から特におすすめな講座を5つ紹介します。

Pythonをインストールから環境設定、基本文法が学習できる。さらに、モジュールの使い方やファイル操作の他に暗号化、並列化、インフラ自動化、キューイングシステム、非同期処理についても学べます。

Pythonの基礎を押さえつつ、人口知能やニューラルネットワーク、機械学習を取り扱う。機械学習ライブラリで文字認識や株価分析などを行う。

データサイエンティストになるために必要なツールについて学ぶことができる。統計分析、NumpyやPandasなどを使ったPythonのプログラミング、機械学習の実装、ディープラーニングの実装を学習できる。

PythonでGUIを作成する方法を取り扱う。Tkinterの発展的な操作まで学習できる。翻訳アプリ、家計簿アプリ、電卓アプリ、音楽再生アプリなど作成して、exeファイル化する。

解説

pyocrライブラリはPythonのOCRツールのラッパーライブラリで、テキストを画像から抽出するために使用します。
PILライブラリはPython Imaging Libraryの略で、画像処理に使用します。

import pyocr
from PIL import Image

Tesseract OCRエンジンの実行ファイルのパスを指定し、Tesseractをコマンドラインから呼び出すために必要です。

また、pyocr.get_available_tools() を使用して、利用可能なOCRツールを取得し、そのうちの最初のツールを選択しています。一般的に、Tesseractが最初に利用可能なツールとしてリストに表示されます。

pyocr.tesseract.TESSERACT_CMD = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
tools = pyocr.get_available_tools()
tool = tools[0]

PIL ライブラリを使用して、指定されたファイルパスにある画像ファイル(’test01.png’)を開いて、tool.image_to_string() メソッドを使用して、指定された画像からテキストを抽出します。

また、本メソッドの引数は、「image」、「lang」、「builder」です。

  • image: OCRを実行する対象の画像。
  • lang=”jpn”: OCRの言語設定。ここでは、日本語を指定しています。
  • builder=pyocr.builders.TextBuilder(): 抽出されたテキストを加工するためのビルダーオブジェクトを指定しています。ここでは、テキストを生のテキストとして取得します。

最後に抽出されたテキストをコンソールに表示します。

image =Image.open('test01.png')   #画像ファイルを読み込む
text = tool.image_to_string(image, lang="jpn", builder=pyocr.builders.TextBuilder())    #画像の文字を抽出

実演

それでは、紹介したコードを実行します。

VScodeでスクリプトを実行すると冒頭のような処理ができます。

日本語で設定していましたが、ローマ字もしっかりと認識できるので、英語もコンソールに抽出されます。

まとめ

OCR(光学文字認識)は、画像の文字を認識して、テキストのデジタルデータへと変換する技術のことをいいます。

書類や書籍などアナログ情報をデータ化するニーズが高まっていて、OCRの需要は拡大していきます。

自分のPCでOCRを使用するには、ヒューレット・パッカード(HP)が開発を進め、Googleが後援している光学式文字認識エンジンTesseractのインストールが必要です。

Windowsの場合は、exeファイル。Macの場合は、Homebrewを使用してTesseractを導入します。

また、Pythonで使う場合は、OCRエンジンと統合するPythonラッパーライブラリPyOCRのインストールが必要です。

この記事を書いた人

プロフィール

アリッシア

                 

大学4年間で何か胸を張れるスキルを身に着けたくて当サイト運営を始めました。
現在、大学院に進学するか就職するか迷いながら勉強しています。
詳しいプロフィールはこちら

Contact icon

contact

X icon

X

Instagram icon

Instagram

Note icon

Note

スポンサーリンク
Python
フォローする
タイトルとURLをコピーしました