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

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

【再チャレンジ】 2 行 6 列の表の文字認識(Python + Tesseract)



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



この記事の目次



目的


リンクの記事で 2 行 6 例の小さい表を Pythonocr をしました。
全く文字を認識しませんでした。

文字は 1 〜 12 です。 1 桁なのが何か影響しているのではないかと思っています。

2 行 6 列の表の文字が認識出来なかった(Python + Tesseract) - 解析エンジニアの自動化 blog

表の大きさは変えずに文字を変えた 2 行 6 列の表で認識出来るか Pythonocr してみます。



プログラム

ソースコード


# -*- 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ゴシック 』で、サイズは 14 ポイントです。

図1 ocr する画像



ocr の結果

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

前の記事から数字の桁数を変えたのですが、今度は文字を認識しました。
残念ですが、『 10 』を『 TO 』と認識してしまいましたが、その他の文字は正しく認識されました。

2 行 6 列の表の文字が認識出来なかった(Python + Tesseract) - 解析エンジニアの自動化 blog


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

かなり正しく読み込めています。
次からは、今までフォントは『 MS Pゴシック 』で、サイズは 14 ポイントでしたが、高い正解率と低い正解率のフォントサイズを確認するため、フォントサイズを変えた表で ocr します。



以上

2 行 6 列の表の文字が認識出来なかった(Python + Tesseract)



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



この記事の目次



目的


リンクの記事で小さい表を Pythonocr をしました。
正確に文字を認識出来ました。

罫線有りの数字の抽出結果のため、 1 列で出力されました。

とっても小さい表を Python で ocr - 解析エンジニアの自動化 blog

2 行 6 列の表はもう認識出来るのですが、入力されている同じ文字をランダムな文字に替えて Pythonocr してみます。



プログラム

ソースコード


# -*- 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ゴシック 』で、サイズは 14 ポイントです。

図1 ocr する画像



ocr の結果

図2 は ocr の結果をキャプチャした画像です。

なんと全く文字を認識しませんでした。


図2 ocr の結果



コメント

全然原因が分かりませんでした。
とにかく1文字も認識しないんです。
よく分からないんで、画像の文字を適当に変更して、再度、 ocr します。



以上

とっても小さい表を Python で ocr



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



この記事の目次



目的


リンクの記事で『表の中の文字』と『欄外の文字』 を Pythonocr をしたところ、正しく認識しました。

また、見た目通りに出力されました。

『表の文字』と『欄外の文字』の認識(Python + Tesseract) - 解析エンジニアの自動化 blog

罫線有りと罫線無しの文字が混在する画像は問題なく読み込めたので、 2 行 6 列の表を認識出来るのか Pythonocr してみます。
あと、出力形式にも注目します。



プログラム

ソースコード


# -*- 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ゴシック 』で、サイズは 14 ポイントです。

図1 ocr する画像



ocr の結果

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

正確に文字を認識出来ました。

罫線有りの数字の抽出結果と同じく 1 列で出力されました。


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

正確な認識には文字の大きさが大きく関係しているのではないかと思いました。
今は同じ値を繰り返し表にまとめた画像で ocr しているので、バラバラな値をまとめた表で ocr します。



以上

『表の文字』と『欄外の文字』の認識(Python + Tesseract)



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



この記事の目次



目的


リンクの記事で Pythonocr をしたところ、罫線の中の文字を正しく認識しました。

また、罫線有りと罫線無しで出力形式に違いが出ました。

罫線で囲まれた文字を Python で ocr してみた - 解析エンジニアの自動化 blog

罫線有りと罫線無しの文字が混在する画像を使って、罫線の中の数字と罫線の外にある数字が認識出来るのか Pythonocr してみます。
あと、罫線有りと罫線無しだとどんな出力形式になるのか確かめます。



プログラム

ソースコード


# -*- 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ゴシック 』で、サイズは 14 ポイントです。

図1 ocr する画像



ocr の結果

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

正確に文字を認識出来ました。

罫線無しと罫線有りの数字が混在していると罫線無しの出力のされ方になる事が分かりました。


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

正確に認識する事が出来ました。
次は今回 ocr した罫線有りと罫線無しの数字が混在する画像の罫線無しの文字を罫線で囲むと出力形式がどうなるのかを確認します。



以上

罫線で囲まれた文字を Python で ocr してみた



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



この記事の目次



目的


リンクの記事で Pythonocr をしたところ、正しく文字を認識しました。
といっても、とっても簡単な画像で試したので当たり前といったところです。

絶対に誰でも出来る 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 する画像

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

図1 ocr する画像



ocr の結果

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

正確に文字を認識出来ました。

罫線無しと罫線有りの画像で数字の出力のされ方が変わりました。
罫線無しでは、見た目と同じ配置で出力されたのに、罫線有りの場合は1列で表示されました。


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

認識する事は出来ました。さらに、出力形式については罫線の有り、無しで異なる事が分かりました。

次は罫線有りと罫線無しの数字が混在する画像に替えて試します。



以上

絶対に誰でも出来る Python で ocr 入門



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



この記事の目次



目的


リンクの記事で当たり前の事ですが、 ocr は文字が大きくはっきりしている方が良く認識されます。
表の文字を読み取るのは私にはハイレベル過ぎたようなので、数字が少なく、簡単そうな画像から読めるかを試していくことにしました、

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 する画像

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

図1 ocr する画像



ocr の結果

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

正確に文字を認識出来ました。
画像の見た目そのままです。


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

さすがにこの程度は認識してもらわないと困りますよね。
また、少し難しそうな画像に替えて試していきたいと思います。



以上

ocr するならやっぱり大きい文字の方が良い



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



この記事の目次



目的


リンクの記事で Pythonocr をしたのですが、認識は悪かったです。

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-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ゴシック 』で、サイズは 14 ポイントです。

図1 ocr する画像



ocr の結果

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

数字をたくさん抽出しています。アルファベットに認識してしまう文字が減りましたが、まだ、読み取れていない文字も多く、実用は出来ない認識率でした。


図2 ocr の結果


図3 ocr の結果まとめ表



コメント

表のような配置の数字には適していないみたいでした。
当たり前ですが、文字が大きい方が認識されやすいです。

表の画像はやめて、少ない文字画像からやり直して試していきます。



以上