Pythonでpng画像をテキストに変換する方法【初心者向け】
初心者向けにPythonでpng画像をテキストに変換する方法について解説しています。この変換にはOCR (Optical Character Recognition)を使用します。OCRの導入方法と画像の読み込み、変換の手順を実際に書きながら覚えていきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Pythonでpng画像をテキストに変換する方法について解説します。
そもそもPythonについてよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプPython講座の内容をもとに紹介しています。
今回は、Pythonに関する内容だね!
どういう内容でしょうか?
png画像をテキストに変換する方法について詳しく説明していくね!
お願いします!
画像を読み込む方法
Python で画像を読み込む方法はいくつかあります。
- PIL(Pillow)
- OpenCV
- scikit-image
中でも一番良く使われているのが PIL(Pillow) です。 Pillow は Python で代表的な画像処理ライブラリで、画像のリサイズや描画を容易に行なえます。 Pillow を利用して画像を読み込むには以下のように記述します。
from PIL import Image, ImageFilter im = Image.open('画像ファイル名')
テキストに変換する方法
画像をテキストに変換する技術を OCR (Optical Character Recognition)といいます。 OCR は OCRエンジンというソフトを使い、画像データからテキストを抽出します。OCRエンジンは多くの種類がありますが、今回はオープンソースのOCRエンジンである Tesseract OCR を利用します。Tesseract OCR は学習によって日本語テキストを抽出することも可能です。
また、 Python から OCRエンジン を使えるようにする代表的なライブラリが PyOCR です。 PyOCR を利用して、画像をテキストに変換するには、以下のように記述します。
txt = tool.image_to_string( Image.open('画像ファイル名'), lang=言語名, builder=pyocr.builders.TextBuilder() )
実際にpng画像をテキストに変換してみよう
はじめにOCRエンジンをインストールします。インストール方法は公式サイトを参考にしてください。Windowsであればインストーラーをダウンロードしてインストール、Macであればターミナルから以下のコマンドでインストールします。
brew install tesseract
Tesseract OCR公式サイト
https://github.com/tesseract-ocr/tesseract/wiki
次に必要な ライブラリをインストールします。パソコンが Macならターミナル、Windowsならコマンドプロンプトから以下のコマンドでインストールします。なお、事前に Python のインストールが必要です。
pip install Pillow
pip install pyocr
今回は、 PyOCR サンプルコードを例に、png 画像をテキストに変換する方法を確認します。
https://gitlab.gnome.org/World/OpenPaperwork/pyocr
サンプルコードは以下となります。
from PIL import Image import sys import pyocr import pyocr.builders tools = pyocr.get_available_tools() if len(tools) == 0: print("No OCR tool found") sys.exit(1) # The tools are returned in the recommended order of usage tool = tools[0] print("Will use tool '%s'" % (tool.get_name())) # Ex: Will use tool 'libtesseract' langs = tool.get_available_languages() print("Available languages: %s" % ", ".join(langs)) lang = langs[0] print("Will use lang '%s'" % (lang)) # Ex: Will use lang 'fra' # Note that languages are NOT sorted in any way. Please refer # to the system locale settings for the default language # to use. txt = tool.image_to_string( Image.open('test.png'), lang=lang, builder=pyocr.builders.TextBuilder() ) # txt is a Python string print(txt)
また、プログラムと同じフォルダに、画像ファイル「test.png」を配置しておきましょう。今回は英語版Wikipediaのトップページにしました。
実行結果は以下のようになります。かなり高い精度でpng画像をテキストに変換出来ていることが分かりますね。
Welcome to Wikipedia, the free encyclopedia that anyone can edit. 5,700,236 articles in English From today's featured article Oxalaia, a spinosaurid dinosaur, lived in what is now Brazil during the Late Cretaceous, sometime between 93.9 and 100.5 million years ago. The genus name comes from Oxala, an African deity. Oxalaia's only known fossils, a partial snout and upper jaw bone, were found in 1999 in the Alcéntara Formation. At an estimated 12 to 14 metres (39 to 46 feet) in length, it is the largest carnivorous dinosaur discovered from Brazilian fossils. The African genus Spinosaurus was its closest relative. Oxalaia bore two replacement teeth in each socket (similarly to sharks) and a very ornamented secondary palate, features which are not known in other theropod or spinosaurid dinosaurs. Its habitat was tropical and heavily forested, surrounded by dry regions. Since Oxalaia's skull and teeth resembled those of modern crocodilians, it may have largely hunted fish. Fossil evidence suggests spinosaurids also occasionally preyed on other animals such as small dinosaurs and pterosaurs. (Full article...) Recently featured: Hurricane Bret - Golden jackal - Evita (1996 film) Archive - By email - More featured articles
この記事を監修してくれた方
太田和樹(おおたかずき) 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもPythonを使った人工知能(AI)や機械学習の基礎を習得できるオンラインブートキャンプPython講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。