解析エンジニアの自動化 blog

コツコツと自動化した方法を残す blog

フォントサイズが ocr の認識率に与える影響についてのまとめ(Python + Tesseract)



こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。



この記事の目次



目的


リンクの記事でフォントサイズ 11 ポイントで 2 行 6 列の表を ocr しました。
残念ながら間違えやすい『 3 』、『 5 』、『 8 』の 3 箇所を誤認識していました。

文字認識でフォントサイズの違いは正解率にどのくらい影響するか - 解析エンジニアの自動化 blog

今回はフォントサイズが 12 ポイントだとどのくらいの正解率になりそうか確認します。



プログラム

ソースコード


# -*- coding: utf-8 -*-
###############################################################################
# ライブラリインポート
###############################################################################
import os                       # os の情報を扱うライブラリ
import pytesseract              # tesseract の python 用ライブラリ
from PIL import Image           # 画像処理ライブラリ
import matplotlib.pyplot as plt # データプロット用ライブラリ
import numpy as np              # データ分析用ライブラリ
 
# カレントディレクトリを変更する
os.chdir("C:\\作業")
 
# pytesseract に tesseract のパスを通す
pytesseract.tesseract_cmd='C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
 
# 画像の読み込み
#img = Image.open('C:\作業\ocr-test1.jpg')
#img = Image.open('C:\作業\ocr-test2.png')
#img = Image.open('C:\作業\ocr-test3.png')
#img = Image.open('C:\作業\ocr-test4.png')
#img = Image.open('C:\作業\ocr-test5.png')
#img = Image.open('C:\作業\ocr-test6.png')
#img = Image.open('C:\作業\ocr-test7.png')
#img = Image.open('C:\作業\ocr-test8.png')
#img = Image.open('C:\作業\ocr-test9.png')
#img = Image.open('C:\作業\ocr-test10.png')
img = Image.open('C:\作業\ocr-test11.png')

# 画像を配列に変換
im_list = np.array(img)
 
# データプロットライブラリに貼り付け
plt.imshow(im_list)
 
# 表示
plt.show()
 
# テキスト抽出
txt = pytesseract.image_to_string(img)
 
# 抽出したテキストの出力
print()
print(txt)
print()

使い方

画像の読み込みについては何回も失敗に失敗を重ねて 11 枚の画像を作りました。 1 つの記事には出来そうに無いので、1 つの記事で 1 画像ずつ紹介していきます。

コメントを意味する ♯ を順に付けていきながら、読み込む画像を変えて ocr していきました。

その他の Python ソースコードについてはソースコードのコメントに処理内容を書いたので、説明は割愛します。



ocr する画像

図1 のエクセルで作った画像を ocr しました。
フォントは『 MS Pゴシック 』で、サイズは 12 ポイントです。

図1 ocr する画像



ocr の結果

図2 は ocr の結果をキャプチャした画像です。
図3 は 図2 を比較表にまとめた画像です。

なぜかフォントサイズが 12 ポイントが 1 番認識率が良く全文字列を正しく認識しました。

【フォントサイズ別まとめ】
『 フォントサイズ 11 : 誤認識 3 箇所 』
『 フォントサイズ 12 : 誤認識 0 箇所 』
『 フォントサイズ 14 : 誤認識 1 箇所 』


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

フォントサイズ 12 ポイントの誤認識は 2 箇所かなぁって思ってたら、予想外に全正解となりました。
でも、フォントサイズは大きい方が認識しやすい結果となった…と言っていいと思います。
今後、単純に画像サイズを大きくすればより認識率が向上出来るのか確認します。



以上