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

OCR(Optical Character Recognition)、日本語で「光学文字認識」と呼ばれる技術は、
手書きの文字や印刷された書類の活字をスキャナーやカメラなどで画像化し、
その画像の文字を認識して、テキストのデジタルデータへと変換する技術のことをいいます。
ビジネスや日常生活でデジタル化が進む現代で、
書類や書籍など印刷されたアナログ情報をデータ化するニーズが高まっていて、
OCRの需要が今後さらに拡大していきます。
本記事では、Pythonを使って、画像の文字を認識する方法を紹介します。
- Pythonを使う人
- OCRに興味がある人
- Tesseractのインストールをしたい人
- Pythonで画像から文字認識をしたい人
- 業務を効率化したい人
ConoHaWing開設方法|アリッシア
技術ブログを書くべき理由|アリッシア
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~)にチェックを入れてください。

これらが完了したら、次に進み、インストールを完了させてください。
macの場合は、Homebrewを使用してTesseractをインストールすることができます。
brew install tesseract
Windowsでは、exeファイルをインストールしなければいけませんでしたが、Macの場合は、たったのこれだけです。
クリエイターのMac離れを言われていますが、OCRは、Macの方が手際よくできそうです。
Tesseractは商用利用可能か
Tesseract OCR は、Apache License 2.0 の下で公開されているオープンソースであるため、
商用利用が可能です。
Apache License 2.0は、ソフトウェアを自由に使用、改変、配布することが許可されており、
商用利用も含まれます。
しかし商用利用可能でも、著作権は開発者に属するので、節度が必要です。
ビジネスで使用する際は、必ずライセンスを一読し詳細をご確認ください。
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は、オープンソースのOCR(Optical Character Recognition)ライブラリで、
Apache License 2.0のもとで提供されています。
ゆえに、商用利用も含めて許可されていますが、いくつかの条件があります。
- 著作権表示の維持: ソースコードや関連するドキュメントに元の著作権表示やライセンス通知を残す必要があります。
- 責任免除: ライセンス提供者は、使用に伴う責任を負いません。ソフトウェアは「現状のまま」提供されます。
- 同じライセンスの維持: 変更したコードを再配布する場合、同じApache License 2.0で提供するか、互換性のあるライセンスを使用する必要があります。
詳細は、公式サイトで各自確認してください。
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) # 抽出したテキストを表示
ブログを運営するメリット
プログラマーがブログを運営するメリットは沢山あります。
エンジニアはブログを運営するべき理由|アリッシア
- アウトプットによるスキル向上
- メモ帳代わり
- ポートフォリオ(案件獲得)
ブログを始めるためには、「テーマ」・「ドメイン」・「サーバー」の3つが必要です。
3つはブログ運営の基盤となる要素ですが、これら全て自分で用意しなければいけません。
面倒で難しくブログ開設を断念してしまう人が多いです。
ConoHa Wingの「WordPressかんたんセットアップ」は
最短10分で契約可能!
ConoHa WINGから契約をすれば、独自ドメイン、サーバーの用意、WordPressとの連携も簡単にできます。
さらに、2つの独自ドメインが永久無料の特典もあり、
月660円からの破格価格にもかかわらず、表示速度は国内最速です。
解説
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のインストールが必要です