メインコンテンツへスキップ
  1. Posts/

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

loading · loading ·

今回は文字認識ライブラリの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) な 日
常 生 活 を 描 い た 作 品 で あ る 。 基 本 的 に は 一 話 完 結 型 の 連 載 漫 画 で あ る が 、 一 方 で ス ト ー リ ー 漫 画 形 式 と な っ て 日 常 生 活 を 離 れ た 冒 険 を す る と い う 映 画 版 の

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

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

さいごに
#

ここまでお読みいただきありがとうございました。

私のブログ記事を読んでいる方の中には海外転職・海外移住への興味がある方もいらっしゃるかと思います。

私自身ダナンで働き始めて7年目になりますが、海外就職を実現するために大事なのは英語力と開発現場で働いた経験だと感じました。

もし今後海外移住・海外就職を本気で実現させたい方はぜひこれらのサービスを活用してみてください。

レアジョブ - 実務で使える英語力を身につけよう
#

レアジョブ英会話は英会話力の向上に特化したサービスです。 私の友人もレアジョブを通じて0から学習を続け、現在はベトナム人のエンジニアとも英語でコミュニケーションが取れるレベルまで英会話力を伸ばすことができました。

レアジョブが選ばれる理由は多岐にわたりますが、主な理由としては下記3点が考えられます。

  • 優秀な講師陣:公用語が英語であるフィリピン人の方が講師となり、生きた英語を身につけることができる
  • 豊富な教材: 5,000以上の教材を提供しており、学習者のレベルや目的に応じて最適な教材を選べます。
  • 安心のサポート体制:初心者でも安心して始められるように、日本人カウンセラーが学習のサポートをしてくれます。

海外移住計画の第一歩として、スピーキング力を身につけたいと考えている方は、ぜひこちらの無料体験を試してみてはいかがでしょうか。

Related

【python】文字認識したテキストをエクセルに出力するやり方をわかりやすく【PyOCR + XlsxWriter】
loading · loading
【コピペOK】flutterのSizedBoxとExpandedの違いをわかりやすく
loading · loading
【flutter初心者】Column/Row/Center/Containerの違いをわかりやすく
loading · loading