【 ocr の認識率を上げる画像処理】画像をキレイにする基本〜膨張処理〜
こんにちは。
仕事の自動化にやりがいと達成感を感じるガッくんです。
この記事の目次
目的
白色を膨張させて輪郭を大きくする膨張処理というものがあって、膨張処理単体で行うことは少ないが、収縮処理と併用されることでノイズ除去や補間をする事が出来る基本処理として有名な処理です。
この処理は白色を対象に処理されるので、前提として、画像が二値化されていること。また、処理したい線が白であることが必要です。
二値化と白黒反転はリンクの記事でまとめています。
この記事では、膨張処理についてまとめます。
【画像処理】 ocr に必要な色々な画像処理を見据えた白黒反転処理 - 解析エンジニアの自動化 blog
プログラム
ソースコード
# -*- coding: utf-8 -*-
###############################################################################
# ライブラリインポート
###############################################################################
import os # os の情報を扱うライブラリ
import pytesseract # tesseract の python 用ライブラリ
from PIL import Image, ImageOps # 画像処理ライブラリ
import numpy as np # データ分析用ライブラリ
import cv2 # OpenCV ライブラリ
# 白黒反転関数
def ColorInverter(img):
img.convert('RGB')
Inv_img = ImageOps.invert(img)
return Inv_img
# 膨張処理関数
def DilationImageByCV2(img):
kernel = np.ones((2, 2))
Dil_img = cv2.dilate(img, kernel, iterations = 1)
return Dil_img
# カレントディレクトリを変更する
os.chdir("C:\\作業\ocr-Preprocessing")
# ファイル名定義
Image000 = '000_Const_Image.jpg'
Image005 = '005_Inv_Const_Image.jpg'
Image010 = '010_Dilation_Const_Image.jpg'
# pytesseract に tesseract のパスを通す
pytesseract.tesseract_cmd='C:\Program Files (x86)\Tesseract-OCR\tesseract.exe'
#################### 画像の読み込み ####################
img = Image.open(Image000)
# 白黒反転
Inv_img = ColorInverter(img)
Inv_img.save(Image005)
#################### 画像の読み込み ####################
img = cv2.imread(Image005, 0)
# 膨張処理
Dilation_img = DilationImageByCV2(img)
cv2.imwrite(Image010, Dilation_img)
コメント
図3 の膨張画像は図2 の二値化・白黒反転画像より、輪郭が大きくなっています。
文字が途切れていたり、はっきりしない時にも使えそうですね。
以上