メインコンテンツへスキップ
【python】文字認識で画像からテキストを出力するやり方をわかりやすく【Tesseract&PyOCR】
  1. Posts/

【python】文字認識で画像からテキストを出力するやり方をわかりやすく【Tesseract&PyOCR】

Python OCR 画像解析 チュートリアル 自動化 Python Tesseract PyOCR OCR 画像文字認識 テキスト抽出 プログラミング Python活用 自動化 画像解析 文字認識

今回は文字認識ライブラリのPyOCRとTesseractを使って画像からテキストを抽出したいと思います。

環境構築含めpythonでの文字認識のやり方を簡潔に説明できればと思います。

この記事は以下のような方を対象者としています。

  • python初学者の方
  • pythonで文字認識のやり方を探している方
  • コピペでいいからpythonの文字認識を試したい方

前置き:文字認識ライブラリTesseractとPyOCRとは?
#

Alt text

まずは今回使うライブラリの概要について1行で説明します。

Tesseract…GoogleとHPが共同開発したオープンソースの文字認識用ライブラリ。

PyOCR….Python用のOCR(光学的文字認識)ライブラリ。

Pythonで文字認識:環境構築をしよう
#

まずはPythonで文字認識を行うための準備をしましょう。

実際に私が環境構築した時の手順を説明します。

下記が私のPCのPythonのライブラリのバージョンです。

※これらコマンドはターミナル上で実行しています。

実行コマンド:
python --version

出力結果:
Python 2.7.15

ちなみに私はMacを使うため本記事もMacでの環境構築を前提として解説します。

Pythonで文字認識 環境構築手順その1:PyOCRのインストール
#

まずは下記コマンドでPyOCRライブラリのインストールをしましょう。

実行コマンド:
sudo pip install pyocr

出力結果:
Successfully built pyocr
Installing collected packages: Pillow, pyocr
Successfully installed Pillow-8.0.1 pyocr-0.7.2

Pythonの画像ライブラリであるPillowもPyOCRに併せてインストールされます。

Pythonで文字認識 環境構築手順その2 : Tesseractのインストール
#

続いて文字認識を行う上で必須となるTesseractライブラリをインストールしましょう。

実行コマンド:
brew install tesseract

出力結果:
Successfully installed的な文言が表示されていればOKです。

参考までに私のMacにインストールされたTesseractのバージョンは下記の通りです。

実行コマンド:tesseract --version
出力結果:
tesseract 4.0.0

Pythonで文字認識 環境構築手順その3 : 日本語モデルのダウンロード
#

上記手順にてpythonの文字認識で必要なライブラリのインストールが完了しました。

しかし、今のままだと英語しか文字認識ができないです。

日本語で文字認識をしたい場合は日本語の学習モデルのダウンロードが必要です。

下記URLより日本語モデルデータをダウンロードしてください。

Tesseract 日本語モデル ダウンロード用URL
https://github.com/tesseract-ocr/tessdata/blob/master/jpn.traineddata

Pythonで文字認識 環境構築手順その4 : 日本語モデルファイルをtessdataフォルダ配下に配置
#

上記URLより日本語モデル(ファイル名:jpn.traineddata)のダウンロードが完了したら、下記所定の位置に配置してください。

/usr/local/Cellar/tesseract/tesseractのバージョン名/share/tessdata/

注意点 : tesseractのバージョン名はインストールしたtesseractのバージョン名で置き換えてください。
例:4.0.0_1

ちなみにtessdataフォルダ内には下記ファイルが格納されていました。
実行コマンド : ls -la /usr/local/Cellar/tesseract/4.0.0_1/share/tessdata/
- configs
- eng.traineddata
- osd.traineddata
- pdf.ttf
- snum.traineddata
- tessconfigs

これでPyOCR&Tesseractでの文字認識のための環境構築が完了しました。

Pythonで文字認識 : 実行スクリプトを用意
#

続いて文字認識を行うためのスクリプトを用意しましょう。

サンプルコードはnabechi6011さんのコードを参考にさせていただきました。

import sys
from PIL import Image
import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)

tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))

txt = tool.image_to_string(
    #文字認識対象の画像image.pngを用意する
    Image.open("./image.png"),
    lang="jpn",
    builder=pyocr.builders.TextBuilder(tesseract_layout=6)
)

print( txt )

僕のフォルダ構成は下記の通りです

detectText/
- detect.py
- image.png

Pythonで文字認識 : 文字認識スクリプトを実行
#

お疲れ様でした。

それでは最後に前ステップで用意したスクリプトを実行しましょう。

ちなみに僕が用意した画像はドラえもんのwikipediaからスクショしたものです。

実行コマンド : python detect.py
実行結果 : 

本 作 品 は 、②② 世 紀 の 未 来 か ら や っ て き た ネ コ 型 ロ ボ ッ ト ・ ド ラ え も ん と 、 勉 強 も ス ポ ー ツ も 苦 手 な 小 学 生 ・ 野 比 の び 太 が 繰 り 広 げ る 少 し 不 思 議 (SF) な 日
常 生 活 を 描 い た 作 品 で あ る 。 基 本 的 に は 一 話 完 結 型 の 連 載 漫 画 で あ る が 、 一 方 で ス ト ー リ ー 漫 画 形 式 と な っ て 日 常 生 活 を 離 れ た 冒 険 を す る と い う 映 画 版 の

成功した場合は画像に書かれているテキストが標準出力されるはずです。

ちなみに画像の解像度が低かったり、極端にテキストの大きさが小さいと正確に文字認識ができない場合があります。

関連記事

【python】文字認識したテキストをエクセルに出力するやり方をわかりやすく【PyOCR + XlsxWriter】
Python OCR Excel自動化 チュートリアル データ処理 Python PyOCR 文字認識 OCR テキスト抽出 XlsxWriter Excel出力 プログラミング Python活用 データ処理 自動化
【アプリ開発】個人開発で稼ぎたいならKotlinを勉強すべき4つの理由
アプリ開発 プログラミング学習 副業 アプリ開発 Kotlin Android開発 プログラミング
【Amazon Route53とは】awsをわかりやすく
AWS クラウドサービス ネットワーク インフラ チュートリアル AWS Route53 DNS クラウド ドメイン管理 AWS入門 クラウドサービス ネットワーク インフラ DNS管理 Amazon Web Services