PythonでOCR - Easy OCR
以前に"Tesseract OCR"というのを試しました。
今回は"Easy OCR"というのを試してみます。
まず、GitHubで公開されています。
この中にColabでデモができるようになっているので、日本語について少しいじってみます。
Colabを開いて、ランタイムをGPUにしてから作業を進めます。
!pip install easyocr --no-deps
これでライブラリがインストールされます。次に試しやすいようにいろいろな言語の写真サンプルが用意されていますのでダウンロードします。
!npx degit JaidedAI/EasyOCR/examples -f
これでサンプルの写真もOK! です。日本の写真はどんなものかみてみましょう。
import PIL
from PIL import ImageDraw
im = PIL.Image.open("japanese.jpg")
im
これで確認することができます。「ポイ捨て禁止」の写真が見れるはずです。
次に、日本語と英語を認識できるようにします。
import easyocr
reader = easyocr.Reader(['ja','en'])
'ja'とすれば日本語になるようです。これで"reader"という変数にOCR機能が入りました。
それでは実際に写真をOCRしてみましょう。
bounds = reader.readtext('japanese.jpg')
bounds
とすれば
[([[71, 49], [489, 49], [489, 159], [71, 159]], 'ポ<捨て禁止!', 0.6339447498321533),
([[95, 149], [461, 149], [461, 235], [95, 235]],
'NOLITTER',
0.32493865489959717),
([[80, 232], [475, 232], [475, 288], [80, 288]],
'清潔できれいな港区を',
0.9784268140792847),
([[109, 289], [437, 289], [437, 333], [109, 333]],
'港 区 MINATO CITY',
0.18788912892341614)]
と写真の中の文字が認識され出力されました。
最後に認識している部分がどこかを四角で囲んでみましょう。
def draw_boxes(image, bounds, color='yellow', width=2):
draw = ImageDraw.Draw(image)
for bound in bounds:
p0, p1, p2, p3 = bound[0]
draw.line([*p0, *p1, *p2, *p3, *p0], fill=color, width=width)
return image
draw_boxes(im, bounds)
これで認識部分が囲われました。
最後に自分の写真で試してみましょう。
これをOCRしてみます。
[([[660, 52], [1054, 52], [1054, 125], [660, 125]],
'macOS BigSur',
0.6120596528053284),
([[497, 171], [1271, 171], [1271, 333], [497, 333]],
'Macの体験6',
0.5837302803993225),
([[269, 341], [1494, 341], [1494, 510], [269, 510]],
'そのすべてを新し<6',
0.17161834239959717),
([[99, 563], [1603, 563], [1603, 627], [99, 627]],
'世界で最も先を行<コンピュ一夕0Sのパワ一と美しさを,次のレべルへo',
0.06212698295712471),
([[92, 634], [1616, 634], [1616, 707], [92, 707]],
'macOS BigSurの登場です.洗練された新しいデザインでMacをフルに',
0.047990832477808),
([[107, 707], [1595, 707], [1595, 771], [107, 771]],
'使いこなす.かつてないほど進化したSafariでウェブの世界に飛び込むo',
0.05181032791733742),
([[77, 779], [1633, 779], [1633, 843], [77, 843]],
'マップとメッセ一ジの新機能で毎日を楽しむ6さらに.プライバシ一のための',
0.027769258245825768),
([[105, 851], [1595, 851], [1595, 915], [105, 915]],
'透明性も高まるのであなたの情報をこれまで以上にしっかり守れますo',
0.1571790874004364)]
と出ました。"。"が苦手なようです。認識されているところをみてみます。
しっかりと文字を認識しています。
この記事が気に入ったらサポートをしてみませんか?