OCRの魔法!Tesseractで画像からテキストを抽出する方法
一言で言うと、Tesseractは画像やPDFから文字を読み取ってテキストデータに変換してくれるオープンソースのツールです。まるで画像に書かれた文字を魔法のように抜き出して、編集可能なテキストにしてくれる、そんな「お値段以上」の働きをしてくれます。
もともとHP(ヒューレット・パッカード)が開発し、現在はGoogleがスポンサーとなっているため、信頼性と継続的な改善が期待できます。しかも、主要なプログラミング言語から簡単に利用できるライブラリが多数提供されているのも嬉しいポイントです。
Tesseractは、単に文字を認識するだけでなく、多岐にわたるタスクでエンジニアの強力な味方になります。
データ入力の自動化
紙の書類やスキャンされた文書をOCRで読み取り、手作業でのデータ入力を自動化できます。たとえば、領収書の画像を読み取って金額や日付を自動で家計簿アプリに入力する、といったシステムが作れます。
検索可能なPDFの作成
スキャンしたPDFは通常、ただの画像ファイルで、中の文字を検索できません。Tesseractを使えば、不可視レイヤーとして文字情報を付加した、検索可能なPDFを作成できます。
画像内のテキスト分析
Webサイトやアプリのスクリーンショットに含まれるテキストを抽出して、分析やテストに利用できます。特定のメッセージが表示されたか確認する、といったE2Eテストにも応用可能です。
多言語対応
Tesseractは日本語を含む100以上の言語に対応しています。これにより、多言語の書類処理やグローバルなアプリケーション開発にも活用できます。
Tesseractの導入は、いくつかのステップで行います。まず、ローカル環境に本体をインストールし、次にプログラミング言語ごとのラッパーライブラリを導入するのが一般的です。ここでは、Pythonを例に見ていきましょう。
OSごとにインストール方法が異なります。
macOS
Homebrewを使用するのが簡単です。
brew install tesseract
Windows
公式GitHubリポジトリのダウンロードページからインストーラをダウンロードして実行します。
Ubuntu/Debian
aptコマンドでインストールできます。
sudo apt install tesseract-ocr
PythonからTesseractを呼び出すために、pytesseractという便利なライブラリを使います。pipで簡単にインストールできます。
pip install pytesseract
pip install Pillow # 画像処理ライブラリも一緒にインストール
次のコードは、画像ファイル(例
invoice.png)から日本語のテキストを読み取る例です。
import pytesseract
from PIL import Image
# Tesseractの実行ファイルのパスを指定します(Windowsの場合)
# pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
# 画像ファイルを読み込みます
image_path = 'invoice.png'
text = pytesseract.image_to_string(Image.open(image_path), lang='jpn')
# 読み取ったテキストを出力します
print(text)
# 読み取りたい言語を英語にする場合は lang='eng' とします
# 多言語を同時に読み取る場合は lang='eng+jpn'
このコードを実行すると、画像に書かれた文字がtext変数に文字列として格納されます。認識精度を上げるためには、画像の解像度を上げたり、前処理(ノイズ除去、二値化など)を施したりすることが重要です。