罫線の無い 10 行 10 列の等間隔整列した文字の画像を大きくリサイズして ocr してみる(Python + Tesseract)
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
リンクの記事で 罫線入りの表の ocr で画像サイズを大きくすると文字認識率がどう変わるのかを調べてみました。
拡大前画像では全く意味不明な文字として認識したのに拡大後画像では 1 桁の数字以外と間違えやすい文字の『 3 』、『 5 』、『 7 』、『 8 』以外の文字は読み取れました。
罫線入りの 10 行 10 列の表の画像を大きくリサイズして ocr してみる(Python + Tesseract) - 解析エンジニアの自動化 blog
今回は罫線の無い等間隔整列する文字の表の画像サイズを 2 倍にするとどのくらいの正解率になりそうか確認します。
プログラム
ソースコード〜画像拡大〜
# -*- coding: utf-8 -*-
###############################################################################
# ライブラリインポート
###############################################################################
import os # os の情報を扱うライブラリ
from PIL import Image # 画像処理ライブラリ
# カレントディレクトリを変更する
os.chdir("C:\\作業")
# 画像の読み込み
img = Image.open('C:\作業\ocr\ocr-test2.jpg')
# 画像のリサイズ
img_resize = img.resize((int(img.width*2), int(img.height*2)), Image.LANCZOS)
# 画像の保存
img_resize.save('C:\作業\ocr\ocr-test2-resize.jpg')
拡大した画像
リンクの記事で ocr した画像の ocr-test2.jpg を 2 倍の大きさにして、 ocr-test2-resize.jpg として保存します。ocr ( Python + Tesseract ) で惨敗した - 解析エンジニアの自動化 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-test2-resize.jpg')
# 画像を配列に変換
im_list = np.array(img)
# データプロットライブラリに貼り付け
plt.imshow(im_list)
# 表示
plt.show()
# テキスト抽出
txt = pytesseract.image_to_string(img)
# 抽出したテキストの出力
print()
print(txt)
print()
コメント
1 桁の数字を認識しませんでした。
何か 1 桁の数字を認識させる方法を考えます。
また、拡大前画像と拡大後画像では 1 桁の数字を除き、誤認識数は 75 % 減少しました。
以上