罫線で囲まれた文字を Python で ocr してみた
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
リンクの記事で Python で ocr をしたところ、正しく文字を認識しました。
といっても、とっても簡単な画像で試したので当たり前といったところです。
絶対に誰でも出来る 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.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 の結果
図2 は ocr の結果をキャプチャした画像です。
図3 は 図2 を比較表にまとめた画像です。
正確に文字を認識出来ました。
罫線無しと罫線有りの画像で数字の出力のされ方が変わりました。
罫線無しでは、見た目と同じ配置で出力されたのに、罫線有りの場合は1列で表示されました。
コメント
認識する事は出来ました。さらに、出力形式については罫線の有り、無しで異なる事が分かりました。
次は罫線有りと罫線無しの数字が混在する画像に替えて試します。
以上