Python学院
メールマガジンバックナンバー

vol.54

  • コツ・知識
  • メールマガジン

OCR(光学式文字認識)とは?Pythonで文字を認識してみよう!

今回のメルマガのテーマは「OCR(光学式文字認識)」です。

(約5分で読めます)

~~~~~~~~~目次~~~~~~~~
1、「文字認識」とはなにか?
2、Pythonで文字認識をしてみよう!
3、おわりに
~~~~~~~~~~~~~~~~~~~

1. 「OCR」とはなにか?

■「OCR」とはなにか?
OCR(オーシーアール)とは、Optical Character Recognition/Reader
(オプティカル・キャラクター・レコグニション/リーダー)の頭文字を取ったものです。
日本語では光学式文字認識と言います。
光学式文字認識とは、画像から文字を自動で読み取り、
テキストデータに変換する技術です。
プログラムによっては、手書きの文字も認識することができます。

■文字認識の活用場面
・手書きのメモや印刷物をデジタル化する
・書類の自動整理
・デジタルアーカイブの作成
・画像を読み取っての検索や自動翻訳
・ビジネス文書や書籍のデジタル化 など

「文字認識」と聞くと、以下のように思うかもしれません。
・個人での使用は難しそう
・企業向けの技術なのではないか?

しかし上記の例より、
手書きのメモや議事録をデジタル化して格納するなど個人でも活用できます。
また、他の技術と組み合わせることで、
画像を読み取っての検索や自動翻訳なども可能になります。


2. Pythonで文字認識をしてみよう!


※この章は、Pythonの基本的な知識がある方に向けて書いております
 またjupyter notebookを使用してコードを作成いたします

■事前の準備
■ライブラリの説明
■コードの紹介
■コードの説明
■事前の準備

①プログラム作成用のフォルダを用意する
②Tesseract(テッセラクト)をインストールする
 Tesseractとは、Googleがオープンソースで開発しているOCRのツールです。
 以下サイトからTesseractをインストールします。
 https://github.com/UB-Mannheim/tesseract/wiki
③認識する文章の画像を①のフォルダに格納する
 今回はダミーテキスト作成ツールを用いて作成した、
 以下の画像を使用します。


④①のフォルダからjupyter notebook(ジュピターノートブック)を開く
※今回は「Tesseract」「jupyter notebook」の
 詳しいインストール方法や使用方法は割愛いたします
 文字認識を行ってみたいという方は、ぜひ調べてみてください

④までできましたら、事前の準備は完了です。

■ライブラリの説明
今回使用しているライブラリは、以下の4つです。
①os(オーエス)
②PIL(ピル)
③pyocr(パイオーシーアール)
④pyocr.builders(パイオーシーアール ビルダーズ)

①os
OS(Operating System)に関する機能を扱うためのライブラリです。
ファイルやディレクトリの操作、プロセスの実行、環境変数の取得などを行えます。
今回はTesseractのパスを通すために使います。

②PIL
Pythonで画像処理を行うためのライブラリです。
画像の読み込み・書き込み・リサイズ・回転・トリミングなどができます。

③pyocr
PythonでOCR(光学式文字認識)を行うためのライブラリです。
画像からテキストを認識し、文字列として取得することができます。

④pyocr.builders
pyocrライブラリと組み合わせて使用することができるライブラリです。
OCRの出力結果を加工するための機能を提供します。
例えば、OCRの出力の精度を向上させるための前処理などが行えます。

■コードの紹介
それではさっそく、以下にコードを記載いたします。
コードに記載のある"画像を格納しているフォルダのパス(.exeで終わります)"には、
画像を格納しているフォルダのパスを入れてください。

#①必要なライブラリをインポートする
import os
from PIL import Image
import pyocr
import pyocr.builders

#②インストール済みのTesseractのパスを通す path_tesseract = "画像を格納しているフォルダのパス(.exeで終わります)"
if path_tesseract not in os.environ["PATH"].split(os.pathsep):
    os.environ["PATH"] += os.pathsep + path_tesseract

#③OCRエンジンの取得
tools = pyocr.get_available_tools()
tool = tools[0]

#④読み取り精度の設定
builder = pyocr.builders.TextBuilder(tesseract_layout=6)

#⑤画像の読み込み
img_org = Image.open("dummy_text.png")

#⑥OCR実行
builder = pyocr.builders.TextBuilder()
result = tool.image_to_string(img_org, lang="jpn", builder=builder)
print(result)



■コードの説明
上記のコードがどのように動いているかについて、
上記で付けた番号に対応させて説明します。

①必要なライブラリをインポートする
上記で説明した4つのライブラリをインストールする。

②インストール済みのTesseractのパスを通す
PCからパスを通すことも可能ですが、
今回はPython上でTesseractのパスを通します。

③OCRエンジンの取得
pyocrでOCRを行えるOCRエンジンを取得できます。

④読み取り精度の設定
ここで読み取る精度を変更できます。

⑤画像の読み込み
今回は上で紹介した「dummy_text.png」という画像を読み込みます。

⑥OCR実行
文字認識を行い、読み取った文字を表示させます。

この①~⑥を行うことで、
画像中の文字をテキストとして出力できます。
設定によっては、手書きの文字を認識することも可能です。
※ご使用の環境や権限によっては、ご利用いただけない場合もございます


3. おわりに

今回は、「Pythonを使った文字認識技術」についてお伝えしました。
次回は、Pythonに関する資格についてご紹介します。
「G検定」など、Pythonについての資格は多くありますので、
難易度や試験範囲などをお伝えいたします。
ぜひ次回もご覧ください。

今回も画像生成AIに、ある言葉を入れて以下の画像を作成しました!
解答は、この記事の右下に記載しております。


本日も最後までお読みいただき、ありがとうございます!
それでは、次回もお楽しみに!

A. 良い風呂(good bath)


関連研修