罫線入りの 10 行 10 列の表の画像を大きくリサイズして ocr してみる(Python + Tesseract)
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
リンクの記事で Python + Tesseract を使った ocr について動作確認とフォントサイズの違いによる文字認識率について調べてみました。
間違えやすい文字が『 3 』、『 5 』、『 8 』を筆頭に大体の傾向が分かりました。
フォントサイズが ocr の認識率に与える影響についてのまとめ(Python + Tesseract) - 解析エンジニアの自動化 blog
今回は画像サイズを 2 倍にするとどのくらいの正解率になりそうか確認します。
プログラム
ソースコード〜画像拡大〜
# -*- coding: utf-8 -*-
###############################################################################
# ライブラリインポート
###############################################################################
import os # os の情報を扱うライブラリ
from PIL import Image # 画像処理ライブラリ
# カレントディレクトリを変更する
os.chdir("C:\\作業")
# 画像の読み込み
img = Image.open('C:\作業\ocr\ocr-test1.jpg')
# 画像のリサイズ
img_resize = img.resize((int(img.width*2), int(img.height*2)), Image.LANCZOS)
# 画像の保存
img_resize.save('C:\作業\ocr\ocr-test1-resize.jpg')
拡大した画像
リンクの記事で ocr した画像の ocr-test1.jpg を 2 倍の大きさにして、 ocr-test1-resize.jpg として保存します。ちなみに元々の画像のフォントは『 MS P ゴシック 』でフォントサイズは 11 ポイントです。
初心者が Python で初めての ocr - 解析エンジニアの自動化 blog
ソースコード〜 ocr 〜
# -*- 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- resize.jpg')
# 画像を配列に変換
im_list = np.array(img)
# データプロットライブラリに貼り付け
plt.imshow(im_list)
# 表示
plt.show()
# テキスト抽出
txt = pytesseract.image_to_string(img)
# 抽出したテキストの出力
print()
print(txt)
print()
ocr の結果
図2 は ocr の結果をまとめた表です。
基本的に 1 桁の数字が読み取れていません。
間違えやすい数字が分かりました。
『 3 ⇨ 8 』
『 7 ⇨ T 』
コメント
1 桁の数字を読み込まない原因が分かりません。
誤認識でも良いから認識さえしてくれていればまだ良かったのですが…
何か 1 桁の数字を認識させる方法を考えます。
以上