お試し 技術

画像から文字を抽出する

今回は画像内に記載されている文字を取得する方法について記載していきます。Tesseract OCRというライブラリを使用していきます

名称バージョン
Python3.12
pytesseract0.3.13
pillow
※pytesseractパッケージをインストールすると
自動で一緒にインストールされる
12.0.0

Tesseract OCRをインストールする

Tesseractをインストールする必要があるため、以下公式サイトからインストールしてください。今回はインストールの手順については省略します。ただ、インストール時にはあらかじめ日本語を対象言語として追加しておいた方が後々楽だと思います

公式サイト
Introduction | tessdoc
Introduction | tessdoc

Tesseract documentation

公式サイトへ

実際に画像に対して処理する

処理対象画像としてはこれまで使用してきた記事のサムネイル画像にしようしていきます

各種読み込み

インストールしたTesseract OCRへのパスと処理対象画像の読み込みを実施します

import pytesseract
from PIL import Image
from PIL import ImageFilter

# Tesseractのインストールパスを指定
pytesseract.pytesseract.tesseract_cmd = r'path\Tesseract-OCR\tesseract.exe'
# 環境パスを通している場合は、ファイル名のみでOK
# pytesseract.pytesseract.tesseract_cmd = 'tesseract'

# 画像を読み込む
image_path = r'OCR\サムネイル画像023.jpg'  # 画像のパスを指定
image = Image.open(image_path)

文字を抽出できるように加工する

画像をそのままだと文字が抽出できないので抽出できるように加工します

# 画像をグレースケール化
gray_image = image.convert('L')

# ノイズ除去のためにガウシアンブラーを適用
denoised_image = gray_image.filter(ImageFilter.GaussianBlur(radius=1))
# denoised_image.show()  # ノイズ除去後の画像を表示

# 画像をリサイズ(幅を600ピクセルに変更)
resized_image = denoised_image.resize((600, int(denoised_image.height * (600 / denoised_image.width))))
# resized_image.show()  # リサイズ後の画像を表示

# 二値化処理を実施
threshold = 128  # 閾値を設定
binary_image = resized_image.point(lambda p: 255 if p > threshold else 0)
binary_image.show()  # 二値化後の画像を表示

上記の対象画像に実行すると以下のようになります

文字を抽出する

加工をした画像から実際に文字を抜き出します。この際に抽出する言語を指定する必要があります

# 画像からテキストを抽出
extracted_text = pytesseract.image_to_string(binary_image, lang='jpn+eng')  # 日本語+英語の場合
print(extracted_text)

# SHAREPOINTRESTAP1を使ってみる と出力される(Iではなく、1となっている)

文字抽出時の注意点

ただ、上記の内容ですべての画像に対して対応できるかというとそうではなく、以下の画像だと文字がうまく抽出できません
そのため、対象となる画像ごとに調整が必要となります

最後に

今回の画像から文字を抽出する方法は初歩的なものとなるので実務で使用するためには習熟度が必要だと感じました
これを実務レベルまで扱えるようになれば色々と応用がききそうです

会社紹介

私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています

会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造

この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています

ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します

ホームページ
アドバンスド・ソリューション株式会社|ADS Co., Ltd.
アドバンスド・ソリューション株式会社|ADS Co., Ltd.

Microsoft 365/SharePoint/Power Platform/Azure による DX コンサル・シス ...

サイトへ移動

PR

-お試し, 技術
-