画像から文字を読み込んでテキスト化する
画像から文字を読み込んでテキスト化する
画像ファイルをpythonで読み込みその画像の文字列を読み取りテキストファイルに起こしてみます。
今回は下の画像ファイルから文字列を読み込んでみます。
画像の文字列を読み込むには「tesseract」というソフトウェアを使用します。
「tesseract」をpythonで使用すには「pyocr」というライブラリが必要です。
それでは早速やってみましょう
参考:
・フリーのOCRソフトTesseract 4 が簡単に使えるようになってました!
・PythonでOCR
インストール
#RHELからtesseractをインストール
yum-config-manager --add-repo https://download.opensuse.org/repositories/home:/Alexander_Pozdnyakov/CentOS_7/
rpm --import https://build.opensuse.org/projects/home:Alexander_Pozdnyakov/public_key
yum update
yum install tesseract
yum install tesseract-langpack-jpn
#必要なライブラリをインストール
pip3 install pillow
pip3 install pyocr
階層
階層は下記の通りです。
「ocr.py」が実行されると「png_dir」に格納されている画像を読み込んでいき「convert_dir」にテキストファイルとして吐き出していきます。
.
├── convert_dir
│ ├── test.txt
│ └── youtube.txt
├── ocr.py
└── png_dir
├── test.png
└── youtube.png
プログラム
プログラムは下記の通りです。
# coding: utf-8
import sys
import pyocr
import os
from PIL import Image
tools = pyocr.get_available_tools()
assert(len(tools) != 0)
tool = tools[0]
def get_file_names():
file_names = os.listdir('./png_dir')
return file_names
def convert_image_to_string(file_names):
for file_name in file_names:
txt = tool.image_to_string(
Image.open('./png_dir/'+file_name),
lang = 'jpn',
builder = pyocr.builders.TextBuilder()
)
file_name = file_name.replace('.png', '.txt')
with open('./convert_dir/'+file_name, 'wb') as file:
file.write(txt.encode('utf-8'))
file_names = get_file_names()
convert_image_to_string(file_names)
実行結果
海原雄山 1 日前
100歩譲って給付金は支給しなくていいからしばらくの間は給与から所得税と厚生年金の引き去
りを止めて欲しい。あとは消費税もしばらく0%(にすればかなり違う。
追記
文字読み取りの制度を上げている記事がありました。
PythonでOCR
ディスカッション
コメント一覧
まだ、コメントがありません