はじめに
かなり昔に画像の文字認識を行う方法を調べていたことがありました。
その時にOCR(光学的文字認識)を行うサンプルのコードをpython(pyocr)で作成。
最近これが今でも使えるのかを調べたのでその結果と手順をメモ。
とりあえずOCRを使ってみたいという方はソースコードをコピペして使ってみてください。
サンプルコード
前提条件
使用したのはpyocrです。
使用環境はAnacondaがインストールされていることとします
インストール
必要なものは
- tesseract
- pyocr
です。
以下のコマンドをWindowsならばコマンドプロンプト等で、Macならターミナルで入力してインストールします。
pip install tesseract
conda install -c conda-forge tesseract
pip install pyocr
サンプルコード
使用するサンプルコードです
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from PIL import Image
import pyocr
import pyocr.builders
# 画像のファイルパス
img = "00005.jpeg"
ocr_engine = pyocr.get_available_tools()
can-access-tesseract-from
ocr_engine = ocr_engine[0]
# langs = ocr_engine.get_available_languages()
# print(langs)
# OCR対象の画像ファイルを読み込む
img = Image.open(img)
# 画像を読みやすいように加工。
img=img.convert('RGB')
size=img.size
img2=Image.new('RGB',size)
border=110
for x in range(size[0]):
for y in range(size[1]):
r,g,b=img.getpixel((x,y))
if r > border or g > border or b > border:
r = 255
g = 255
b = 255
img2.putpixel((x,y),(r,g,b))
builder = pyocr.builders.TextBuilder(tesseract_layout=3)
texts = ocr_engine.image_to_string(img2, lang="jpn", builder=builder)
print(texts)
9行目の
img = “00005.jpeg”
の箇所はご自身の使用した画像があるファイルパス+ファイル名を指定してください。
詳しいOCRの仕組みは割愛しますが、白黒にして文字認識をしやすいようにプログラムが行われているようです。
結果
今回は3つの画像を試してみました。
0005.jpeg
00007.jpeg
receipt.jpg
それぞれの読み取らせた結果です。
正直文字が多いものは認識率は良くなかったです。
# 00005.jpegの結果
サル
全長50-60cmのオス
目立ったけがや看した
ae
# 00007.jpegの結果
GRg| 日 本 。 花 子 |m61#* 5』 1Hま
Ku
交生| 信和0O1年058』07昌 12345
2024年(信和06征06有01で振
|
、!
| 東京都二代田区霞が関2ー1 2 |
|
|
|
|
|
1
# receipt.jpgの結果
1 〇う CN での
症iaにと
| ら虹二品
| Ccコ くつ(て〇
ィへてつて4
〆N 1
1 FT てこつ
IT 1 ェT ャー1
惑必 。 お
1 LO 1
1 ェT e
Hi! で でN4
1 てd て
ETmiら らら
1 TAN <ぐつ
1 での
1 } で
* 1 1 てくつ
H 1 でNM
|
:
!
|
> 本菜
1 CO (つつ
I COの てくつ
| (の (くつ
! bs
I で4
1 補 4件
! ※※
| 和※
I レマ
I 和
1 シマ
! で
1テー 先
1 っ三完
1一員
1 てうつ 肝 一ヽ
1 ロロ_
| べ
1 ご
| 5中庄
|
i トー
10P
和伸32P
†む 侯ト
内23年02月
較 ※
(
10P)
ださい
し ん誠 く
ーーユー
未日迄有
※導イッの有効期限(
最後に
今回はPythonのpyocrを使った画像の文字認識についてでした。
特にカスタマイズなどはしていませんので、ソースコードを書き換えると精度は上がる可能性があります。
とりあえず使ってみたいという方はソースコードをそのままコピペしてみてください。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございました。