画像の文字をOCR技術で出力する。
OCR(Optical Character Recognition)、日本語で「光学文字認識」と呼ばれる技術は、
手書きの文字や印刷された書類の活字をスキャナーやカメラなどで画像化し、
その画像の文字を認識して、テキストのデジタルデータへと変換する技術のことをいいます。
ビジネスや日常生活でデジタル化が進む現代で、
書類や書籍など印刷されたアナログ情報をデータ化するニーズが高まっていて、
OCRの需要が今後さらに拡大していきます。
本記事では、Pythonを使って、画像の文字を認識する方法を紹介します。
- Pythonを使う人
- OCRに興味がある人
- Tesseractのインストールをしたい人
- Pythonで画像から文字認識をしたい人
- 業務を効率化したい人
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のもとで提供されています。
ゆえに、商用利用も含めて許可されていますが、いくつかの条件があります。
詳細は、公式サイトで各自確認してください。
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) # 抽出したテキストを表示
UdemyでPythonを学習
Udemyは、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。
- 現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル
Pythonをインストールから環境設定、基本文法が学習
さらに暗号化、インフラ自動化、非同期処理についても学べます。
Pythonを基礎から応用まで学びたい人におすすめ
- みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2024年最新版】
機械学習ライブラリで文字認識や株価分析などを行う。
人口知能やニューラルネットワーク、機械学習を学びたい人におすすめ。
- 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
統計分析、機械学習の実装、ディープラーニングの実装を学習。
データサイエンティストになりたい人におすすめ。
- 0から始めるTkinterの使い方完全マスター講座〜Python×GUIの基礎・応用〜
TkinterのGUIを作成から発展的な操作までアプリ実例を示して学習。
アプリ開発したい人におすすめ。
解説
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のインストールが必要です