Tesseract-OCRは、オープンソースの光学文字認識(OCR)エンジンで、画像からテキストを抽出するための強力なツールです。Pythonでは、pytesseract
ライブラリを使用してTesseract-OCRを操作することができます。以下に、Tesseract-OCRの概要とその特徴を具体的な例を交えて紹介します。
Tesseract-OCRの特徴
高精度な文字認識
Tesseractは多くの言語に対応しており、高い精度で文字認識を行います。手書き文字や印刷されたテキストの認識に優れています。
オープンソース
TesseractはGoogleによってサポートされているオープンソースプロジェクトであり、自由に利用、改良が可能です。
多言語対応
Tesseractは、英語をはじめとする多数の言語に対応しており、日本語などの非ラテン文字も認識できます。
統合が容易
pytesseract
ライブラリを使用することで、Pythonプログラムに簡単に統合できます。画像処理ライブラリのPillowやOpenCVと組み合わせて使用することが一般的です。
例題1: 基本的なOCR処理
以下の例では、pytesseract
を使用して画像からテキストを抽出する基本的な方法を示します。
必要なライブラリのインストール
pip install pytesseract pillow
また、Tesseract-OCRエンジンをインストールする必要があります。インストール方法はOSによって異なりますが、以下に代表的なコマンドを示します。
Windows
Tesseractのインストーラを公式サイトからダウンロードしてインストールします。
Mac
Homebrewを使用してTesseractをインストール。
brew install tesseract
Ubuntu
sudo apt install tesseract-ocr
画像からテキストを抽出するスクリプト
from PIL import Image
import pytesseract
# 画像の読み込み
image = Image.open('sample_image.png')
# 画像からテキストを抽出
text = pytesseract.image_to_string(image, lang='eng')
# 抽出したテキストの表示
print(text)
このコードでは、Pillowライブラリを使用して画像を読み込み、pytesseract.image_to_string
関数でテキストを抽出しています。lang
パラメータを指定することで、使用する言語を選択できます。
例題2: 日本語テキストの認識
次に、日本語テキストを含む画像から文字を抽出する例を示します。
日本語データのインストール
Tesseractの日本語データをインストールする必要があります。以下のコマンドでインストールできます。
Windows
日本語データをダウンロードし、Tesseractのtessdata
フォルダに配置します。
Mac
Homebrewを使用してTesseractをインストール。
brew install tesseract-lang
Ubuntu
sudo apt install tesseract-ocr-jpn
日本語テキストの抽出スクリプト
from PIL import Image
import pytesseract
# Tesseractの実行ファイルのパスを設定(Windowsの場合のみ)
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 画像の読み込み
image = Image.open('japanese_sample.png')
# 画像から日本語テキストを抽出
text = pytesseract.image_to_string(image, lang='jpn')
# 抽出したテキストの表示
print(text)
このコードでは、日本語データを使用して日本語テキストを抽出しています。lang
パラメータに'jpn'
を指定することで、日本語テキストの認識を行います。
例題3: 前処理を含むOCR処理
画像の前処理を行うことで、OCRの精度を向上させることができます。以下の例では、OpenCVを使用して画像の前処理を行い、テキストを抽出します。
必要なライブラリのインストール
pip install opencv-python
前処理を含むOCRスクリプト
import cv2
from PIL import Image
import pytesseract
# 画像の読み込み
image = cv2.imread('sample_image.png')
# グレースケール変換
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二値化
_, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
# ノイズ除去
denoised = cv2.medianBlur(binary, 3)
# 画像を保存してPillowで開く
cv2.imwrite('processed_image.png', denoised)
processed_image = Image.open('processed_image.png')
# 画像からテキストを抽出
text = pytesseract.image_to_string(processed_image, lang='eng')
# 抽出したテキストの表示
print(text)
このコードでは、OpenCVを使用して画像をグレースケールに変換し、二値化とノイズ除去を行っています。前処理された画像を保存し、Pillowで開いてからpytesseract
でテキストを抽出します。
結論
Tesseract-OCRは、Pythonで画像からテキストを抽出するための強力なツールです。Tesseractを使用することで、スキャンした文書や手書きのノートからテキストデータを抽出し、デジタル化することができます。基本的なOCR処理から、日本語テキストの認識、前処理を含む高度なOCR処理まで、Tesseractの理解と適用は、データ解析や情報抽出のプロジェクトにおいて非常に有用です。